Ilmus vĂ€lja DuckDB andmebaasi 1.4.0, mis on suunatud analĂŒĂŒtiliste pĂ€ringute tĂ€itmisele ja mille kontseptsioon sarnaneb SQLite-le. DuckDB ĂŒhendab SQLite omadused, nagu kompaktsus, integreeritud teegi kujul ĂŒhendamine, andmebaasi salvestamine ĂŒhte faili ja CLI-liides, koos vĂ”imekuste ja optimeeringutega analĂŒĂŒtiliste pĂ€ringute tĂ€itmiseks, mis hĂ”lmavad mĂ€rkimisvÀÀrset osa salvestatud andmetest, nĂ€iteks kĂ”igi tabelite sisu agregatsiooni vĂ”i mitme suure tabeli ĂŒhendamist. Projekti kood on kirjutatud C++ keeles ja levitatakse MIT litsentsi all.
DuckDB pakub ulatuslikku SQL keele dialekti, mis sisaldab tĂ€iendavaid vĂ”imalusi keerukate ja pikaajaliste pĂ€ringute töötlemiseks. Toetatakse keeruliste tĂŒĂŒpide (massiv, struktuurid, liidendid) kasutamist ja vĂ”imalust tĂ€ita omavahel seotud alampĂ€ringuid. Samuti on toetatud mitme pĂ€ringu samanaegne tĂ€itmine, pĂ€ringute otsefailidest, nagu CSV ja Parquet. On olemas ka toimetamine PostgreSQL andmebaasidest.
Projekt kasutab SQLite'i kestat, PostgreSQL'i parset, MonetDB Date Math komponenti, oma aknafunktsioonide rakendust (Segment Tree Aggregation alusel), regulaaravalduste töötlejat RE2 raamatukogu pĂ”hjal, oma pĂ€ringu optimeerijat, MVCC mehhanismi (Multi-Version Concurrency Control) ja vektori mootori pĂ€ringutĂ€itmiseks, mis pĂ”hineb hĂŒpertorustuse pĂ€ringute tĂ€itmise algoritmil, vĂ”imaldades ĂŒhes tegevuses korraga kĂ€sitleda suuri vÀÀrtuste kogumeid.
Uues versioonis:
- Lisatud tugi andmebaasi failide salvestamiseks krĂŒpteeritud kujul. KrĂŒptimiseks kasutatakse AES-256 algoritmi GCM reĆŸiimis. KrĂŒpteeritakse mitte ainult peamine andmefail, vaid ka WAL-logid ja ajutised failid. Andmebaasi krĂŒptimise vĂ”tmed mÀÀratakse kĂ€suga ATTACH parameetriga ENCRYPTION_KEY. ATTACH 'encrypted.db' AS enc_db (ENCRYPTION_KEY 'quack_quack');
- Lisatud tugi kĂ€sule 'MERGE INTO', mida saab kasutada alternatiivina vĂ€ljendile 'INSERT ... ON CONFLICT', mis ei nĂ”ua esmast vĂ”tit ja töötab juhuslike ĂŒhendamistingimustega. KĂ€sk 'MERGE INTO' vĂ”imaldab luua tingimuslikke SQL-vĂ€ljendeid, mis ĂŒhendavad ĂŒhes vĂ€ljendis INSERT, UPDATE ja DELETE toimingud. NĂ€iteks saab MERGE'iga korraldada kahe tabeli ĂŒhendamist, sisestades puuduvad kirjed ja uuendades olemasolevaid. 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, *;
- Lisaks on Apache Icebergi vormingus tabelite toetamiseks lisatud kirjutamise operatsioonide tugi (varem oli toetatud ainult lugemine), mis vÔimaldab andmete edastamist Icebergist DuckDB-sse ja tagasi.
- KÀsurea kliendile on lisatud toimingu edenemise indikaator, mis ennustab seda, kui kaua on jÀÀnud kuni operatsiooni lÔpetamiseni.
- Lisatud aknafunktsioon 'FILL', mida saab kasutada jÀrjestatud akendes puuduvate vÀÀrtuste interpoleerimiseks. FROM (VALUES (1, 1), (2, NULL), (3, 42)) t(c1, c2) SELECT fill(c2) OVER (ORDER BY c1) f; 1 21 42
- Realiseeritud Teradata Connector laiendus, et ĂŒhendada Teradata andmebaasidega. Laiendus vĂ”imaldab manipuleerida tabelitega, esitada pĂ€ringuid ja kĂ€ivitada SQL-kĂ€ske otse Teradata's, kasutades DuckDB.
- Lisatud on mĂ€lus hoidvate tabelite oleku (checkpoint) fikseerimise tugi, mis vĂ”imaldas rakendada kokkusurumise toetust. Lisaks toimub oleku fikseerimise ajal eemaldatud ridade puhastamine ja ruumi vabastamine kustutamisoperatsioonide jĂ€rel. ATTACH â:memory:â AS memory_compressed (COMPRESS);
- Töötamiseks on pakutud mitmeid jĂ”udluse optimeerimisi: Sortimise teostamine on muudetud kasutama mitmerealist ĂŒhinemismeetodit (k-way merge sort), mis vĂ€hendab andmete liikumist. Ăldised tabelivĂ€ljendid (Common Table Expression, CTE) materialiseeritakse nĂŒĂŒd vaikimisi.
Allikas: opennet.ru
