Uvoľnenie databázového systému DuckDB 1.2.0

Bol vydaný databázový systém DuckDB 1.2.0, zameraný na vykonávanie analytických dopytov a konceptuálne podobný SQLite. DuckDB kombinuje vlastnosti SQLite, ako sú kompaktnosť, zabudovanie vo forme knižnice, uloženie databázy v jednom súbore a CLI rozhranie, s možnosťami a optimalizáciami na vykonávanie analytických dopytov, ktoré pokrývajú značnú časť uložených údajov, ako napríklad vykonávanie agregácie celého obsahu tabuliek alebo zlúčenie viacerých veľkých tabuliek. Kód projektu je napísaný v C++ a je distribuovaný pod licenciou MIT.

DuckDB poskytuje rozšírený dialekt jazyka SQL, ktorý obsahuje ďalšie možnosti pre spracovanie veľmi zložitých a dlhodobo vykonávaných dopytov. Je možné používanie zložitých typov (polia, štruktúry, zlučeniny), ako aj vykonávanie ľubovoľných a vnorených korelovaných poddopytov. Podporuje súčasné vykonávanie viacerých dopytov a vykonávanie dopytov priamo zo súborov vo formáte CSV a Parquet. K dispozícii je podpora importu z SDB PostgreSQL.

Projekt využíva obal zo 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 na základe knižnice RE2, vlastný optimalizátor dopytov, MVCC mechanizmus riadenia súčasného vykonávania úloh (Multi-Version Concurrency Control) a tiež vektorizovaný engine vykonávania dopytov založený na algoritme Hyper-Pipelining Query Execution, ktorý umožňuje v jednej operácii spracovať veľké množiny hodnôt.

V novej verzii:

  • Implementovaná podpora nových metód kompresie, ktoré nie sú predvolene zahrnuté na zachovanie kompatibility databázových súborov s predchádzajúcimi verziami DuckDB. Na použitie vylepšeného formátu databázových súborov je navrhnutá možnosť viazania databázy na číslo verzie — pri otvorení súboru pomocou parametra „STORAGE_VERSION“ je teraz možné zadať minimálne podporovanú verziu databázy („ATTACH ‘file.db’ (STORAGE_VERSION ‘v1.2.0’);“). Na prevod nového formátu na starý je možné použiť SQL príkaz COPY, napríklad: ATTACH ‘file1.db’; ATTACH ‘converted_file.db’ (STORAGE_VERSION ‘v1.0.0’); COPY FROM DATABASE file1 TO converted_file;
  • Pridaná podpora SQL príkazu „ALTER TABLE … ADD PRIMARY KEY“ na pridanie primárneho kľúča do existujúcej tabuľky.
  • Odstránené obmedzenie, ktoré neumožňovalo opätovné pridávanie identifikátorov, pre ktoré existoval index sledovania jedinečnosti, ak tieto identifikátory boli odstránené v aktuálnej transakcii. Napríklad níže uvedený SQL kód teraz nezpôsobuje chybu: 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’);
  • Pridaná podpora načítania CSV súborov v kódovaniach Latin-1 a UTF-16 (predtým sa podporovalo iba kódovanie UTF-8). FROM read_csv(‘cities-latin-1.csv’, encoding = ‘latin-1’);
  • Pridaná podpora používania viacbajtových oddeľovačov v CSV súboroch (až 4 bajty), čo umožňuje používať emoji ako oddeľovač stĺpcov. a🦆b hello🦆world FROM read_csv(‘example.dsv’, sep = ‘🦆’);
  • Predvolene je aktivovaný prísny režim spracovania CSV súborov ("strict_mode = true"), ktorý kontroluje zhodu formátovania so špecifikáciou RFC 4180. V prísnom režime je povolené používať len jeden znak na oddeľovanie riadkov, čo spôsobí chybu pri pokuse o spracovanie súborov, v ktorých sa na oddeľovanie riadkov používajú nielen znak nového riadku, ale aj znak návratu kurzora ("\r\n").
  • V parseri CSV bol zapracovaný nový algoritmus určovania nového riadka, ktorý podporuje paralelizáciu operácií. Použitie nového algoritmu urýchlilo spracovanie CSV približne o 15%.
  • Bolo odstránené obmedzenie veľkosti riadka v CSV súboroch (predtým riadok nemal presiahnuť 8 MB).
  • Pri exporte dát vo formáte Parquet bola implementovaná podpora hashov (súborov) a indexov na báze Bloomovho filtra. Bol implementovaný spôsob kompresie DELTA_BINARY_PACKED, ktorý výrazne zníži veľkosť Parquet súborov.
  • Do rozhrania príkazového riadku bol pridaný bezpečný režim, ktorý sa aktivuje pomocou možnosti "-safe" alebo príkazu ".safe_mode". V tomto režime je povolený prístup iba k pôvodne uvedenému súboru databázy, a pokus o otvorenie iných súborov vyvolá chybu.
  • V rozhraní príkazového riadku bolo vylepšené automatické doplňovanie vstupu. Kód pre automatické doplňovanie bol prevedený na využívanie PEG (Parsing Expression Grammar).
  • Pri vykonávaní príkazov v rozhraní príkazového riadku sa zavedie prehľadné zobrazenie veľkých čísel, napríklad pri zobrazovaní čísla 100000000 sa dodatočne pridá "(100 miliónov)".
  • V SQL bola pridaná podpora syntaxe, kde skrátené názvy tabuliek a výrazov je možné uvádzať pred hodnotami, na ktoré sa vzťahujú (namiesto použitia syntaxe "výraz AS názov"): SELECT e1: some_long_and_winding_expression, e2: t2.a_column_name FROM t1: long_schema.some_long_table_name, t2: short_s.tbl;
  • V príkaze "SELECT" bola implementovaná podpora operácie "RENAME" pre premenovanie polí, ktoré sú zobrazené pri uvedení výrazu "*": SELECT * RENAME (col1 AS new_col1) FROM integers;
  • V príkaze "SELECT" sa povolilo používanie operácií "LIKE" a "SIMILAR TO" pri výstupe cez "*": SELECT * LIKE ‘val%’ FROM key_val;
  • Zvýšila sa kvalita generovania pseudonáhodných čísel.
  • Optimalizátor dopytov bol modernizovaný. Výkon pri teste TPC-H SF100 sa zvýšil o 13%.
  • Bol zavedené nové API podobné C pre vývoj doplnkov, ktoré sa môže použiť napríklad na vytváranie nových agregačných alebo tabuľkových funkcií.
  • Pridaná podpora systémov so štandardnou C knižnicou Musl.

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