Pubblicazione del DBMS SQLite 3.42 e DuckDB 0.8.0. CG\/SQL con implementazione delle stored procedure per SQLite

È stato pubblicato il rilascio di SQLite 3.42, un DBMS leggero, fornito come libreria collegabile. Il codice di SQLite è distribuito come dominio pubblico, cioè può essere utilizzato senza restrizioni e gratuitamente per qualsiasi scopo. Il supporto finanziario per gli sviluppatori di SQLite è fornito da un consorzio appositamente costituito, che include aziende come Adobe, Oracle, Mozilla, Bentley e Bloomberg.

Variazioni principali:

  • Per gli indici full-text FTS5 è stata implementata il comando secure-delete, che esegue una pulizia completa di tutti i dati residui dopo la cancellazione.
  • Nelle funzioni per la gestione dei dati in formato JSON è stata implementata la supporto per le estensioni JSON5.
  • È stato migliorato il pianificatore delle query. Di default è attivata l'ottimizzazione "count-of-view". È stata esclusa l'elaborazione delle colonne non utilizzate nelle sottoquery. È stata migliorata l'implementazione dell'ottimizzazione push-down.
  • Nell'interfaccia della riga di comando è stata aggiunta l'opzione "—unsafe-testing", che consente di utilizzare alcuni comandi pericolosi, come ".testctrl", destinati a essere utilizzati durante i test. In modalità sicura ("—safe"), l'uso dei comandi ".log on" e ".log off" è consentito. È stato aggiunto il supporto per il delimitatore "—", dopo il quale viene disattivata l'elaborazione delle opzioni per gli argomenti. Sono stati aggiunti i parametri ":inf" e ":nan", relativi ai valori infinito e NaN.
  • Nei nomi delle funzioni SQL definite a livello applicativo è consentito l'incrocio con le parole chiave CROSS, FULL, INNER, LEFT, NATURAL, OUTER e RIGHT.
  • Le funzionalità di PRAGMA integrity_check sono state ampliate. È stata aggiunta la verifica della specifica del valore NaN nelle colonne con la condizione NOT NULL. È stata migliorata l'informatività dei messaggi di errore.
  • Nell'estensione session è stato consentito di intercettare le modifiche dalle tabelle senza ROWID.
  • Nella funzione per la gestione del tempo e delle date è stato aggiunto il modificatore "subsec" per l'utilizzo delle frazioni di secondo.
  • La profondità di ricorsione per gli array e gli oggetti JSON è stata ridotta di default da 2000 a 1000.

Inoltre, è stata rilasciata la versione 0.8.0 del DBMS DuckDB, un'estensione di SQLite, potenziata con funzionalità e ottimizzazioni per eseguire query analitiche su una parte significativa dei dati memorizzati, ad esempio per aggregare l'intero contenuto delle tabelle o per unire più grandi tabelle. Viene fornito un dialetto esteso di SQL, che include funzionalità aggiuntive per gestire query molto complesse e prolungate, supportando anche tipi complessi (array, strutture, unioni), l'esecuzione simultanea di più query e l'esecuzione di query direttamente da file in formato CSV, JSON e Parquet. È possibile importare da DBMS PostgreSQL.

Oltre al codice della shell di SQLite, il progetto utilizza un parser di PostgreSQL, separato in una libreria distinta, un componente di Date Math di MonetDB, una propria implementazione delle funzioni di finestra (basata sull'algoritmo Segment Tree Aggregation), un gestore di espressioni regolari basato sulla libreria RE2, un ottimizzatore di query proprietary, un meccanismo MVCC per la gestione della concorrenza (Controllo della Concorrenza Multi-Versione), e un motore di esecuzione delle query vettorializzato basato sull'algoritmo Hyper-Pipelining Query Execution, che consente di elaborare grandi set di valori in un'unica operazione. Il codice del progetto è distribuito con la licenza MIT.

Nella nuova versione di DuckDB:

  • Sono state aggiunte nuove espressioni «PIVOT» e «UNPIVOT» per trasformare le righe in colonne e viceversa.
  • Migliorato il parallelismo durante l'importazione e l'esportazione dei dati. Per impostazione predefinita, è implementata la lettura dei file in formato CSV in più thread e la scrittura multithread per l'uso dei formati Parquet, CSV e JSON.
  • È stato aggiunto l'operatore «**» per la ricerca ricorsiva di directory durante la definizione dei percorsi dei file (ad esempio, FROM «‘data/glob/crawl/stackoverflow/**/*.csv’;»).
  • È stato aggiunto il supporto per le operazioni di fusione (JOIN) per i dati sotto forma di serie temporali (fette di valori di parametri a intervalli di tempo specificati), nei quali il criterio di fusione dei record utilizza una corrispondenza non precisa, ma approssimativa dei valori nel campo tempo (ad esempio, è possibile unire i record il cui tempo differisce di non più di 1 minuto).
  • È stata implementata il caricamento ritardato dei metadati del DB, che ha consentito di accelerare il lancio del DBMS di decine di volte.
  • È stata aggiunta la supporto per il collegamento di funzioni personalizzate in Python.
  • È stato aggiunto il supporto per l'API ADBC (Arrow Database Connectivity) per la trasmissione dei dati utilizzando Apache Arrow.
  • È stata implementata una modalità di integrazione con il codice scritto in Swift.
  • È stato modificato il comportamento dell'operatore di divisione ("/") che ora esegue per impostazione predefinita calcoli in virgola mobile invece di operazioni intere. Un nuovo operatore "//" è stato introdotto per la divisione intera. Il comportamento precedente può essere ripristinato impostando "SET integer_division=true;".
  • Il metodo per gestire i record NULL durante l'ordinamento è cambiato da «NULLS FIRST» a «NULLS LAST», quindi i valori NULL verranno ora visualizzati alla fine anziché all'inizio dell'elenco. Il comportamento precedente può essere ripristinato impostando "SET default_null_order='nulls_first';".

Inoltre, si segnala il progetto CG/SQL sviluppato da Facebook, che fornisce un generatore di codice per l'uso di procedure memorizzate con SQLite. CG/SQL consente di definire procedure memorizzate in un dialetto speciale di T-SQL (Transact-SQL), che consente di chiamare funzioni della libreria standard C e di accedere ai dati in SQLite. Le procedure memorizzate create vengono compilate in codice C, utilizzando l'API C di SQLite per eseguire operazioni e gestire query complesse. Le procedure memorizzate compilate possono essere collegate a programmi scritti in C, Java e Objective-C. Il codice del progetto è scritto in C ed è distribuito con licenza MIT.

Fonte: opennet.ru

Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server 🔥 Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server | ProHoster