Byla představena verze DBMS DuckDB 0.10.0, která kombinuje vlastnosti SQLite, jako je kompaktnost, možnost připojení ve formě vestavěné knihovny, uložení databáze v jednom souboru a uživatelsky přívětivé CLI rozhraní, se prostředky a optimalizacemi pro provádění analytických dotazů pokrývajících podstatnou část uložených dat, například provádějící agregaci veškerého obsahu tabulek nebo slučování několika velkých tabulek. Kód projektu je distribuován pod licencí MIT. Vývoj je zatím v rané fázi experimentálního vydání, protože formát úložiště zatím není stabilizován a mění se z verze na verzi.
DuckDB poskytuje rozšířený dialekt jazyka SQL, zahrnující další možnosti pro zpracování velmi složitých a časově náročných dotazů. Podporuje použití složených typů (pole, struktury, unie) a možnost provádění libovolných a vložených korelovaných poddotazů. Podporuje současné provádění několika dotazů, provádění dotazů přímo z souborů ve formátu CSV a Parquet. Je k dispozici možnost importu z DBMS PostgreSQL.
Kromě SQLite shell kódu projekt využívá parser vyčleněný do samostatné knihovny z PostgreSQL, komponentu Date Math z MonetDB, vlastní implementaci oknových funkcí (na základě algoritmu Segment Tree Aggregation), zpracovatel regulárních výrazů založený na knihovně RE2, vlastní optimalizátor dotazů, MVCC mechanismus pro správu souběžného vykonávání úloh (Multi-Version Concurrency Control) a také vektorový engine vykonávání dotazů založený na algoritmu Hyper-Pipelining Query Execution, který umožňuje zpracovávat velké množství hodnot v jednom operaci.
Mezi změnami v novém vydání:
- Výrazně byla zvýšena výkonnost analýzy dat ve formátu CSV. Například čtení CSV souboru s 11 miliony řádků se v nové verzi zkrátilo z 2,6 sekundy na 1,15 sekundy, a provádění operace „SELECT COUNT(*)“ nad CSV souborem z 1,8 sekundy na 0,3 sekundy.
- Byla přidána podpora polí pevné velikosti, která se podobají seznamům obsahujícím pevný počet prvků („CREATE TABLE vectors(v DOUBLE[3]);”).
- Byla přidána podpora připojení k DBMS MySQL, PostgreSQL a SQLite, což umožňuje načítání dat do DuckDB z externích DBMS a jejich přesun mezi různými systémy. Přístup k externím DB se provádí pomocí typových tabulek. ATTACH ‘postgres:dbname=postgresscanner’ AS postgres; SELECT title, release_year, length FROM postgres.film LIMIT 5;
- Byla přidána podpora výrazu „COMMENT ON“ pro uchování komentáře o objektu v databázi.
- Byla přidána podpora výrazu „COPY FROM DATABASE“ pro kopírování veškerého obsahu z jedné databáze do druhé.
- Byla přidána podpora modifikátoru „ALL“ ve výrazech EXCEPT a INTERSECT.
- Byl implementován typ
Zdroj: opennet.ru
