Nakon šest godina razvoja, predstavljena je verzija DBMS-a DuckDB 1.0, koja se pozicionira kao alternativa SQLite za analitičke upite. DuckDB kombinuje karakteristike SQLite-a, poput kompaktnosti, mogućnosti povezivanja u obliku biblioteke, pohrane baze podataka u jednoj datoteci i jednostavnog CLI sučelja, sa alatima i optimizacijama za izvršavanje analitičkih upita koji pokrivaju značajan deo pohranjenih podataka, kao što su agregacije cjelokupnog sadržaja tabela ili spajanje više velikih tabela. Kod projekta je napisan na C++ jeziku i distribuira se pod MIT licencom.
Verzija 1.0 označena je kao prvo stabilno izdanje projekta, pri čemu je glavni fokus bio na povećanju stabilnosti, a ne na proširenju funkcionalnosti. U novoj verziji takođe je fiksiran format pohrane podataka, za koji se od prošlog izdanja osigurava unazad kompatibilnost. U budućim izdanjima, programeri planiraju pažljivije dodavanje novih mogućnosti i brigu o očuvanju kompatibilnosti između izdanja, kao i stabilizaciju SQL dijalekta i C API-ja. Ako se u budućnosti zatreba promjena semantike SQL-a, programeri će unaprijed objaviti upozorenje o predstojećim promenama i pružiti zaobilaženja za očuvanje funkcionalnosti postojećeg koda.
DuckDB podržava prošireni dijalekat SQL jezika, uključujući dodatne mogućnosti za obradu vrlo složenih i dugotrajnih upita. Na primer, omogućeno je korišćenje složenih tipova (nizovi, strukture, unije), kao i izvršavanje proizvoljnih i ugniježdenih koreliranih podupita. Podržano je istovremeno izvršavanje više upita, izvršavanje upita direktno iz datoteka u CSV i Parquet formatu. Dostupna je podrška za uvoz iz PostgreSQL DBMS-a.
Osim koda ljuske iz SQLite-a, projekt koristi parser izdvojen u posebnoj biblioteci iz PostgreSQL-a, komponentu Date Math iz MonetDB-a, vlastitu implementaciju prozorskih funkcija (na temelju algoritma Segment Tree Aggregation), obrada regularnih izraza temeljenih na biblioteci RE2, vlastiti optimizator upita, MVCC mehanizam upravljanja istovremenim izvršavanjem zadataka (Multi-Version Concurrency Control), kao i vektorizirani motor za izvođenje upita na temelju algoritma Hyper-Pipelining Query Execution, koji omogućuje u jednoj operaciji da istovremeno obradi velike skupove vrijednosti.
Izvor: opennet.ru
