Wydanie systemu zarządzania bazą danych DuckDB 1.4.0 z obsługą szyfrowania Bazy Danych

Opublikowano wydanie systemu DB DuckDB 1.4.0, zaprojektowanego do realizacji zapytań analitycznych, koncepcyjnie przypominające SQLite. DuckDB łączy cechy SQLite, takie jak kompaktowość, możliwość użycia jako wbudowanej biblioteki, przechowywanie bazy danych w jednym pliku oraz interfejs CLI, z funkcjami i optymalizacjami do realizacji zapytań analitycznych obejmujących znaczną część przechowywanych danych, na przykład agregację całej zawartości tabel lub łączenie kilku dużych tabel. Kod projektu został napisany w języku C++ i jest udostępniany na licencji MIT.

DuckDB oferuje rozszerzony dialekt języka SQL, który zawiera dodatkowe możliwości przetwarzania bardzo skomplikowanych i długotrwałych zapytań. Możliwe jest użycie złożonych typów (tablice, struktury, unie), a także wykonywanie dowolnych i zagnieżdżonych zapytań skorelowanych. Obsługiwane jest równoległe wykonywanie wielu zapytań oraz realizacja zapytań bezpośrednio z plików w formatach CSV i Parquet. Dostępne jest wsparcie dla importu z systemów DB PostgreSQL.

Projekt wykorzystuje powłokę SQLite, parser PostgreSQL, komponent Date Math z MonetDB, własną implementację funkcji okiennych (na podstawie algorytmu Segment Tree Aggregation), obsługiwacz wyrażeń regularnych oparty na bibliotece RE2, a także własny optymalizator zapytań, mechanizm MVCC do zarządzania równoległym wykonaniem zadań (Multi-Version Concurrency Control) oraz wektoryzowany silnik wykonywania zapytań oparty na algorytmie Hyper-Pipelining Query Execution, który pozwala na jednoczesne przetwarzanie dużych zbiorów wartości w jednej operacji.

W nowej wersji:

  • Dodano wsparcie dla przechowywania plików bazy danych w zaszyfrowanej formie. Do szyfrowania używany jest algorytm AES-256 w trybie GCM. Szyfrowany jest nie tylko główny plik z danymi, ale także logi WAL i pliki tymczasowe. Klucze do szyfrowania bazy danych są definiowane poleceniem ATTACH z parametrem ENCRYPTION_KEY. ATTACH 'encrypted.db' AS enc_db (ENCRYPTION_KEY 'quack_quack');
  • Dodano wsparcie dla polecenia „MERGE INTO”, które może być stosowane jako alternatywa dla wyrażenia „INSERT … ON CONFLICT”, nie wymagające klucza głównego i działające z dowolnymi warunkami łączenia. Polecenie „MERGE INTO” pozwala na tworzenie warunkowych wyrażeń SQL, łączących w jednym wyrażeniu operacje INSERT, UPDATE i DELETE. Na przykład, za pomocą MERGE można zorganizować łączenie dwóch tabel, wstawiając brakujące rekordy i aktualizując istnieją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, *;
  • Oprócz tego, dodano wsparcie dla operacji zapisu w przypadku pracy z tabelami w formacie Apache Iceberg (wcześniej wspierano tylko odczyt), co pozwala na przenoszenie danych z Iceberg do DuckDB i z powrotem.
  • W klienta wiersza poleceń dodano wskaźnik postępu operacji z prognozą czasu pozostałego do zakończenia.
  • Dodano funkcję okna „FILL”, którą można wykorzystać do interpolacji brakujących wartości w uporządkowanych oknach. FROM (VALUES (1, 1), (2, NULL), (3, 42)) t(c1, c2) SELECT fill(c2) OVER (ORDER BY c1) f; 1 21 42
  • Zrealizowano dodatek Teradata Connector do łączenia z bazami danych Teradata. Dodatek umożliwia manipulację tabelami, wykonywanie zapytań i uruchamianie poleceń SQL bezpośrednio w Teradata, używając DuckDB.
  • Dodano wsparcie dla punktów kontrolnych (checkpoint) tabel przechowywanych w pamięci, co pozwoliło na wsparcie kompresji. Ponadto podczas punktu kontrolnego wykonywana jest dezynfekcja usuniętych wierszy i zwalnianie miejsca po operacjach usunięcia. ATTACH ‘:memory:’ AS memory_compressed (COMPRESS);
  • Zaproponowano kilka optymalizacji wydajności: Implementacja sortowania została przetworzona na wykorzystanie algorytmu wielościeżkowego scalania (k-way merge sort), co zmniejsza ruch danych. Uogólnione wyrażenia tabelaryczne (Common Table Expression, CTE) są teraz domyślnie materializowane.

Źródło: opennet.ru

Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS 🔥 Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS | ProHoster