Predstavuje sa vydanie DuckDB 0.10.0 DBMS, ktoré kombinuje také vlastnosti SQLite, ako je kompaktnosť, možnosť pripojenia vo forme vstavanej knižnice, ukladanie databázy do jedného súboru a pohodlné rozhranie CLI s nástrojmi a optimalizáciami na vykonávanie analytické dotazy pokrývajúce významnú časť uložených údajov, napríklad agregujú celý obsah tabuliek alebo spájajú niekoľko veľkých tabuliek. Kód projektu je distribuovaný pod licenciou MIT. Vývoj je stále v štádiu formovania experimentálnych vydaní, keďže formát úložiska ešte nie je stabilizovaný a mení sa z verzie na verziu.
DuckDB poskytuje pokročilý SQL dialekt, ktorý obsahuje ďalšie možnosti na spracovanie veľmi zložitých a časovo náročných dopytov. Podporuje sa použitie komplexných typov (polia, štruktúry, zväzky) a schopnosť vykonávať ľubovoľné a vnorené korelujúce poddotazy. Podporuje spustenie viacerých dotazov súčasne, spúšťanie dotazov priamo zo súborov CSV a Parquet. Je možné importovať z PostgreSQL DBMS.
Okrem shell kódu z SQLite projekt využíva parser z PostgreSQL v samostatnej knižnici, komponent Date Math z MonetDB, vlastnú implementáciu funkcií okna (založený na algoritme Segment Tree Aggregation), procesor regulárnych výrazov založený na knižnica RE2, vlastný optimalizátor dotazov a riadiaci mechanizmus MVCC simultánne vykonávanie úloh (Multi-Version Concurrency Control), ako aj vektorizovaný nástroj na vykonávanie dotazov založený na algoritme Hyper-Pipelining Query Execution, ktorý umožňuje veľké množiny hodnôt spracovať naraz v jednej operácii.
Medzi zmeny v novom vydaní:
- Výkon analýzy údajov vo formáte CSV sa výrazne zlepšil. Napríklad čítanie súboru CSV s 11 miliónmi riadkov v novej verzii sa skrátilo z 2.6 sekundy. až 1.15 sekundy a vykonaním operácie „SELECT COUNT(*)“ nad súborom CSV od 1.8 sekundy. do 0.3 sek.
- Pridaná podpora pre polia s pevnou veľkosťou, ktoré sa podobajú zoznamom obsahujúcim pevný počet prvkov (“CREATE TABLE vectors(v DOUBLE[3]);”).
- Pridaná podpora pre pripojenie k MySQL, PostgreSQL a SQLite DBMS, ktorá umožňuje načítať dáta z externých DBMS do DuckDB a presúvať ich medzi rôznymi systémami. Externé databázy sú prístupné pomocou štandardných tabuliek. PRIPOJTE 'postgres:dbname=postgresscanner' AS postgres; SELECT názov, rok_vydania, dĺžka FROM postgres.film LIMIT 5;
- Pridaná podpora pre výraz „COMMENT ON“ na uloženie komentára o objekte v databáze.
- Pridaná podpora pre výraz „COPY FROM DATABASE“ na kopírovanie všetkého obsahu z jednej databázy do druhej.
- Pridaná podpora pre modifikátor "ALL" vo výrazoch EXCEPT a INTERSECT.
- Implementovaný typ »
Zdroj: opennet.ru
