Vydanie databázového systému SQLite 3.42 a DuckDB 0.8.0. CG/SQL s implementáciou uložených procedúr pre SQLite

Bol release SQLite 3.42, ľahkého DBMS, zverejneného ako knižnica. Kód SQLite je uvoľnený ako verejný majetok (public domain), t.j. môže sa používať bez obmedzení a bez náhrady za akýkoľvek účel. Finančnú podporu vývojárom SQLite poskytuje špeciálne vytvorený konzorcium, do ktorého patrí taká spoločnosť ako Adobe, Oracle, Mozilla, Bentley a Bloomberg.

Hlavné zmeny:

  • Pre plnotextové indexy FTS5 bola implementovaná príkaz secure-delete, ktorý vykonáva úplné vymazanie všetkých zvyškových údajov po odstránení.
  • Vo funkciách na spracovanie dát vo formáte JSON bola implementovaná podpora rozšírení JSON5.
  • Vylepšený plánovač dopytov. Predvolene je povolená optimalizácia „count-of-view“. Bolo vylúčené spracovanie nepoužívaných stĺpcov v poddotazoch. Vylepšená implementácia optimalizácie push-down.
  • Do rozhrania príkazového riadku bola pridaná voľba „—unsafe-testing“, ktorá umožňuje používať niektoré nebezpečné príkazy, ako napríklad „.testctrl“, určené na použitie počas testovania. V bezpečnom režime („—safe“) je povolené používanie príkazov „.log on“ a „.log off“. Bola pridaná podpora oddeľovača „—“, po ktorom sa vypína spracovanie možností. Pridané parametre „:inf“ a „:nan“, ktoré súvisia s hodnotami nekonečno a NaN.
  • V názvoch SQL-funkcií definovaných na strane aplikácie bolo povolené prekrytie s kľúčovými slovami CROSS, FULL, INNER, LEFT, NATURAL, OUTER a RIGHT.
  • Možnosti PRAGMA integrity_check boli rozšírené. Pridaná kontrola, ktorá zabezpečuje, že hodnota NaN sa nachádza v stĺpcoch s podmienkou NOT NULL. Vylepšená informačnosť chybových správ.
  • V dodatku session je povolený zachytávanie zmien z tabuliek bez ROWID.
  • Vo funkcii na prácu s časom a dátumami bol pridaný modifikátor „subsec“ na použitie zlomkov sekúnd.
  • Hĺbka rekurzie pre polia a objekty JSON bola predvolene znížená z 2000 na 1000.

Okrem iného bol vydaný systém DuckDB 0.8.0, ktorý predstavuje variantu SQLite rozšírený o možnosti a optimalizácie pre vykonávanie analytických dotazov, pokrývajúce podstatnú časť uložených dát, napríklad vykonávajúce agregáciu celého obsahu tabuliek alebo zlúčenie viacerých veľkých tabuliek. Poskytuje rozšírený dialekt SQL, ktorý obsahuje ďalšie funkcie na spracovanie veľmi zložitých a dlhých dotazov, ako aj podporuje zložité typy (pole, štruktúry, unie), súčasné vykonávanie viacerých dotazov a vykonávanie dotazov priamo z súborov vo formáte CSV, JSON a Parquet. Existuje možnosť importu z databázy PostgreSQL.

Okrem kódu shellu zo SQLite projekt používa samostatne vyčlenenú knižnicu pre 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 založený na knižnici RE2, vlastného optimalizátora dotazov, MVCC mechanizmus riadenia súbežného vykonávania úloh (Multi-Version Concurrency Control), ako aj vektorovaný engine na vykonávanie dotazov založený na algoritme Hyper-Pipelining Query Execution, ktorý umožňuje spracovávať veľké množiny hodnôt v jednej operácii. Kód projektu je distribuovaný pod licenciou MIT.

V novej verzii DuckDB:

  • Boli pridané nové výrazy „PIVOT“ a „UNPIVOT“ na transformáciu riadkov na stĺpce a naopak.
  • Zlepšené paralelizovanie pri importe a exporte dát. Predvolene sa implementovalo čítanie zo súborov vo formáte CSV v niekoľkých vláknach a viacvláknové zápisy pri použití formátov Parquet, CSV a JSON.
  • Bol pridaný operátor „**“ na rekurzívne prehľadávanie adresárov pri určovaní súborových ciest (napríklad, FROM ‘data/glob/crawl/stackoverflow/**/*.csv’;).
  • Bola pridaná podpora operácií zlúčenia (JOIN) pre dáta vo forme časovej rady (úseky hodnôt parametrov v pravidelných intervaloch), v ktorých ako kritérium zlúčenia záznamov sa používa nie presná, ale približná zhoda hodnôt v poli s časom (napríklad je možné zlúčiť záznamy, ktorých čas sa líši najviac o 1 minútu).
  • Bola implementovaná oneskorená načítanie metadát DB, čo umožnilo desiatkykrát urýchliť spustenie systémov DB.
  • Pridaná podpora pripojenia používateľských funkcií v jazyku Python.
  • Pridaná podpora API ADBC (Arrow Database Connectivity) na prenos dát s využitím Apache Arrow.
  • Implementovaná väzba na integráciu s kódom v jazyku Swift.
  • Zmenené správanie operátora delenia („/“), ktorý teraz predvolene vykonáva výpočty s plávajúcou rádovou čiarkou namiesto celočíselných operácií. Pre celočíselné delenie bol navrhnutý nový operátor „//“. Staré správanie je možné obnoviť nastavením „SET integer_division=true;“.
  • Metóda zohľadnenia nulových záznamov pri triedení bola zmenená z „NULLS FIRST“ na „NULLS LAST“, t.j. hodnoty NULL sa teraz zobrazia na konci, nie na začiatku zoznamu. Staré správanie je možné obnoviť nastavením „SET default_null_order='nulls_first';“.

Ďalej môže byť uvedený projekt CG/SQL, vyvinutý spoločnosťou Facebook, ktorý poskytuje generátor kódu na použitie uložených procedúr s SQLite. CG/SQL umožňuje vytvoriť uložené procedúry v špeciálnom dialekte T-SQL (Transact-SQL), ktorý umožňuje volanie funkcií štandardnej knižnice jazyka C a prístup k údajom v SQLite. Vytvorené uložené procedúry sa kompilujú do kódu v jazyku C, ktorý používa SQLite C API na vykonávanie zadaných akcií a spracovanie zložitých dotazov. Kompilované uložené procedúry môžu byť pripojené k programom v jazykoch C, Java a Objective-C. Kód projektu je napísaný v jazyku C a distribuuje sa pod licenciou MIT.

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