ĂshtĂ« publikuar versioni SGBD DuckDB 1.4.0, i orientuar pĂ«r ekzekutimin e kĂ«rkesave analitike dhe konceptualisht i ngjashĂ«m me SQLite. DuckDB kombinon pronat e SQLite, si kompaktĂ«sia, lidhja si njĂ« bibliotekĂ« e integruar, ruajtja e DB nĂ« njĂ« skedar dhe ndĂ«rfaqen CLI, me mundĂ«sitĂ« dhe optimizimet pĂ«r ekzekutimin e kĂ«rkesave analitike qĂ« mbulojnĂ« njĂ« pjesĂ« tĂ« madhe tĂ« tĂ« dhĂ«nave tĂ« ruajtura, pĂ«r shembull, duke kryer agregimin e gjithĂ« pĂ«rmbajtjes sĂ« tavollave ose bashkimin e disa tavollave tĂ« mĂ«dha. Kodi i projektit Ă«shtĂ« shkruar nĂ« gjuhĂ«n C++ dhe shpĂ«rndahet nĂ«n licencĂ«n MIT.
DuckDB ofron njĂ« dialekt tĂ« zgjeruar tĂ« gjuhĂ«s SQL, i cili pĂ«rfshin mundĂ«si shtesĂ« pĂ«r pĂ«rpunimin e kĂ«rkesave shumĂ« komplekse dhe afatgjata. ĂshtĂ« e mundur tĂ« pĂ«rdoren tipe tĂ« komplikuara (array, struktura, bashkime), si dhe tĂ« ekzekutohen nĂ«nkĂ«rkesa tĂ« rastĂ«sishme dhe tĂ« ngulitura. MbĂ«shtetet ekzekutimi paralel i kĂ«rkesave tĂ« shumta, ekzekutimi i kĂ«rkesave drejtpĂ«rdrejt nga skedarĂ«t nĂ« formatet CSV dhe Parquet. MbĂ«shtetja e importit nga DBMS PostgreSQL Ă«shtĂ« gjithashtu e disponueshme.
Projekti përdor një shell nga SQLite, parser nga PostgreSQL, komponentin Date Math nga MonetDB, implementimin e tij të funksioneve dritare (baze në algoritmin e Segment Tree Aggregation), një përpunues regex-i të bazuar në bibliotekën RE2, optimizatorë të veçantë pyetjesh, mekanizmin MVCC për menaxhimin e konkurencës (Kontrolli i Konkurrencës me Versione të Shumta), si dhe një motor të vectorizuar për ekzekutimin e pyetjeve të bazuar në algoritmin Hyper-Pipelining Query Execution, që lejon përpunimin e grupeve të mëdha të vlerave në një operacion të vetëm.
Në këtë version të ri:
- Shtuar mbĂ«shtetje pĂ«r ruajtjen e skedarĂ«ve tĂ« DB nĂ« formĂ« tĂ« enkriptuar. PĂ«r enkriptimin pĂ«rdoret algoritmi AES-256 nĂ« modin GCM. Enkriptohet jo vetĂ«m skedari kryesor me tĂ« dhĂ«na, por gjithashtu log-et WAL dhe skedarĂ«t pĂ«rkohĂ«sorĂ«. ĂelĂ«sat pĂ«r enkriptimin e DB caktohen me komandĂ«n ATTACH pĂ«rmes parametrin ENCRYPTION_KEY. ATTACH âencrypted.dbâ AS enc_db (ENCRYPTION_KEY âquack_quackâ);
- Shto është shtuar mbështetje për komandën «MERGE INTO», e cila mund të përdoret si një alternativë ndaj shprehjes «INSERT ⊠ON CONFLICT», e cila nuk kërkon një çelës primar dhe funksionon me kushte të rastësishme të shkrirjes. Komanda «MERGE INTO» lejon krijimin e shprehjeve SQL kushtore që kombinojnë në një shprehje operacionet INSERT, UPDATE dhe DELETE. Për shembull, duke përdorur MERGE, mund të organizoni bashkimin e dy tabelave, duke futur regjistrimet që mungojnë dhe duke përditësuar ato ekzistuese. WITH deletes(item_id, delete_threshold) AS (VALUES (10, 3000)) MERGE INTO Stock USING deletes USING (item_id) WHEN MATCHED AND balance < delete_threshold THEN DELETE RETURNING merge_action, *;
- Përveç kësaj, për të punuar me tabelat në formatin Apache Iceberg, është shtuar mbështetje për operacionet e shkrimit (më parë suportohej vetëm leximi), e cila lejon transferimin e të dhënave nga Iceberg në DuckDB dhe anasjelltas.
- Në klientin e komandës së linjës është shtuar një tregues progresi për përfundimin e operacionit me parashikimin e kohës së mbetur deri në përfundim.
- ĂshtĂ« shtuar funksioni dritare «FILL», i cili mund tĂ« pĂ«rdoret pĂ«r interpolimin e vlerave tĂ« humbura nĂ« dritare tĂ« renditur. FROM (VALUES (1, 1), (2, NULL), (3, 42)) t(c1, c2) SELECT fill(c2) OVER (ORDER BY c1) f; 1 21 42
- ĂshtĂ« realizuar shtesa Teradata Connector pĂ«r lidhjen me bazat e tĂ« dhĂ«nave Teradata. Kjo shtesĂ« lejon manipilimin e tabelave, ekzekutimin e pyetjeve dhe nisjen e komandave SQL direkt nĂ« Teradata, duke pĂ«rdorur DuckDB.
- ĂshtĂ« shtuar mbĂ«shtetje pĂ«r ruajtjen e gjendjes (checkpoint) tĂ« tabelave tĂ« ruajtura nĂ« memorie, e cila mundĂ«son mbĂ«shtetje pĂ«r kompresimin. Gjithashtu, gjatĂ« ruajtjes sĂ« gjendjes, krijohet pastrimi i rreshtave tĂ« fshirĂ« dhe lirimi i hapĂ«sirĂ«s pas operacioneve tĂ« fshirjes. ATTACH â:memory:â AS memory_compressed (COMPRESS);
- Janë propozuar disa optimizime të performancës: Implementimi i renditjes është transferuar në përdorimin e algoritmit të bashkimit të shumëfishtë (k-way merge sort), duke reduktuar lëvizjen e të dhënave. Shprehjet e tabelave të përgjithshme (Common Table Expression, CTE) tani materializohen si të parazgjedhura.
Burimi: opennet.ru
