A fost lansată versiunea SQLite 3.42, un sistem de gestionare a bazelor de date ușor, disponibil sub formă de bibliotecă de conectare. Codul SQLite este distribuit ca domeniu public, adică poate fi utilizat fără restricții și gratuit în orice scopuri. Suportul financiar pentru dezvoltatorii SQLite este asigurat de un consorțiu special creat, care include companii precum Adobe, Oracle, Mozilla, Bentley și Bloomberg.
Modificări principale:
- Pentru indexurile textuale complete FTS5, a fost implementat comanda secure-delete, care efectuează o curățare completă a tuturor datelor reziduale după ștergere.
- Funcțiile pentru procesarea datelor în format JSON au fost îmbunătățite, adăugând suport pentru extensiile JSON5.
- Planificatorul de interogări a fost îmbunătățit. Optimizarea „count-of-view” este activată din oficiu. A fost exclusă procesarea coloanelor neutilizate în subinterogări. Implementarea optimizării push-down a fost îmbunătățită.
- Interfața liniei de comandă a fost dotată cu opțiunea „--unsafe-testing”, care permite utilizarea unor comenzi periculoase, cum ar fi „.testctrl”, destinate testării. În modul sigur („--safe”), utilizarea comenzilor „.log on” și „.log off” este permisă. A fost adăugată suport pentru separatorul „--”, după care se dezactivează procesarea opțiunilor. Au fost adăugate parametrii „:inf” și „:nan”, legați de valorile infinit și NaN.
- În denumirile funcțiilor SQL definite la nivelul aplicației, este permisă intersecția cu cuvintele cheie CROSS, FULL, INNER, LEFT, NATURAL, OUTER și RIGHT.
- Funcțiile PRAGMA integrity_check au fost extinse. A fost adăugată verificarea indicării valorii NaN în coloanele cu condiția NOT NULL. Informațiile despre mesajele de eroare au fost îmbunătățite.
- În extensia session a fost permis interceptarea modificărilor din tabele fără ROWID.
- Funcția pentru lucrul cu timp și date a fost dotată cu modificatorul „subsec” pentru utilizarea fracțiunilor de secundă.
- Adâncimea recursivității pentru array-uri și obiecte JSON a fost redusă din 2000 la 1000.
În plus, a fost lansată versiunea 0.8.0 a SGBD-ului DuckDB, o variantă dezvoltată a SQLite, îmbunătățită cu funcționalități și optimizări pentru executarea interogărilor analitice care acoperă o parte semnificativă din datele stocate, de exemplu, realizarea agregării întregului conținut al tabelelor sau combinarea mai multor tabele mari. Este disponibil un dialect extins al limbajului SQL, care include funcționalități suplimentare pentru procesarea interogărilor foarte complexe și de lungă durată, susține tipuri complexe (array, structuri, unii), execuția simultană a mai multor interogări și executarea interogărilor direct din fișiere în format CSV, JSON și Parquet. Există posibilitatea de import din SGBD PostgreSQL.
Pe lângă codul shell-ului din SQLite, proiectul utilizează un parser separat 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, propriul optimizator de interogări, mecanismul MVCC de gestionare a execuției concurente (Multi-Version Concurrency Control), precum și un motor de execuție a interogărilor vectorizate bazat pe algoritmul Hyper-Pipelining Query Execution, care permite în cadrul unei operații procesarea rapidă a seturilor mari de valori. Codul proiectului este distribuit sub licența MIT.
În noua versiune DuckDB:
- Au fost adăugate noi expresii „PIVOT” și „UNPIVOT” pentru transformarea rândurilor în coloane și invers.
- A fost îmbunătățită paralelizarea la importul și exportul de date. În mod implicit, citirea din fișiere în format CSV se realizează în mai multe fire de execuție, iar scrierea pe mai multe fire de execuție este implementată la utilizarea formatelor Parquet, CSV și JSON.
- A fost adăugat operatorul „**” pentru parcurgeriRecursive ale directorilor la definirea căilor de fișiere (de exemplu, FROM ‘data/glob/crawl/stackoverflow/**/*.csv’;).
- A fost adăugată suportul pentru operațiunile de îmbinare (JOIN) pentru datele sub formă de serii temporale (reduceri ale valorilor parametrilor la intervale de timp specificate), în care ca criteriu pentru îmbinarea înregistrărilor este utilizată o potrivire aproximativă, nu exactă, a valorilor din câmpul temporal (de exemplu, se pot combina înregistrări ale căror momente diferă cu cel mult 1 minut).
- A fost implementat încărcarea întârziată a metadatelor bazei de date, ceea ce a permis accelerarea de zeci de ori a pornirii SGBD-ului.
- A fost adăugat suport pentru conectarea funcțiilor personalizate în limbajul Python.
- A fost adăugat suport pentru API ADBC (Arrow Database Connectivity) pentru transferul de date folosind Apache Arrow.
- A fost implementată o legătură pentru integrarea cu codul scris în Swift.
- Comportamentul operatorului de împărțire („/”) a fost modificat, acesta executând acum, în mod implicit, calcule cu virgulă mobilă în loc de operațiuni cu numere întregi. Un nou operator „//” a fost propus pentru împărțirea întreagă. Comportamentul vechi poate fi restaurat cu setarea „SET integer_division=true;”.
- Metoda de gestionare a valorilor nule în sortare a fost schimbată din „NULLS FIRST” în „NULLS LAST”, adică valorile NULL vor apărea acum la sfârșitul listei, nu la început. Comportamentul vechi poate fi restaurat cu setarea „SET default_null_order='nulls_first';”.
În plus, se poate menționa proiectul CG/SQL, dezvoltat de compania Facebook, care oferă un generator de cod pentru utilizarea procedurilor stocate cu SQLite. CG/SQL permite definirea procedurilor stocate într-un dialect special T-SQL (Transact-SQL), care permite apelul funcțiilor din biblioteca standard C și accesul la date în SQLite. Procedurile stocate generate sunt compilate în cod C, utilizând SQLite C API pentru a executa acțiuni specifice și a procesa interogări complexe. Procedurile stocate compilate pot fi integrate în programe scrise în limbaje precum C, Java și Objective-C. Codul proiectului este scris în limbajul C și este distribuit sub licența MIT.
Sursa: opennet.ro
