Po šiestich rokoch vývoja bol predstavený vydanie DBMS DuckDB 1.0, ktorý je prezentovaný ako alternatíva k SQLite pre analytické dotazy. DuckDB kombinuje vlastnosti SQLite, ako sú kompaktnosť, možnosť pripojenia vo forme zabudovanej knižnice, uloženie databázy v jednom súbore a intuitívne rozhranie príkazového riadku, s prostriedkami a optimalizáciami na vykonávanie analytických dotazov, ktoré pokrývajú značnú časť uložených údajov, napríklad vykonávajúce agregáciu všetkých obsahu tabuliek alebo zlúčenie niekoľkých veľkých tabuliek. Kód projektu je napísaný v jazyku C++ a šíri sa pod licenciou MIT.
Verzia 1.0 je označená ako prvé stabilné vydanie projektu, pričom sa pri jej príprave kládol dôraz na zvýšenie stability, a nie na rozširovanie funkčnosti. V novej verzii je taktiež stanovená fixácia formátu ukladania údajov, pre ktorý sa od posledného vydania zabezpečuje spätná kompatibilita. V nasledujúcich vydaniach sa vývojári plánujú opatrnejšie venovať pridávaniu nových funkcií a zabezpečiť zachovanie kompatibility medzi vydaniami, ako aj stabilizáciu dialektu SQL a C API. Ak bude v budúcnosti potrebné zmeniť semantiku SQL, vývojári vopred zverejnia upozornenie na nadchádzajúce zmeny a poskytnú obchádzkové riešenia na zachovanie funkčnosti existujúceho kódu.
DuckDB podporuje rozšírený dialekt jazyka SQL, ktorý obsahuje dodatočné možnosti na spracovanie veľmi zložitých a dlhodobých dotazov. Napríklad je možné používať zložené typy (polia, štruktúry, zlučenia), ako aj vykonávať ľubovoľné a vnorené korelované poddotazy. Podporuje sa súbežné vykonávanie viacerých dotazov, vykonávanie dotazov priamo z súborov vo formáte CSV a Parquet. Je dostupná podpora importu z DBMS PostgreSQL.
Okrem kódu shellu z SQLite projekt využíva vyčlenený parser z PostgreSQL, komponent Date Math z MonetDB, vlastnú implementáciu oknových funkcií (na základe algoritmu Segment Tree Aggregation), spracovateľ regulárnych výrazov na základe knižnice RE2, vlastný optimalizátor dopytov, MVCC mechanizmus správy súčasného vykonávania úloh (Multi-Version Concurrency Control) a tiež vektorový vykonávací motor dopytov na základe algoritmu Hyper-Pipelining Query Execution, ktorý umožňuje spracovávať veľké množstvá hodnôt v jednej operácii.
Zdroj: opennet.ru
