Anaa na karon ang DuckDB 0.6.0. Gihiusa niini ang gamay nga gidak-on sa SQLite, suporta sa embeddable library, single-file database storage, ug usa ka user-friendly nga CLI interface. Nagtanyag usab kini og mga himan ug pag-optimize para sa pagpadagan sa mga analytical query nga naglangkob sa usa ka dakong bahin sa gitipigan nga datos, sama sa pag-aggregate sa tibuok nga sulod sa mga lamesa o paghiusa sa daghang dagkong mga lamesa. Ang code sa proyekto gilisensyahan ubos sa lisensya sa MIT. Ang pag-develop anaa pa sa experimental release phase, tungod kay ang format sa pagtipig dili pa lig-on ug managlahi sa matag bersyon.
Ang DuckDB naghatag og dugang nga SQL dialect, lakip na ang mga abanteng kapabilidad para sa pagproseso sa mga komplikado ug dugay nang nagdagan nga mga query. Gisuportahan niini ang mga komplikadong tipo (array, structure, unions) ug arbitrary ug nested correlated subqueries. Gisuportahan niini ang daghang dungan nga mga query, ingon man ang direkta nga pag-query gikan sa CSV ug Parquet files. Gisuportahan usab ang import gikan sa PostgreSQL.
Gawas pa sa SQLite shell code, ang proyekto naggamit ug PostgreSQL parser sa usa ka lahi nga librarya, usa ka Date Math component gikan sa MonetDB, ang kaugalingong implementasyon sa mga window function (base sa Segment Tree Aggregation algorithm), usa ka regular expression processor base sa RE2 library, ang kaugalingong query optimizer, usa ka Multi-Version Concurrency Control (MVCC) nga mekanismo para sa pagdumala sa dungan nga pagpatuman sa buluhaton, ug usa ka vectorized query execution engine base sa Hyper-Pipelining Query Execution algorithm, nga nagtugot sa dungan nga pagproseso sa dagkong mga set sa mga kantidad sa usa ka operasyon.
Lakip sa mga pagbag-o sa bag-ong pagpagawas:
- Nagpadayon ang trabaho sa pagpaayo sa format sa pagtipig. Usa ka optimistikong disk write mode ang gipatuman. Kini nga mode nag-compress ug nag-stream sa datos ngadto sa database file kung nagkarga og dako nga data set sa usa ka transaksyon, nga dili maghulat nga makompleto ang transaksyon gamit ang usa ka COMMIT command. Kung ang COMMIT command gi-isyu, ang datos gisulat na sa disk, ug kung ang usa ka ROLLBACK command gipatuman, kini gilabay. Kaniadto, ang datos una nga hingpit nga gitipigan sa memorya ug dayon gisulat sa disk sa pag-commit.
- Gidugang ang suporta para sa parallel data loading ngadto sa indibidwal nga mga lamesa, nga nakapauswag pag-ayo sa katulin sa loading sa mga multi-core system. Pananglitan, sa miaging release, ang pagkarga sa database nga adunay 150 milyon nga mga laray sa usa ka 10-core CPU mikabat ug 91 segundos, samtang sa bag-ong bersyon, kini nga operasyon nahuman sulod sa 17 segundos. Duha ka parallel loading mode ang magamit: nga adunay ug wala magpreserbar sa han-ay sa mga rekord.
- Ang FSST (Fast Static Symbol Table) algorithm gigamit para sa data compression, nga nagtugot sa data nga ma-pack sulod sa mga string gamit ang usa ka komon nga diksyonaryo sa tipikal nga mga pares. Ang paggamit niining bag-ong algorithm nakapakunhod sa gidak-on sa test database gikan sa 761 MB ngadto sa 251 MB.
- Ang mga algorithm sa Chimp ug Patas gisugyot alang sa pag-compress sa mga floating-point number (DOUBLE ug FLOAT). Kung itandi sa gigamit kaniadto nga algorithm sa Gorillas, ang Chimp naghatag og mas taas nga lebel sa compression ug mas paspas nga decompression. Ang Patas naulahi sa Chimp sa compression, apan mas paspas kini sa decompression, halos parehas sa pagbasa sa wala ma-compress nga data.
- Usa ka eksperimental nga bahin para sa pagkarga sa datos gikan sa mga CSV file sa daghang parallel threads (SET experimental_parallel_csv=true) ang gidugang. Kini nga bahin nakapamenos pag-ayo sa oras sa pagkarga para sa dagkong mga CSV file. Pananglitan, sa dihang gi-enable kini nga bahin, ang oras sa pagkarga para sa 720 MB nga CSV file miubos gikan sa 3.5 ngadto sa 0.6 segundos.
- Gipatuman na ang parallel nga pagpatuman sa mga operasyon sa paghimo ug pagdumala sa indeks. Pananglitan, ang operasyon sa CREATE INDEX para sa usa ka kolum nga adunay 16 milyon nga mga rekord gipakunhod gikan sa 5.92 ngadto sa 1.38 segundos.
- Gihatag ang paralelisasyon sa mga operasyon sa aggregation sa mga pangutana nga adunay ekspresyon nga "COUNT(DISTINCT col)".
- Gisuportahan na karon sa SQL ang UNION type, nga nagtugot sa pag-bind sa daghang mga type ngadto sa usa ka elemento (pananglitan, "UNION(num INT, error VARCHAR))").
- Ang SQL nagtugot kanimo sa paghimo og mga pangutana nga magsugod sa pulong nga "FROM" imbes nga "SELECT." Sa kini nga kaso, ang pangutana gituohan nga magsugod sa "SELECT *."
- Gisuportahan na karon sa SQL ang ekspresyon nga "COLUMNS", nga nagtugot kanimo sa paghimo og operasyon sa daghang mga kolum nga dili doblehon ang ekspresyon. Pananglitan, ang "SELECT MIN(COLUMNS(*)) from obs;" mopatuman sa MIN function para sa matag kolum sa obs table, samtang ang "SELECT COLUMNS('val[0-9]+') from obs;" mopatuman sa MIN function para sa mga kolum nga adunay mga ngalan nga gilangkoban sa "val" ug mga digit.
- Gidugang ang suporta para sa mga operasyon sa lista, sama sa "SELECT [x + 1 para sa x sa [1, 2, 3]] AS l;".
- Na-optimize na ang konsumo sa memorya. Kasagaran, naa kini sa plataporma. Linux Ang jemalloc library gigamit para sa pagdumala sa memorya. Ang performance sa mga operasyon sa hash merging ubos sa limitado nga mga kondisyon sa memorya miuswag pag-ayo.
- Ang command-line interface karon naglakip na sa usa ka ".mode duckbox" output mode, nga nagtangtang sa mga middle column base sa gilapdon sa terminal window (angay alang sa dali nga pagtan-aw sa mga resulta sa mga pangutana nga adunay daghang mga column, sama sa "SELECT * FROM tbl," nga kasagaran mokabat sa daghang mga linya). Ang parameter nga ".maxrows X" magamit usab aron limitahan ang gidaghanon sa mga output row.
- Ang CLI naghatag og context-aware autocompletion sa input (mga keyword, ngalan sa table, function, ngalan sa column, ug ngalan sa file nakompleto).
- Ang CLI gi-enable pinaagi sa default aron ipakita ang usa ka query progress indicator.
Source: opennet.ru
