Lansarea SGBD-ului DuckDB 1.2.0

A fost publicată versiunea SGBD-ului DuckDB 1.2.0, orientată pe executarea interogărilor analitice și conceptual similară cu SQLite. DuckDB combină proprietățile SQLite, cum ar fi compactitatea, conectarea sub formă de bibliotecă încorporată, stocarea bazelor de date într-un singur fișier și interfața CLI, cu capabilitățile și optimizările pentru executarea interogărilor analitice, acoperind o parte semnificativă din datele stocate, de exemplu, executând agregarea întregului conținut al tabelelor sau îmbinarea mai multor tabele mari. Codul proiectului este scris în C++ și este distribuit sub licența MIT.

DuckDB oferă un dialect extins al limbajului SQL, incluzând funcționalități suplimentare pentru procesarea interogărilor foarte complexe și de lungă durată. Este posibilă utilizarea tipurilor complexe (matrici, structuri, unii), precum și executarea subinterogărilor corelate arbitrare și închise. Suportul pentru execuția simultană a mai multor interogări este disponibil, precum și executarea interogărilor direct din fișiere în formatele CSV și Parquet. Suportul pentru import din SGBD PostgreSQL este disponibil.

Proiectul utilizează un shell din SQLite, un parser din PostgreSQL, componenta Date Math din MonetDB, propria implementare a funcțiilor de fereastră (bazată pe algoritmul Segment Tree Aggregation), un procesor de expresii regulate bazat pe biblioteca RE2, un optimizator de interogări propriu, un mecanism MVCC de gestionare a concurrenței sarcinilor (Multi-Version Concurrency Control), precum și un motor vectorizat de execuție a interogărilor bazat pe algoritmul Hyper-Pipelining Query Execution, permițând procesarea într-o singură operație a unor seturi mari de valori.

În noua versiune:

  • A fost implementat suportul pentru noi metode de compresie, care nu sunt incluse în mod implicit pentru a păstra compatibilitatea fișierelor bazei de date cu versiunile anterioare ale DuckDB. Pentru utilizarea formatului îmbunătățit al fișierelor bazei de date, a fost propusă o opțiune de legare a bazei de date la numărul versiunii - la deschiderea fișierului prin parametrul „STORAGE_VERSION” acum se poate specifica versiunea minim acceptată a bazei de date („ATTACH ‘file.db’ (STORAGE_VERSION ‘v1.2.0’);”). Pentru a converti noul format în cel vechi, se poate utiliza comanda SQL COPY, de exemplu: ATTACH ‘file1.db’; ATTACH ‘converted_file.db’ (STORAGE_VERSION ‘v1.0.0’); COPY FROM DATABASE file1 TO converted_file;
  • A fost adăugat suport pentru comanda SQL „ALTER TABLE … ADD PRIMARY KEY” pentru a adăuga o cheie primară la o tabelă existentă.
  • A fost eliminată restricția care nu permitea reaplicarea identificatorilor pentru care există un index de urmărire a unicitații, dacă acești identificatori au fost șterși în tranzacția curentă. De exemplu, codul SQL de mai jos nu mai produce eroare: CREATE TABLE students (id INTEGER PRIMARY KEY, name VARCHAR); INSERT INTO students VALUES (1, 'John Doe'); BEGIN; DELETE FROM students WHERE id = 1; INSERT INTO students VALUES (1, 'Jane Doe');
  • A fost adăugată suportul pentru încărcarea fișierelor CSV în codificările Latin-1 și UTF-16 (anterior era suportată doar codificarea UTF-8). FROM read_csv('cities-latin-1.csv', encoding = 'latin-1');
  • A fost adăugat suportul pentru utilizarea separatorilor multi-byte în fișierele CSV (de până la 4 bytes), ceea ce permite utilizarea emoji-urilor ca separator de coloane. a🦆b hello🦆world FROM read_csv('example.dsv', sep = '🦆');
  • Modul strict de analiză a fișierelor CSV este activat în mod implicit ('strict_mode = true'), verificând conformitatea cu specificația RFC 4180. În modul strict este permisă utilizarea unui singur caracter pentru separarea rândurilor, ceea ce va genera o eroare când se încearcă analiza fișierelor în care rândurile sunt separate nu doar prin caracterul de linie nouă, ci și prin caracterul de întoarcere a carului ('\r\n').
  • Parserul CSV utilizează un nou algoritm pentru determinarea unei noi linii, care suportă paralelizarea operațiunilor. Folosirea noului algoritm a accelerat analiza CSV cu aproximativ 15%.
  • A fost eliminată restricția privind dimensiunea rândului în fișierele CSV (anterior, rândul nu trebuia să depășească 8 MB).
  • La exportul datelor în format Parquet a fost implementat suportul pentru hash-uri (dicționare) și indecși pe baza filtrului Bloom. A fost implementată metoda de compresie DELTA_BINARY_PACKED, care permite reducerea semnificativă a dimensiunii fișierelor Parquet.
  • Interfața de linie de comandă a fost dotată cu un mod sigur, activat prin opțiunea '-safe' sau comanda '.safe_mode'. În acest mod, accesul este permis doar la fișierul de bază specificat inițial, iar încercarea de a deschide alte fișiere va genera o eroare.
  • În interfața de linie de comandă, completarea automată a fost îmbunătățită. Codul pentru completare automată a fost rescris pentru a utiliza PEG (Parsing Expression Grammar).
  • La executarea comenzilor în interfața de linie de comandă, numerele mari sunt afișate vizibil, de exemplu, când se afișează numărul 100000000, se va adăuga sufixul '(100 milioane)'.
  • În SQL a fost adăugată suport pentru o sintaxă care permite specificarea denumirilor scurte ale tabelelor și expresiilor înainte de valorile la care se referă acestea (în loc de sintaxa „expresie AS denumire”): SELECT e1: some_long_and_winding_expression, e2: t2.a_column_name FROM t1: long_schema.some_long_table_name, t2: short_s.tbl;
  • În comanda „SELECT” a fost implementat suport pentru operația „RENAME” pentru a redenumi câmpurile afișate atunci când se specifică expresia „*”: SELECT * RENAME (col1 AS new_col1) FROM integers;
  • În comanda „SELECT” este permisă utilizarea operațiunilor „LIKE” și „SIMILAR TO” atunci când se afișează prin „*”: SELECT * LIKE ‘val%’ FROM key_val;
  • Calitatea generației numerelor pseudo-aleatoare a fost îmbunătățită.
  • Optimizerul de interogări a fost modernizat. Performanța în timpul testului TPC-H SF100 a crescut cu 13%.
  • A fost propus un nou API asemănător cu C pentru dezvoltarea de extensii, care poate fi utilizat, de exemplu, pentru a crea funcții agregate sau de tip tabel.
  • A fost adăugat suport pentru sisteme cu biblioteca standard C Musl.

Sursa: opennet.ro

Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS 🔥 Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS | ProHoster