Llançament de DBMS SQLite 3.42 i DuckDB 0.8.0. CG/SQL amb implementació de procediments emmagatzemats per a SQLite

S'ha publicat el llançament de SQLite 3.42, un SGBD lleuger dissenyat com a biblioteca de complements. El codi SQLite es distribueix en el domini públic, és a dir. es pot utilitzar sense restriccions i de forma gratuïta per a qualsevol propòsit. El suport financer per als desenvolupadors de SQLite és proporcionat per un consorci creat especialment, que inclou empreses com Adobe, Oracle, Mozilla, Bentley i Bloomberg.

Principals canvis:

  • Per als índexs de text complet FTS5, s'implementa l'ordre de supressió segura, que neteja completament totes les dades residuals després de la supressió.
  • Les funcions per processar dades en format JSON ara admeten extensions JSON5.
  • Planificador de consultes millorat. L'optimització del recompte de visualitzacions està activada de manera predeterminada. S'ha eliminat el maneig de columnes no utilitzades a les subconsultes. Implementació d'optimització push-down millorada.
  • S'ha afegit l'opció "--unsafe-testing" a la CLI per permetre que algunes ordres perilloses com ara ".testctrl" s'utilitzin a les proves. En mode segur ("--safe"), es permeten les ordres ".log on" i ".log off". S'ha afegit suport per al separador "—", per als arguments després dels quals el processament d'opcions està desactivat. S'han afegit paràmetres ":inf" i ":nan" associats als valors d'infinit i NaN.
  • Els noms de les funcions SQL definides per l'aplicació es permeten tallar-se amb les paraules clau CROSS, FULL, INNER, LEFT, NATURAL, OUTER i RIGHT.
  • Capacitats de PRAGMA integrity_check ampliades. S'ha afegit una comprovació per especificar el valor NaN en columnes amb la condició NOT NULL. Millora del contingut d'informació dels missatges d'error.
  • L'addició de la sessió permet la intercepció de canvis de taules sense ROWID.
  • S'ha afegit el modificador "subsegons" a les funcions per treballar amb temps i dates per utilitzar fraccions de segons.
  • S'ha reduït la profunditat de recursivitat predeterminada per a matrius i objectes JSON de 2000 a 1000.

A més, s'ha format la versió DBMS DuckDB 0.8.0, que desenvolupa la variant SQLite, millorada amb funcions i optimitzacions per realitzar consultes analítiques que cobreixen una part important de les dades emmagatzemades, per exemple, agregar tot el contingut de les taules o fusionar diverses taules grans. Es proporciona un dialecte estès del llenguatge SQL, que inclou capacitats addicionals per gestionar consultes molt complexes i de llarga durada, així com suport per a tipus complexos (matrius, estructures, unions), execució simultània de consultes múltiples i execució de consultes directament des de fitxers en format CSV, JSON i Parquet. És possible importar des del SGBD PostgreSQL.

A més del codi shell de SQLite, el projecte utilitza un analitzador de PostgreSQL, un component Date Math de MonetDB, la seva pròpia implementació de funcions de finestra (basades en l'algoritme d'agregació d'arbres de segments), un processador d'expressions regulars basat en la biblioteca RE2, el seu propi optimitzador de consultes, un mecanisme MVCC per gestionar l'execució simultània de tasques i un motor de consulta basat en tasques (Conulti-Version) pelining Query Execut algorisme, que us permet processar grans conjunts de valors alhora en una operació. El codi del projecte es distribueix sota la llicència MIT.

A la nova versió de DuckDB:

  • S'han afegit noves expressions "PIVOT" i "UNPIVOT" per transformar files en columnes i viceversa.
  • Paral·lelització millorada en importar i exportar dades. De manera predeterminada, la lectura dels fitxers en format CSV en diversos fluxos i l'escriptura multifil s'implementen quan s'utilitzen els formats Parquet, CSV i JSON.
  • S'ha afegit l'operador "**" per iterar de manera recursiva sobre els directoris quan es defineixen les rutes dels fitxers (per exemple, DES de "'data/glob/crawl/stackoverflow/**/*.csv';").
  • S'ha afegit suport per a operacions de fusió (JOIN) per a dades en forma de sèrie temporal (parts de valors de paràmetres a intervals de temps especificats), en què el criteri per combinar registres no és una coincidència exacta, sinó aproximada dels valors d'un camp amb el temps (per exemple, podeu combinar registres el temps dels quals no difereix més d'1 minut).
  • S'ha implementat la càrrega diferida de metadades de la base de dades, fet que va permetre accelerar deu vegades el llançament del SGBD.
  • S'ha afegit suport per connectar funcions personalitzades a Python.
  • S'ha afegit suport per a l'API ADBC ​​(Arrow Database Connectivity) per a la transferència de dades mitjançant Apache Arrow.
  • S'ha implementat l'enllaç per a la integració amb el codi Swift.
  • S'ha canviat el comportament de l'operador de divisió ("/"), que ara realitza càlculs de coma flotant de manera predeterminada en lloc d'operacions amb nombres enters. S'ha proposat un nou operador "//" per a la divisió sencer. El comportament antic es pot tornar configurant "SET integer_division=true;".
  • El mètode de comptabilització dels registres nuls en ordenar s'ha canviat de "NULLS FIRST" a "NULLS LAST", és a dir. Els valors NULL es mostraran ara al final en lloc del principi de la llista. El comportament antic es pot restaurar amb la configuració "SET default_null_order='nulls_first';".

A més, es pot destacar el projecte CG/SQL desenvolupat per Facebook, que proporciona un generador de codi per utilitzar procediments emmagatzemats amb SQLite. CG/SQL us permet escriure procediments emmagatzemats en un dialecte especial de T-SQL (Transact-SQL), que us permet cridar les funcions de la biblioteca C estàndard i accedir a les dades a SQLite. Els procediments emmagatzemats generats es compilen en codi C que utilitza l'API SQLite C per realitzar accions especificades i processar consultes complexes. Els procediments emmagatzemats compilats es poden enllaçar amb programes C, Java i Objective-C. El codi del projecte està escrit en C i distribuït sota la llicència MIT.

Font: opennet.ru

Afegeix comentari