ĂshtĂ« publikuar versioni 1.4.0 i SGBD DuckDB, i orientuar pĂ«r ekzekutimin e pyetjeve analitike dhe qĂ« nga ana konceptuale i ngjan SQLite. DuckDB kombinon veçori tĂ« SQLite, si kompaktĂ«sia, lidhja nĂ« formĂ«n e njĂ« biblioteke tĂ« integruar, ruajtja e DB nĂ« njĂ« skedar tĂ« vetĂ«m dhe ndĂ«rfaqja CLI, me mundĂ«si dhe optimizime pĂ«r ekzekutimin e pyetjeve analitike qĂ« pĂ«rfshijnĂ« njĂ« pjesĂ« tĂ« konsiderueshme tĂ« tĂ« dhĂ«nave tĂ« ruajtura, pĂ«r shembull agregimin e gjithĂ« pĂ«rmbajtjes sĂ« tabelave ose bashkimin e disa tabelave tĂ« mĂ«dha. Kodi i projektit Ă«shtĂ« shkruar nĂ« C++ dhe shpĂ«rndahet nĂ«n licencĂ«n MIT.
DuckDB ofron njĂ« dialekt tĂ« zgjeruar tĂ« SQL, qĂ« pĂ«rfshin mundĂ«si shtesĂ« pĂ«r pĂ«rpunimin e pyetjeve shumĂ« komplekse dhe me kohĂ« tĂ« gjatĂ« ekzekutimi. MbĂ«shtoret pĂ«rdorimi i tipeve komplekse (vargje, struktura, bashkime), si edhe ekzekutimi i nĂ«npyetjeve arbitrare dhe tĂ« ndĂ«rlidhura tĂ« futura brenda njĂ«ra-tjetrĂ«s. MbĂ«shtoret ekzekutimi i njĂ«kohshĂ«m i disa pyetjeve, ekzekutimi i pyetjeve drejtpĂ«rdrejt nga skedarĂ« nĂ« formatet CSV dhe Parquet. ĂshtĂ« gjithashtu e disponueshme mbĂ«shtetja pĂ«r import nga SGBD PostgreSQL.
Projekti përdor një mbështjellës nga SQLite, parserin nga PostgreSQL, komponentin Date Math nga MonetDB, realizimin e tij të funksioneve dritare (të bazuar në algoritmin Segment Tree Aggregation), një procesor për shprehje të rregullta të bazuar në bibliotekën RE2, optimizuesin e tij të kërkesave, mekanizmin MVCC për menaxhimin e ekzekutimit të përbashkët të detyrave (Multi-Version Concurrency Control), si dhe një motor të vectorizuar për ekzekutimin e kërkesave të bazuar në algoritmin Hyper-Pipelining Query Execution, i cili lejon përpunimin në një operacion të grupeve të mëdha të vlerave njëherësh.
NĂ« versionin e ri:
- ĂshtĂ« shtuar mbĂ«shtetja pĂ«r ruajtjen e skedarĂ«ve tĂ« DB nĂ« formĂ« tĂ« enkriptuar. PĂ«r enkriptim pĂ«rdoret algoritmi AES-256 nĂ« modalitetin GCM. Enkriptohet jo vetĂ«m skedari kryesor me tĂ« dhĂ«nat, por edhe regjistrat WAL dhe skedarĂ«t e pĂ«rkohshĂ«m. ĂelĂ«sat pĂ«r enkriptimin e DB caktohen me komandĂ«n ATTACH pĂ«rmes parametrit ENCRYPTION_KEY. ATTACH âencrypted.dbâ AS enc_db (ENCRYPTION_KEY âquack_quackâ);
- ĂshtĂ« shtuar mbĂ«shtetja pĂ«r komandĂ«n «MERGE INTO», e cila mund tĂ« pĂ«rdoret si alternativĂ« ndaj shprehjes «INSERT ⊠ON CONFLICT», pa kĂ«rkuar njĂ« çelĂ«s primar dhe duke funksionuar me kushte arbitrare bashkimi. Komanda «MERGE INTO» lejon krijimin e shprehjeve SQL me kushte, qĂ« bashkojnĂ« nĂ« njĂ« shprehje tĂ« vetme operacionet INSERT, UPDATE dhe DELETE. PĂ«r shembull, me ndihmĂ«n e MERGE mund tĂ« organizohet bashkimi i 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, *;
- Si shtesë për punën me tabelat në formatin Apache Iceberg, është shtuar mbështetja për operacionet e shkrimit (më parë mbështetej vetëm leximi), gjë që mundëson transferimin e të dhënave nga Iceberg në DuckDB dhe anasjelltas.
- Në klientin e linjës së komandës është shtuar një tregues i progresit të ekzekutimit të operacionit me parashikim të kohës së mbetur deri në përfundim.
- ĂshtĂ« shtuar funksioni dritare «FILL», i cili mund tĂ« pĂ«rdoret pĂ«r interpolimin e vlerave qĂ« mungojnĂ« nĂ« dritare tĂ« renditura. FROM (VALUES (1, 1), (2, NULL), (3, 42)) t(c1, c2) SELECT fill(c2) OVER (ORDER BY c1) f; 1 21 42
- ĂshtĂ« implementuar shtesa Teradata Connector pĂ«r lidhje me bazat e tĂ« dhĂ«nave Teradata. Shtesa mundĂ«son manipulimin e tabelave, ekzekutimin e pyetjeve dhe nisjen e komandave SQL drejtpĂ«rdrejt nĂ« Teradata, duke pĂ«rdorur DuckDB.
- ĂshtĂ« shtuar mbĂ«shtetja pĂ«r ruajtjen e gjendjes (checkpoint) tĂ« tabelave tĂ« mbajtura nĂ« memorie, gjĂ« qĂ« bĂ«ri tĂ« mundur zbatimin e mbĂ«shtetjes pĂ«r kompresim. PĂ«r mĂ« tepĂ«r, gjatĂ« ruajtjes sĂ« gjendjes kryhet pastrimi i rreshtave tĂ« fshirĂ« dhe lirohet hapĂ«sira pas operacioneve tĂ« fshirjes. ATTACH â:memory:â AS memory_compressed (COMPRESS);
- Janë propozuar disa optimizime të performancës: Zbatimi i renditjes është kaluar në përdorimin e algoritmit të bashkimit shumërugësh (k-way merge sort), i cili zvogëlon lëvizjen e të dhënave. Shprehjet tabelare të përbashkëta (Common Table Expression, CTE) tani materializohen si parazgjedhje.
Burimi: opennet.ru
