Vydanie DBMS SQLite 3.42 a DuckDB 0.8.0. CG/SQL s implementáciou uložených procedúr pre SQLite

Bolo zverejnené vydanie SQLite 3.42, ľahkého DBMS navrhnutého ako zásuvná knižnica. Kód SQLite je distribuovaný vo verejnej doméne, t.j. možno použiť bez obmedzení a bezplatne na akýkoľvek účel. Finančnú podporu pre vývojárov SQLite poskytuje špeciálne vytvorené konzorcium, ktoré zahŕňa spoločnosti ako Adobe, Oracle, Mozilla, Bentley a Bloomberg.

Hlavné zmeny:

  • Pre fulltextové indexy FTS5 bol implementovaný príkaz secure-delete, ktorý po vymazaní úplne vymaže všetky zvyškové dáta.
  • Funkcie na spracovanie údajov JSON teraz podporujú rozšírenia JSON5.
  • Vylepšený plánovač dopytov. Optimalizácia počtu zobrazení je predvolene povolená. Odpadá spracovanie nepoužitých stĺpcov v poddotazoch. Vylepšená implementácia push-down optimalizácie.
  • Do rozhrania príkazového riadka bola pridaná možnosť „--unsafe-testing“, ktorá umožňuje použitie niektorých nebezpečných príkazov, ako napríklad „.testctrl“, určených na použitie pri testovaní. V núdzovom režime („-safe“) je povolené používanie príkazov „.log on“ a „.log off“. Pridaná podpora pre oddeľovač „-“ pre argumenty, po ktorých je spracovanie volieb zakázané. Pridané parametre ":inf" a ":nan" spojené s hodnotami nekonečna a NaN.
  • Aplikáciou definované názvy funkcií SQL sa môžu prekrývať s kľúčovými slovami CROSS, FULL, INNER, LEFT, NATURAL, OUTER a RIGHT.
  • Možnosti PRAGMA integrity_check boli rozšírené. Pridaná kontrola zadávania hodnôt NaN v stĺpcoch s podmienkou NOT NULL. Vylepšený informačný obsah chybových hlásení.
  • Doplnok relácie umožňuje zachytiť zmeny z tabuliek bez ROWID.
  • Modifikátor „subsec“ bol pridaný do funkcií na prácu s časmi a dátumami na používanie zlomkov sekúnd.
  • Predvolená hĺbka rekurzie pre polia a objekty JSON bola znížená z 2000 na 1000.

Okrem toho bola vytvorená verzia DuckDB 0.8.0 DBMS, ktorá vyvíja verziu SQLite rozšírenú o možnosti a optimalizácie na vykonávanie analytických dotazov pokrývajúcich významnú časť uložených údajov, napríklad vykonávaním agregácie celého obsahu. tabuliek alebo zlúčenie niekoľkých veľkých tabuliek. Poskytuje pokročilý dialekt SQL, ktorý zahŕňa ďalšie možnosti na spracovanie veľmi zložitých a časovo náročných dotazov a tiež podporuje zložité typy (polia, štruktúry, zväzky), spúšťanie viacerých dotazov súčasne a spúšťanie dotazov priamo zo súborov CSV, JSON a Parquet. . Je možné importovať z PostgreSQL DBMS.

Okrem shell kódu z SQLite projekt používa parser z PostgreSQL v samostatnej knižnici, komponent Date Math od MonetDB, vlastnú implementáciu funkcií okna (založený na algoritme Segment Tree Aggregation), procesor regulárnych výrazov založený na knižnica RE2, vlastný optimalizátor dotazov a riadiaci mechanizmus MVCC simultánne vykonávanie úloh (Multi-Version Concurrency Control), ako aj vektorizovaný nástroj na vykonávanie dotazov založený na algoritme Hyper-Pipelining Query Execution, ktorý umožňuje veľké množiny hodnôt spracovať naraz v jednej operácii. Kód projektu je distribuovaný pod licenciou MIT.

V novej verzii DuckDB:

  • Pridané nové výrazy "PIVOT" a "UNPIVOT" na transformáciu riadkov na stĺpce a naopak.
  • Vylepšená paralelizácia pri importe a exporte údajov. Pri použití formátov Parquet, CSV a JSON sa štandardne implementuje viacvláknové čítanie zo súborov CSV a viacvláknový zápis.
  • Pridaný operátor "**" na rekurzívne iterovanie cez adresáre pri určovaní ciest k súborom (napríklad FROM "'data/glob/crawl/stackoverflow/**/*.csv';").
  • Pridaná podpora operácií zlučovania (JOIN) pre dáta vo forme časových radov (výrezy hodnôt parametrov v určených časových intervaloch), v ktorých nie je kritériom zlučovania záznamov presná, ale približná zhoda hodnôt v poli s časom (napríklad môžete zlúčiť záznamy, ktorých čas sa líši najviac o 1 minútu).
  • Implementované lenivé načítavanie databázových metadát, ktoré umožnilo desaťnásobne urýchliť spustenie DBMS.
  • Pridaná podpora pre pripojenie vlastných funkcií v Pythone.
  • Pridaná podpora pre ADBC ​​​​(Arrow Database Connectivity) API na prenos údajov pomocou Apache Arrow.
  • Pre integráciu s kódom Swift bola implementovaná väzba.
  • Správanie operátora delenia ("/") sa zmenilo tak, aby štandardne vykonával výpočty s pohyblivou rádovou čiarkou namiesto celočíselných operácií. Pre celočíselné delenie sa navrhuje nový operátor „//“. Staré správanie je možné vrátiť nastavením „SET integer_division=true;“.
  • Spôsob zohľadňovania nulových záznamov pri triedení sa zmenil z „NULLS FIRST“ na „NULLS LAST“, t.j. Hodnoty NULL budú teraz vytlačené na konci, a nie na začiatku zoznamu. Staré správanie je možné vrátiť nastavením „SET default_null_order='nulls_first';“.

Okrem toho si môžeme všimnúť projekt CG/SQL vyvinutý spoločnosťou Facebook, ktorý poskytuje generátor kódu na používanie uložených procedúr s SQLite. CG/SQL umožňuje písať uložené procedúry v špeciálnom dialekte T-SQL (Transact-SQL), ktorý umožňuje volanie funkcií štandardnej knižnice C a prístup k údajom v SQLite. Vygenerované uložené procedúry sú skompilované do kódu C, ktorý používa SQLite C API na vykonávanie špecifikovaných akcií a spracovanie zložitých dotazov. Kompilované uložené procedúry je možné pripojiť k programom C, Java a Objective-C. Kód projektu je napísaný v jazyku C a je distribuovaný pod licenciou MIT.

Zdroj: opennet.ru

Pridať komentár