Uvoľnenie databázového systému DuckDB 1.4.0 s podporou šifrovania databázy.

Bola zverejnená verzia DBMS DuckDB 1.4.0, zameraná na vykonávanie analytických dotazov a konceptuálne pripomínajúca SQLite. DuckDB kombinuje vlastnosti SQLite, ako sú kompaktnosť, pripojenie vo forme vstavané knižnice, uloženie DB v jednom súbore a CLI rozhranie, s možnosťami a optimalizáciami na vykonávanie analytických dotazov, ktoré pokrývajú významnú časť uložených dát, napríklad vykonávajú agregáciu celého obsahu tabuliek alebo spájanie viacerých veľkých tabuliek. Kód projektu je napísaný v jazyku C++ a je distribuovaný pod licenciou MIT.

DuckDB poskytuje rozšírený dialekt jazyka SQL, ktorý zahŕňa dodatočné možnosti na spracovanie veľmi zložitých a dlhodobých dotazov. Je možné používanie zložitých typov (poľia, štruktúry, unie), ako aj vykonávanie svojvoľných a vnorených korelovaných poddotazov. Podporuje sa súbežné vykonávanie viacerých dotazov, vykonávanie dotazov priamo z súborov vo formátoch CSV a Parquet. K dispozícii je podpora importu z DBMS PostgreSQL.

Projekt používa shell z SQLite, parser z PostgreSQL, komponent Date Math z MonetDB, vlastnú implementáciu oknových funkcií (na základe algoritmu Segment Tree Aggregation), spracovateľ regulárnych výrazov založený na knižnici RE2, vlastný optimalizátor dotazov, MVCC mechanizmus riadenia súbežného vykonávania úloh (Multi-Version Concurrency Control) a tiež vektorový engine vykonávania dotazov na základe algoritmu Hyper-Pipelining Query Execution, ktorý umožňuje v jednej operácii spracovávať veľké množstvá hodnôt.

V novej verzii:

  • Pridaná podpora pre ukladanie súborov DB v šifrovanej forme. Na šifrovanie sa používa algoritmus AES-256 v režime GCM. Šifruje sa nielen základný súbor s údajmi, ale aj WAL logy a dočasné súbory. Kľúče na šifrovanie DB sú určené príkazom ATTACH cez parameter ENCRYPTION_KEY. ATTACH ‘encrypted.db’ AS enc_db (ENCRYPTION_KEY ‘quack_quack’);
  • Pridaná podpora príkazu „MERGE INTO“, ktorý môže slúžiť ako alternatíva k výrazu „INSERT … ON CONFLICT“, nevyžaduje primárny kľúč a funguje s ľubovoľnými podmienkami zlúčenia. Príkaz „MERGE INTO“ umožňuje vytvárať podmienené SQL výrazy, spájajúce v jednom výraze operácie INSERT, UPDATE a DELETE. Napríklad, pomocou MERGE je možné zorganizovať zlúčenie dvoch tabuliek, vkladať chýbajúce záznamy a aktualizovať existujúce. 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, *;
  • Okrem toho bola pridaná podpora zapisovacích operácií pre tabuľky vo formáte Apache Iceberg (predtým sa podporovalo iba čítanie), čo umožňuje prenášať dáta z Iceberg do DuckDB a späť.
  • Do klienta príkazového riadku bol pridaný indikátor postupu vykonávania operácie s predikciou zostávajúceho času do jej dokončenia.
  • Bola pridaná oknová funkcia „FILL“, ktorú je možné použiť na interpoláciu chýbajúcich hodnôt v usporiadaných oknách. FROM (VALUES (1, 1), (2, NULL), (3, 42)) t(c1, c2) SELECT fill(c2) OVER (ORDER BY c1) f; 1 21 42
  • Bol implementovaný doplnok Teradata Connector na pripojenie k databázam Teradata. Doplnok umožňuje manipulovať s tabuľkami, vykonávať dotazy a spúšťať SQL príkazy priamo v Teradata pomocou DuckDB.
  • Bola pridaná podpora pre ukladanie stavu (checkpoint) pamäťových tabuliek, čo umožnilo zavedenie podpory kompresie. Okrem toho, pri uložení stavu sa vykonáva čistenie odstránených riadkov a uvoľnenie priestoru po operáciách mazania. ATTACH ':memory:' AS memory_compressed (COMPRESS);
  • Bolo navrhnutých niekoľko optimalizácií výkonnosti: Implementácia triedenia bola prevedená na použitie algoritmu viaccestného zlúčenia (k-way merge sort), ktorý znižuje presun dát. Zjednodušené tabuľkové výrazy (Common Table Expression, CTE) sa teraz predvolene materializujú.

Zdroj: opennet.ru

Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster