È stato presentato il rilascio del DBMS DuckDB 0.10.0, che combina proprietà di SQLite come compattezza, possibilità di collegamento come libreria integrata, archiviazione del DB in un unico file e un'interfaccia CLI conveniente, con strumenti e ottimizzazioni per eseguire query analitiche che coprono una parte significativa dei dati memorizzati, ad esempio, eseguendo aggregazioni di tutto il contenuto delle tabelle o unendo più grandi tabelle. Il codice del progetto è distribuito sotto licenza MIT. Lo sviluppo è attualmente in fase di creazione di release sperimentali, poiché il formato di archiviazione non è ancora stabilizzato e cambia da una versione all'altra.
DuckDB offre un dialetto SQL esteso che include funzionalità aggiuntive per gestire query molto complesse e lunghe. Supporta l'utilizzo di tipi complessi (array, strutture, unioni) e la possibilità di eseguire sottoparole correlate arbitrarie e annidate. È possibile eseguire più query contemporaneamente, eseguire query direttamente da file in formato CSV e Parquet. È disponibile la funzione di importazione da database PostgreSQL.
Oltre al codice shell di SQLite, il progetto utilizza un parser estratto in una libreria a parte di PostgreSQL, il componente 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 proprietario, un meccanismo MVCC per la gestione della concorrenza nelle operazioni (Multi-Version Concurrency Control) e 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à della nuova versione:
- Le prestazioni di parsing dei dati in formato CSV sono state significativamente migliorate. 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 è scesa da 1,8 secondi a 0,3 secondi.
- Aggiunta la supporto per array di dimensioni fisse, simili a liste, contenenti un numero fisso di elementi («CREATE TABLE vectors(v DOUBLE[3]);»).
- Implementato il supporto per la connessione a database MySQL, PostgreSQL e SQLite, permettendo il caricamento di dati in DuckDB da database esterni e il loro spostamento tra sistemi diversi. L'accesso ai database esterni avviene tramite tabelle tipiche. ATTACH ‘postgres:dbname=postgresscanner’ AS postgres; SELECT title, release_year, length FROM postgres.film LIMIT 5;
- Aggiunto il supporto per l'espressione «COMMENT ON» per salvare un commento sull'oggetto nel database.
- Aggiunto il supporto per l'espressione «COPY FROM DATABASE» per copiare il contenuto intero da un database a un altro.
- Aggiunto il supporto per il modificatore «ALL» nelle espressioni EXCEPT e INTERSECT.
- Tipo realizzato »
Fonte: opennet.ru
