È stata presentata la versione del DBMS DuckDB 0.10.0, che combina le caratteristiche di SQLite, come compattezza, possibilità di integrazione come libreria embeddable, archiviazione del database in un unico file e un'interfaccia CLI user-friendly, con strumenti e ottimizzazioni per eseguire query analitiche che coprono una significativa parte dei dati memorizzati, ad esempio aggregando tutto il contenuto delle tabelle o unendo diverse grandi tabelle. Il codice del progetto è distribuito sotto licenza MIT. Lo sviluppo è attualmente in fase di formazione di versioni sperimentali, poiché il formato di archiviazione non è ancora stabilizzato e cambia da una versione all'altra.
DuckDB offre un'estensione del linguaggio SQL, includendo funzionalità aggiuntive per l'elaborazione di query molto complesse e a lungo termine. È supportato l'uso di tipi complessi (array, strutture, unioni) e la possibilità di eseguire sottoquery correlate arbitrarie e nidificate. È consentito l'esecuzione simultanea di più query, l'esecuzione di query direttamente da file in formato CSV e Parquet. È disponibile la possibilità di importare da DBMS PostgreSQL.
Oltre al codice shell di SQLite, il progetto utilizza un parser estratto in una libreria separata 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, il meccanismo MVCC per la gestione della concorrenza (Multi-Version Concurrency Control), e anche un motore di esecuzione delle query vettorizzato basato sull'algoritmo Hyper-Pipelining Query Execution, che consente di elaborare grandi insiemi di valori in un'unica operazione.
Tra le novità del nuovo rilascio:
- È stata significativamente aumentata la velocità di analisi dei dati nel formato CSV. Ad esempio, la lettura di un file CSV con 11 milioni di righe nella nuova versione è passata da 2,6 secondi a 1,15 secondi, mentre l'esecuzione dell'operazione "SELECT COUNT(*)" su un file CSV è passata da 1,8 secondi a 0,3 secondi.
- È stato aggiunto il supporto per array di dimensioni fisse, simili a liste con un numero fisso di elementi ("CREATE TABLE vectors(v DOUBLE[3]);").
- È stato aggiunto il supporto per la connessione ai DBMS MySQL, PostgreSQL e SQLite, che consente di caricare i dati da DBMS esterni in DuckDB e di trasferirli tra diversi sistemi. L'accesso ai database esterni avviene utilizzando tabelle di esempio. ATTACH 'postgres:dbname=postgresscanner' AS postgres; SELECT title, release_year, length FROM postgres.film LIMIT 5;
- È stato aggiunto il supporto per l'espressione "COMMENT ON" per salvare un commento su un oggetto nel database.
- È stato aggiunto il supporto per l'espressione "COPY FROM DATABASE" per copiare tutto il contenuto da un database a un altro.
- È stato aggiunto il supporto per il modificatore "ALL" nelle espressioni EXCEPT e INTERSECT.
- È stato implementato il tipo »
Fonte: opennet.ru
