Efter seks års udvikling er version 1.0 af database-systemet DuckDB lanceret, som præsenteres som et alternativ til SQLite til analytiske forespørgsler. DuckDB kombinerer egenskaberne fra SQLite, såsom kompakthed, mulighed for at integreres som et indlejet bibliotek, lagring af databaser i en enkelt fil og et brugervenligt CLI-interface, med værktøjer og optimeringer til at udføre analytiske forespørgsler, der dækker en betydelig del af de gemte data, som for eksempel aggregatorer af hele indholdet i tabeller eller sammensmeltning af flere store tabeller. Projektets kode er skrevet i C++ og distribueres under MIT-licensen.
Version 1.0 er markeret som den første stabile udgivelse af projektet, hvor hovedfokus under forberedelsen har været på at øge stabiliteten snarere end at tilføje funktionalitet. I den nye version er formatet for lagring af data også blevet fastlagt, som fra og med den tidligere udgivelse vil sikre bagudkompatibilitet. I fremtidige udgivelser har udviklerne til hensigt omhyggeligt at tilføje nye funktionaliteter, sørge for at bevare kompatibiliteten mellem udgivelserne, samt stabilisere SQL-dialekten og C API. Hvis der i fremtiden er behov for ændringer i SQL-semantikken, vil udviklerne på forhånd offentliggøre advarsler om de kommende ændringer og give alternative løsninger for at bevare funktionaliteten af den eksisterende kode.
DuckDB understøtter en udvidet dialekt af SQL, som inkluderer yderligere funktionaliteter til behandling af meget komplekse og tidskrævende forespørgsler. For eksempel er det muligt at bruge komplekse datatyper (arrays, strukturer, unioner) samt udføre vilkårlige og indlejrede korrelerede underforespørgsler. Flere forespørgsler kan udføres samtidig, og forespørgsler kan køres direkte fra filer i CSV- og Parquet-format. Der er også understøttelse af import fra databasesystemet PostgreSQL.
Udover SQLite-shell-koden anvender projektet en separat bibliotek-parser fra PostgreSQL, komponenten Date Math fra MonetDB, sin egen implementering af vinduesfunktioner (basi i Segment Tree Aggregation-algoritmen), en regulær udtryksbehandler baseret på biblioteket RE2, en egen forespørgselsoptimerer, MVCC-mekanismen til kontrol af samtidige opgaver (Multi-Version Concurrency Control), samt en vektoriseret forespørgselsudførelsesmotor baseret på Hyper-Pipelining Query Execution-algoritmen, der muliggør samtidig behandling af store værdimængder i én operation.
Kilde: opennet.ru
