Verze DuckDB 1.4.0 s podporou šifrování databáze

Byla vydána DuckDB 1.4.0, DBMS zaměřená na analytické dotazy a koncepčně podobná SQLite. DuckDB kombinuje kompaktní velikost SQLite, připojitelnou knihovnu, jednosouborové databázové úložiště a rozhraní CLI s možnostmi a optimalizacemi pro spouštění analytických dotazů, které pokrývají velkou část uložených dat, jako je agregace celého obsahu tabulek nebo sloučení několika velkých tabulek. Kód projektu je napsán v C++ a je distribuován pod licencí MIT.

DuckDB poskytuje rozšířený dialekt jazyka SQL, který zahrnuje další možnosti pro zpracování velmi složitých a dlouhotrvajících dotazů. Je možné používat komplexní typy (pole, struktury, sjednocení), stejně jako provádět libovolné a vnořené korelované poddotazy. Je podporováno současné provádění více dotazů, provádění dotazů přímo ze souborů CSV a Parquet. K dispozici je podpora pro import z PostgreSQL DBMS.

Projekt využívá shell z SQLite, analyzátor z PostgreSQL, komponentu Date Math z MonetDB, vlastní implementaci okenních funkcí (založený na algoritmu Segment Tree Aggregation), procesor regulárních výrazů založený na knihovně RE2, vlastní optimalizátor dotazů, mechanismus MVCC pro řízení simultánního provádění úloh (založený na dotazovacím enginu Multi-Version a vektoru ExPel Concurinering algoritmu, který umožňuje zpracovat velké sady hodnot v jedné operaci.

V nové verzi:

  • Přidána podpora pro ukládání šifrovaných databázových souborů. Pro šifrování v režimu GCM se používá algoritmus AES-256. Toto šifrování zahrnuje nejen hlavní datový soubor, ale také protokoly WAL a dočasné soubory. Šifrovací klíče databáze se zadávají pomocí příkazu ATTACH prostřednictvím parametru ENCRYPTION_KEY. ATTACH 'encrypted.db' AS enc_db (ENCRYPTION_KEY 'quack_quack');
  • Přidána podpora pro příkaz MERGE INTO, který lze použít jako alternativu k příkazu INSERT … ON CONFLICT, nevyžaduje primární klíč a pracuje s libovolnými podmínkami sloučení. Příkaz MERGE INTO umožňuje vytvářet podmíněné výrazy SQL, které kombinují operace INSERT, UPDATE a DELETE v jednom příkazu. Například pomocí MERGE můžete sloučit dvě tabulky, vkládat chybějící záznamy a aktualizovat stávající. WITH deletes(id_položky, prahová hodnota_smazání) AS (VALUES (10, 3000)) MERGE INTO Stock USING deletes USING (id_položky) WHEN MATCHED AND balance < prahová_hodnota_smazání THEN DELETE RETURNING merge_action, *;
  • Kromě práce s tabulkami ve formátu Apache Iceberg byla přidána podpora pro operace zápisu (dříve byly podporovány pouze operace čtení), což umožňuje přenos dat z Icebergu do DuckDB a naopak.
  • Klient příkazového řádku byl aktualizován o indikátor průběhu operace, který předpovídá čas zbývající do dokončení.
  • Přidána okenní funkce FILL, kterou lze použít k interpolaci chybějících hodnot v seřazených oknech. FROM (VALUES (1, 1), (2, NULL), (3, 42)) t(c1, c2) SELECT fill(c2) OVER (ORDER BY c1) f; 1 21 42
  • Byl implementován doplněk Teradata Connector pro připojení k databázím Teradata. Doplněk umožňuje manipulovat s tabulkami, spouštět dotazy a spouštět SQL příkazy přímo v Teradatě pomocí DuckDB.
  • Přidána podpora pro kontrolní body v tabulkách v paměti, což umožňuje podporu komprese. Kontrolní body také odstraňují smazané řádky a uvolňují místo po operacích mazání. ATTACH ':memory:' AS memory_compressed (COMPRESS);
  • Bylo navrženo několik optimalizací výkonu: Implementace řazení byla přepnuta na algoritmus k-way merge sort, což snižuje přesun dat. Common Table Expressions (CTE) jsou nyní ve výchozím nastavení materializovány.

Zdroj: opennet.ru

Kupte si spolehlivý hosting pro stránky s DDoS ochranou, VPS VDS servery 🔥 Kupte si spolehlivý webhosting s ochranou DDoS, VPS VDS servery | ProHoster