Byla vydána beta verze Ubuntu 25.10 s kódovým názvem Questing Quokka. Přehled novinek v poznámkách k vydání. Dle plánu by Ubuntu 25.10 mělo vyjít 9. října 2025.
Bola vydaná nová verzia 4.13 security platformy Wazuh. Prináša nový IT hygiene dashboard, hot reload dekodérov a pravidiel. Podrobnosti v poznámkách k vydaniu.
Americký výrobce čipů Nvidia investuje pět miliard dolarů (přes 100 miliard Kč) do konkurenta Intel, který se v poslední době potýká s vážnými problémy. Firmy to včera oznámily ve společné tiskové zprávě. Dohoda o investici zahrnuje spolupráci při vývoji čipů pro osobní počítače a datová centra. Akcie společnosti Intel na zprávu reagovaly výrazným růstem.
Dlouholetý balíčkář KDE Jonathan Riddell končí. Jeho práci na KDE neon financovala firma Blue Systems, která ale končí (Clemens Tönnies, Jr., dědic jatek Tönnies Holding, ji už nebude sponzorovat), někteří vývojáři KDE se přesunuli k nově založené firmě Techpaladin. Pro Riddella se již nenašlo místo. Následovala debata o organizaci těchto firem, které zahraniční vývojáře nezaměstnávají, nýbrž najímají jako kontraktory (s příslušnými důsledky z pohledu pracovního práva).
V Amsterdamu probíhá Blender Conference 2025. Videozáznamy přednášek lze zhlédnout na YouTube. V úvodní keynote Ton Roosendaal oznámil, že k 1. lednu 2026 skončí jako chairman a CEO Blender Foundation. Tyto role převezme současný COO Blender Foundation Francesco Siddi.
The Document Foundation, organizace zastřešující projekt LibreOffice a další aktivity, zveřejnila výroční zprávu za rok 2024.
Byla vydána nová stabilní verze 7.6 webového prohlížeče Vivaldi (Wikipedie). Postavena je na Chromiu 140. Přehled novinek i s náhledy v příspěvku na blogu.
Byla vydána verze 1.90.0 programovacího jazyka Rust (Wikipedie). Podrobnosti v poznámkách k vydání. Vyzkoušet Rust lze například na stránce Rust by Example.
GNUnet (Wikipedie) byl vydán v nové major verzi 0.25.0. Jedná se o framework pro decentralizované peer-to-peer síťování, na kterém je postavena řada aplikací.
Byla vydána nová major verze 7.0 živé linuxové distribuce Tails (The Amnesic Incognito Live System), jež klade důraz na ochranu soukromí uživatelů a anonymitu. Nově je postavena je na Debianu 13 (Trixie) a GNOME 48 (Bengaluru). Další novinky v příslušném seznamu.
centrální tabulka: uzivatel | kategorie -------------------- jarda | kat. ... tabulka názvů tabulek: tabulka_nazev ------------- soubor1 ... příklad vstupního souboru: uzivatel(string), kvota_limit(int32), certifikat(bin) jarda2, 100, BINARNI_DATA takový soubor se převede do tabulky "nazev_souboru": uzivatel | kvota_limit | certifikat ----------------------------------- jarda2 | 100 | BINARNI_DATA s tím, že se konvertují datové typy (string na varchar, int32 na int, bin na blob) Při výpisu uživatelů pak není problém zobrazit všechny lidi, který mají kvota_limit XY a jsou v kategorii KATEGORIE. Vlastně je to velice rychlé, protože se provede jednoduchá podmínka where na left joinech tabulek.Teď co mám za problém. Ačkoliv je tento návrh rychlý a efektivní, tak se mi vůbec nelíbí zasahovat dynamicky(i když jen občas cca 1x ročně) do struktury db. Proto hledám jiný způsob ukládání dat. Napadlo mě přidat centrální tabulce sloupec a všechno mít v XML struktuře. Jak je na tom třeba mysql či postgresql s hledáním v takové struktuře? Nebo neměli byste lepší nápad na návrh databáze?
uzivatel | kategorie | atributy ------------------------------------ jarda | kat. | XML_STRUKTURATěch řádek je tam teď cca 500 000 v každé spojované tabulce a přibývají další (jsou to takové speciální fiktivní uživatelské účty). V současnosti jsem schopen po spojení 5 takových tabulek vyhledat data (samozřejmě indexovaná) do cca 2 sekund. S manuálním vyhledáváním (pomocí aplikace) v XML by to trvalo déle, proto mě zajímá něco co přímo podporuje databáze, ideální by bylo kdyby zvládla hledat v XML, což ale asi nepůjde? Jakou jinou strukturu bych mohl použít pro ukládání dat, aby hledání bylo stejně rychlé jako doposud?
soubor1 | ------------------------ | | atribut1 atributN | | | hodnota1 hodnota1 hodnota2Takže by to bylo víceúrovňové, uživatel má vždy N vlastností (atributů) a každá vlastnost může mít několik hodnot.
uzivatel | kategorie | atributy ------------------------------------ jarda | kat. | XML_STRUKTURADá se s tím pracovat jak pomocí SQL, tak pomocí XQuery pro XML strukturu. IBM DB2 v9.7 Express-C je na stránkách IBM volně stažitelná a použitelná i pro komerční účely. Jediné omezení jsou tam 2 CPU a 2 GB RAM. Velikost databáze omezená není. Pokud ale vyžaduješ MySQL nebo Postgres, tak: http://wiki.postgresql.org/wiki/XML_Support - taky koukám, že umí XQuery http://dev.mysql.com/tech-resources/articles/xml-in-mysql5.1-6.0.html - tam je to o něco horší
Skupina 1:N Uživatel 1:N Hodnota atributu (Int) N:1 Název atributu 1:N Hodnota atributu (Varchar) N:1 1:N Hodnota atributu (Datetime) N:1 ....Vyhlednávání rychlé, indexované, struktura univerzální, ACID. Je něco, co to neumí? PS: Pokud se něco dělá podle prvního písmene skupiny, je název skupiny zřejmě složený datový typ, takže bych ho rozdělil.
Je něco, co to neumí?Třeba řazení např. pokud budu chtít řadit podle atributu1 vzestupně a zároveň podle atributu2 sestupně (SQL = order by atribut1, atribut2 desc). Také to neumí datové typy (leda že bych měl tolik sloupců kolik existuje datových typů a hodnotu sypal do toho správného).
SELECT * uzivatel u
INNER JOIN atribut a1 ON (u.id = a1.uzivatel_id AND a1.nazev_id = :nazev1)
INNER JOIN atribut a2 ON (u.id = a2.uzivatel_id AND a2.nazev_id = :nazev1)
ORDER BY a1.hodnota, a2.hodnota desc
Jo, nenadefinuješ složený index, ale jednoduchej index atribut(nazev_id, hodnota) to
použije, tak pokud není první řazení podle nějakýho hodně neselektivního kritéria,
tak to je dostatečný.
Na ty nejpoužívanější pak můžeš použít materializovanej view, popř. si nejpoužívanější
vlastnosti sypat rovnou k uživateli. Furt je to rychlejší než cokoli, co dostaneš přes
XPath nebo XQuery.
Různý typy můžeš řešit více tabulkama či více sloupci, těch typů zas tolik není
(int, float, datum, string).
Nechce se mi to řešit aplikačně, lze toto řešit i na databázové úrovni (tak, že pro každý nalezený řádek vypíše z hodnota1-hodnotaN vždy tu, která není NULL)?Hledáš sql funkci
COAELSCE
COALESCE
COALESCE by IMHO bylo zbytečně pomalý - navíc: jak poznáš, podle kterýho typu řadit jako první?
Osobně myslím, že budeš muset někde určit, jakej typ mají daný data. Spoléhat na autodetekci se mi nezdá úplně dobrej nápad. V tu chvíli je podle mě nejlepší nespoléhat na automatiku, ale prostě si udělat konfigurák, kam předepíšeš tendle sloupec je INTEGER, tendle je DATETIME atd.... Sloupce, který v konfiguráku nebudou se pak budou porovnávat jako řetězce.
Výhoda toho je, že pokud budeš potřebovat nějaký spešl řazení, který DB nativně nenabízí, tak se to velmi snadno doimplementuje apod. Jako bonus tam i můžeš snadno implementovat sloupce, který budou přímo v tabulce uživatele a podobný vychytávky. Další výhoda bude jednoduchá "změna typu" danýho sloupce atd...
COALESCE by IMHO bylo zbytečně pomalýPomalejší než index? Určitě. Pomalejší než nějaká hrůza zahrnující xml a fultext? Nevím nevím.
A když to určuje pro zápis, tak proč by to neurčil i pro čtení?To já nevím, já jen odpověděl na dotaz jak najít nenullový sloupec. Ale v původním dotazu nešlo o to jak překopávání schématu přizpůsobit aplikaci, ale jak se strojovému překopávání tabulek vyhnout úplně. Udělat ze sloupců vazbu řádky je IMO celkem dobrý způsob jak to udělat, rozhodně lepší než nějaká hrůznost s xml a fulltextem.
Nastuduj si EAV model, mohlo by to byt to co hledas http://en.wikipedia.org/wiki/Entity-attribute-value_model
Pripadne pokud chces pouzit MySQL + XML http://dev.mysql.com/doc/refman/5.1/en/xml-functions.html
select users.uid, users.name, eav_blob.value, eav_date.value, eav_datetime.value, eav_float.value, eav_int.value, eav_string.value, eav_time.value from users left join eav_blob on (users.uid = eav_blob.uid) left join eav_date on (users.uid = eav_date.uid) left join eav_datetime on (users.uid = eav_datetime.uid) left join eav_float on (users.uid = eav_float.uid) left join eav_int on (users.uid = eav_int.uid) left join eav_string on (users.uid = eav_string.uid) left join eav_time on (users.uid = eav_time.uid) inner join attributes on (attributes.aid = eav_blob.aid OR attributes.aid = eav_date.aid OR attributes.aid = eav_datetime.aid OR attributes.aid = eav_float.aid OR attributes.aid = eav_int.aid OR attributes.aid = eav_string.aid OR attributes.aid = eav_time.aid)zabere celou sekundu a to tam nemám skoro žádná data a zatím jsem ani nepoužíval eav entity.
Tiskni
Sdílej: