Byl vydán SQLite 3.42, lehká databázová správa, která je dostupná jako dynamická knihovna. Kód SQLite je distribuován jako veřejné vlastnictví (public domain), což znamená, že může být používán bez omezení a pro jakékoliv účely bez nákladů. Finanční podporu vývojářům SQLite poskytuje speciálně vytvořený konsorcium, do kterého patří společnosti jako Adobe, Oracle, Mozilla, Bentley a Bloomberg.
Hlavní změny:
- Pro fulltextové indexy FTS5 byla implementována příkaz secure-delete, který provádí kompletní úklid všech zbytkových dat po smazání.
- V funkcích pro zpracování dat ve formátu JSON byla přidána podpora rozšíření JSON5.
- Plánovač dotazů byl vylepšen. Optimalizace „count-of-view“ je ve výchozím nastavení zapnuta. Zpracování nepoužívaných sloupců v poddotazech bylo vyloučeno. Zlepšena byla implementace optimalizace push-down.
- Do rozhraní příkazového řádku byla přidána volba „—unsafe-testing“, která umožňuje používat některé nebezpečné příkazy, jako je „.testctrl“, určené k testování. V bezpečném režimu („—safe“) je povoleno používat příkazy „.log on“ a „.log off“. Byla přidána podpora oddělovače „—“, po kterém je zpracování voleb zakázáno pro argumenty. Byly přidány parametry „:inf“ a „:nan“ související s hodnotami nekonečno a NaN.
- Dovolení určitých SQL funkcí definovaných na straně aplikace, aby se nesetkávaly s klíčovými slovy CROSS, FULL, INNER, LEFT, NATURAL, OUTER a RIGHT.
- Možnosti PRAGMA integrity_check byly rozšířeny. Byla přidána kontrola hodnoty NaN ve sloupcích s podmínkou NOT NULL. Zprávy o chybách byly učiněny přehlednější.
- V dodatku session bylo povoleno zachycování změn z tabulek bez ROWID.
- Do funkcí pro práci s časem a daty byl přidán modifikátor „subsec“ pro použití zlomků sekund.
- Hluboké rekurze pro pole a objekty JSON byla ve výchozím nastavení snížena z 2000 na 1000.
Kromě toho byla vydána verze databázového systému DuckDB 0.8.0, která rozšiřuje variantu SQLite o možnosti a optimalizace pro provádění analytických dotazů, pokrývajících významnou část uložených dat, například provádějící agregaci všech obsahu tabulek nebo sloučení několika velkých tabulek. Poskytuje rozšířenou variantu SQL, zahrnující další možnosti pro zpracování velmi složitých a dlouhých dotazů a také podporující složité typy (pole, struktury, unie), paralelní provádění několika dotazů a provádění dotazů přímo z souborů ve formátu CSV, JSON a Parquet. Existuje možnost importu z databází PostgreSQL.
Kromě kódu Shell z SQLite projekt využívá externí knihovnu parseru z PostgreSQL, komponentu Date Math z MonetDB, vlastní implementaci oknových funkcí (na základě algoritmu Segment Tree Aggregation), zpracovatele regulačních výrazů na základě knihovny RE2, vlastní optimalizátor dotazů, mechanismus MVCC pro řízení paralelního provádění úloh (Multi-Version Concurrency Control), a také vektorový engines pro vykonávání dotazů na základě algoritmu Hyper-Pipelining Query Execution, který umožňuje v jedné operaci zpracovávat velké množství hodnot. Kód projektu je distribuován pod licencí MIT.
V nové verzi DuckDB:
- Byly přidány nové výrazy „PIVOT“ a „UNPIVOT“ pro transformaci řádků na sloupce a naopak.
- Zlepšilo se paralelní zpracování při importu a exportu dat. Ve výchozím nastavení je zajištěno čtení souborů ve formátu CSV v několika vláknech a vícethreadové zapisování při využívání formátů Parquet, CSV a JSON.
- Přidán operator „**“ pro rekurzivní procházení adresářů při určování souborových cest (například, FROM „‘data/glob/crawl/stackoverflow/**/*.csv’;“).
- Přidána podpora pro sloučovací operace (JOIN) pro data ve formě časových řad (série hodnot parametrů v daných časových intervalech), kde se jako kritérium pro spojení záznamů používá nikoli přesné, ale přibližné shodování hodnot v poli se časem (například je možné sloučit záznamy, jejichž čas se liší maximálně o 1 minutu).
- Bylo realizováno odložené načítání metadat databáze, což několikanásobně urychlilo spuštění databázového systému.
- Byla přidána podpora pro připojení uživatelských funkcí v jazyce Python.
- Byla přidána podpora pro API ADBC (Arrow Database Connectivity) pro přenos dat pomocí Apache Arrow.
- Bylo implementováno spojení pro integraci s kódem v jazyce Swift.
- Bylo změněno chování operátoru dělení ("/") tak, že nyní ve výchozím nastavení provádí výpočty s plovoucí desetinnou čárkou místo celých čísel. Pro celočíselné dělení byl navržen nový operátor "//". Staré chování lze obnovit nastavením "SET integer_division=true;".
- Metoda zohlednění nulových záznamů při třídění byla změněna z "NULLS FIRST" na "NULLS LAST", tj. hodnoty NULL budou nyní vypsány na konci seznamu, nikoli na začátku. Staré chování lze obnovit nastavením "SET default_null_order='nulls_first';".
Dále lze zmínit rozvíjený projekt společnosti Facebook CG/SQL, který poskytuje generátor kódu pro použití uložených procedur se SQLite. CG/SQL umožňuje formulovat uložené procedury ve speciálním dialektu T-SQL (Transact-SQL), který umožňuje volání funkcí standardní knihovny C a přístup k datům v SQLite. Vytvořené uložené procedury se kompilují do kódu v jazyce C, který využívá SQLite C API k vykonávání určených akcí a zpracovávání složitých dotazů. Zkompilované uložené procedury mohou být připojeny k programům v jazycích C, Java a Objective-C. Kód projektu je napsán v jazyce C a je distribuován pod licencí MIT.
Zdroj: opennet.ru
