Rilascio di DBMS SQLite 3.42 e DuckDB 0.8.0. CG/SQL con implementazione di stored procedure per SQLite

È stata pubblicata la versione di SQLite 3.42, un DBMS leggero progettato come libreria plug-in. Il codice SQLite è distribuito nel pubblico dominio, cioè può essere utilizzato senza restrizioni e gratuitamente per qualsiasi scopo. Il supporto finanziario per gli sviluppatori SQLite è fornito da un consorzio appositamente creato, che comprende aziende come Adobe, Oracle, Mozilla, Bentley e Bloomberg.

Principali modifiche:

  • Per gli indici full-text FTS5 è stato implementato il comando secure-delete che cancella completamente tutti i dati residui dopo la cancellazione.
  • Le funzioni per l'elaborazione dei dati JSON ora supportano le estensioni JSON5.
  • Pianificatore di query migliorato. Per impostazione predefinita, l'ottimizzazione del conteggio delle visualizzazioni è abilitata. L'elaborazione delle colonne inutilizzate nelle sottoquery viene eliminata. Implementazione migliorata dell'ottimizzazione pushdown.
  • Aggiunta l'opzione "--unsafe-testing" all'interfaccia della riga di comando, che consente l'uso di alcuni comandi pericolosi, come ".testctrl", destinati all'uso nei test. In modalità provvisoria (“-safe”) è consentito l'uso dei comandi “.log on” e “.log off”. Aggiunto il supporto per il delimitatore "-", per gli argomenti dopo i quali l'elaborazione delle opzioni è disabilitata. Aggiunti parametri ":inf" e ":nan" associati ai valori infinito e NaN.
  • I nomi delle funzioni SQL definite dall'applicazione consentono l'intersezione con le parole chiave CROSS, FULL, INNER, LEFT, NATURAL, OUTER e RIGHT.
  • Le funzionalità di PRAGMA Integrity_Check sono state ampliate. Aggiunto il controllo per specificare i valori NaN nelle colonne con la condizione NOT NULL. Miglioramento del contenuto informativo dei messaggi di errore.
  • Il componente aggiuntivo della sessione consente di intercettare le modifiche dalle tabelle senza ROWID.
  • Il modificatore "subsec" è stato aggiunto alle funzioni per lavorare con ore e date per utilizzare le frazioni di secondo.
  • La profondità di ricorsione predefinita per array e oggetti JSON è stata ridotta da 2000 a 1000.

Inoltre, è stato realizzato il rilascio del DBMS DuckDB 0.8.0 che sviluppa una versione di SQLite, ampliata con funzionalità e ottimizzazioni per l'esecuzione di query analitiche che coprono una parte significativa dei dati archiviati, effettuando ad esempio l'aggregazione dell'intero contenuto di tabelle o unire diverse tabelle di grandi dimensioni. Fornisce un dialetto SQL avanzato che include funzionalità aggiuntive per l'elaborazione di query molto complesse e dispendiose in termini di tempo e supporta anche tipi complessi (array, strutture, unioni), esecuzione di più query contemporaneamente ed esecuzione di query direttamente da file CSV, JSON e Parquet . È possibile importare dal DBMS PostgreSQL.

Oltre al codice shell di SQLite, il progetto utilizza un parser di PostgreSQL in una libreria separata, il componente Date Math di MonetDB, la propria implementazione di funzioni finestra (basata sull'algoritmo Segment Tree Aggregation), un processore di espressioni regolari basato su la libreria RE2, il proprio ottimizzatore di query e un meccanismo di controllo MVCC per l'esecuzione simultanea di attività (Multi-Version Concurrency Control), nonché un motore di esecuzione di query vettorizzato basato sull'algoritmo Hyper-Pipelining Query Execution, che consente grandi insiemi di valori da elaborare contemporaneamente in un'unica operazione. Il codice del progetto è distribuito sotto la licenza MIT.

Nella nuova versione di DuckDB:

  • Aggiunte nuove espressioni "PIVOT" e "UNPIVOT" per trasformare righe in colonne e viceversa.
  • Parallelizzazione migliorata durante l'importazione e l'esportazione dei dati. Per impostazione predefinita, la lettura multi-thread dai file CSV e la scrittura multi-thread sono implementate quando si utilizzano i formati Parquet, CSV e JSON.
  • Aggiunto l'operatore "**" per scorrere ricorsivamente le directory durante la determinazione dei percorsi dei file (ad esempio, FROM "'data/glob/crawl/stackoverflow/**/*.csv';").
  • Aggiunto il supporto per le operazioni di fusione (JOIN) per dati sotto forma di serie temporali (sezioni di valori di parametri a intervalli di tempo specificati), in cui il criterio per unire i record non è una coincidenza esatta, ma approssimativa di valori in un campo con l'ora (ad esempio, puoi unire record, orari che differiscono di non più di 1 minuto).
  • Implementato il caricamento lento dei metadati del database, che ha permesso di accelerare il lancio del DBMS di decine di volte.
  • Aggiunto supporto per la connessione di funzioni personalizzate in Python.
  • Aggiunto il supporto per l'API ADBC ​​(Arrow Database Connectivity) per il trasferimento dei dati utilizzando Apache Arrow.
  • È stata implementata un'associazione per l'integrazione con il codice Swift.
  • Modificato il comportamento dell'operatore di divisione ("/") per eseguire calcoli in virgola mobile anziché operazioni su numeri interi per impostazione predefinita. Viene proposto un nuovo operatore “//” per la divisione intera. Il vecchio comportamento può essere restituito impostando “SET integer_division=true;”.
  • Il metodo per prendere in considerazione i record zero durante l'ordinamento è stato modificato da "NULLS FIRST" a "NULLS LAST", ad es. I valori NULL verranno ora stampati alla fine anziché all'inizio dell'elenco. Il vecchio comportamento può essere restituito impostando “SET default_null_order='nulls_first';”.

Inoltre, ricordiamo il progetto CG/SQL sviluppato da Facebook, che fornisce un generatore di codice per utilizzare procedure memorizzate con SQLite. CG/SQL consente di scrivere procedure memorizzate in un dialetto speciale di T-SQL (Transact-SQL), che consente di chiamare funzioni della libreria C standard e accedere ai dati in SQLite. Le procedure memorizzate generate vengono compilate in codice C che utilizza l'API SQLite C per eseguire azioni specifiche ed elaborare query complesse. Le procedure memorizzate compilate possono essere connesse a programmi C, Java e Objective-C. Il codice del progetto è scritto in C ed è distribuito sotto licenza MIT.

Fonte: opennet.ru

Aggiungi un commento