Release of the SQLite 3.42 and DuckDB 0.8.0 databases with implemented stored procedures for SQLite.

È stata pubblicata la versione 3.42 di SQLite, un database leggero fornito come libreria plug-in. Il codice di SQLite è distribuito come pubblica proprietà (public domain), ovvero può essere utilizzato senza restrizioni e senza costi per qualsiasi scopo. Il supporto finanziario per gli sviluppatori di SQLite è fornito da un consorzio creato appositamente, che include aziende come Adobe, Oracle, Mozilla, Bentley e Bloomberg.

Principali modifiche:

  • Per gli indici full-text FTS5 è stato implementato il comando secure-delete, che esegue una completa pulizia di tutti i dati residui dopo l'eliminazione.
  • Nelle funzioni per la gestione dei dati in formato JSON è stato implementato il supporto per le estensioni JSON5.
  • È stato migliorato il pianificatore delle query. L'ottimizzazione «count-of-view» è attivata di default. È stata esclusa la gestione delle colonne inutilizzate nelle sottoquery. È stata migliorata l'implementazione dell'ottimizzazione push-down.
  • È stata aggiunta all'interfaccia della riga di comando l'opzione «—unsafe-testing», che consente di utilizzare alcuni comandi pericolosi, come «.testctrl», destinati all'uso durante i test. In modalità sicura («—safe») è consentito l'uso dei comandi «.log on» e «.log off». È stato aggiunto il supporto per il delimitatore «—«, il quale disabilita l'elaborazione delle opzioni per gli argomenti che lo seguono. Sono stati introdotti i parametri «:inf» e «:nan», relativi ai valori di infinito e NaN.
  • Nei nomi delle funzioni SQL definite lato applicazione è consentita l'intersezione con le parole chiave CROSS, FULL, INNER, LEFT, NATURAL, OUTER e RIGHT.
  • Ampliate le funzionalità di PRAGMA integrity_check. Aggiunta la verifica dell'assegnazione di un valore NaN nelle colonne con la condizione NOT NULL. Migliorate le informazioni nei messaggi di errore.
  • Nell'aggiunta session è consentito l'intercettamento delle modifiche dalle tabelle senza ROWID.
  • Nella funzione per la gestione del tempo e delle date è stato aggiunto il modificatore «subsec» per utilizzare le frazioni di secondo.
  • La profondità di ricorsione per array e oggetti JSON è stata ridotta da 2000 a 1000 per impostazione predefinita.

Inoltre, è stata rilasciata la versione 0.8.0 di DuckDB, una variante di SQLite potenziata con funzionalità e ottimizzazioni per eseguire query analitiche che coprono una sostanziale parte dei dati memorizzati, ad esempio, aggregando tutto il contenuto delle tabelle o unendo più grandi tabelle. È fornito un dialetto esteso del linguaggio SQL che include funzionalità aggiuntive per gestire query molto complesse e a lungo termine, 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 database PostgreSQL.

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

Nella nuova versione di DuckDB:

  • Sono state aggiunte nuove espressioni «PIVOT» e «UNPIVOT» per trasformare righe in colonne e viceversa.
  • Migliorata la parallelizzazione durante l'importazione e l'esportazione dei dati. È implementata per impostazione predefinita la lettura dei file in formato CSV in più thread e la scrittura multithreading utilizzando i formati Parquet, CSV e JSON.
  • È stato aggiunto l'operatore «**» per la ricerca ricorsiva delle directory durante la definizione dei percorsi dei file (ad esempio, FROM «‘data/glob/crawl/stackoverflow/**/*.csv’;».
  • Aggiunto il supporto per le operazioni di unione (JOIN) per i dati in forma di serie temporali (slice di valori ai dati temporali), in cui il criterio di unione delle righe si basa su corrispondenze approssimative dei valori nel campo temporale (ad esempio, è possibile unire righe i cui timestamp differiscono di non più di 1 minuto).
  • Implementata la caricamento ritardato dei metadati del database, che ha permesso di accelerare di decine di volte l'avvio del database.
  • Aggiunto il supporto per la connessione delle funzioni personalizzate in Python.
  • Aggiunto il supporto per l'API ADBC (Arrow Database Connectivity) per il trasferimento dei dati utilizzando Apache Arrow.
  • Realizzata la bind per l'integrazione con il codice Swift.
  • Comportamento dell'operatore di divisione («/») è stato cambiato, ora esegue per default calcoli con numeri in virgola mobile anziché operazioni intere. Per la divisione intera è stato proposto un nuovo operatore «//». Il comportamento precedente può essere ripristinato impostando «SET integer_division=true;».
  • Il metodo di gestione dei valori nulli durante l'ordinamento è stato modificato da «NULLS FIRST» a «NULLS LAST», quindi i valori NULL verranno visualizzati alla fine dell'elenco anziché all'inizio. Il comportamento precedente può essere ripristinato impostando «SET default_null_order='nulls_first';».

In aggiunta, si può notare 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 scrivere procedure memorizzate in un dialetto speciale di T-SQL (Transact-SQL), che permette di chiamare funzioni della libreria standard C e di accedere ai dati in SQLite. Le procedure memorizzate create vengono compilate in codice C, che utilizza l'API C di SQLite per eseguire le azioni richieste 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 e distribuito con licenza MIT.

Fonte: opennet.ru

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