De release van de database DuckDB 0.10.0 is gepresenteerd, die eigenschappen van SQLite combineert, zoals compactheid, de mogelijkheid om als ingebouwde bibliotheek te worden aangesloten, het opslaan van databases in één bestand en een gebruiksvriendelijke CLI-interface, met middelen en optimalisaties voor het uitvoeren van analytische queries die een aanzienlijk deel van de opgeslagen gegevens dekken, zoals het uitvoeren van aggregatie van alle inhoud van tabellen of het samenvoegen van meerdere grote tabellen. De code van het project wordt verspreid onder de MIT-licentie. De ontwikkeling bevindt zich nog in de experimentele fase, aangezien het opslagformaat nog niet is gestabiliseerd en van versie tot versie verandert.
DuckDB biedt een uitgebreide SQL-taal die extra mogelijkheden bevat voor het verwerken van zeer complexe en langdurige queries. Ondersteuning voor complexe types (arrays, structuren, unions) en de mogelijkheid om willekeurige en geneste correlatie-subqueries uit te voeren, zijn inbegrepen. Meerdere queries kunnen gelijktijdig worden uitgevoerd, en queries kunnen direct vanuit bestanden in CSV- en Parquet-formaat worden uitgevoerd. Er is ook de mogelijkheid om te importeren vanuit PostgreSQL-databases.
Naast de shell-code van SQLite gebruikt het project een apart gemaakte parser van PostgreSQL, de Date Math-component van MonetDB, zijn eigen implementatie van vensterfuncties (op basis van het Segment Tree Aggregation-algoritme), een regex-verwerker gebaseerd op de RE2-bibliotheek, eigen query-optimalisatoren, een MVCC-mechanisme voor het beheren van gelijktijdige taakuitvoering (Multi-Version Concurrency Control), en een gevectoriseerde query-executiemotor op basis van het Hyper-Pipelining Query Execution-algoritme, waardoor grote sets waarden in één operatie efficiënt kunnen worden verwerkt.
Onder de veranderingen in de nieuwe release:
- De prestaties van het ontleden van gegevens in CSV-formaat zijn aanzienlijk verbeterd. Het lezen van een CSV-bestand met 11 miljoen regels is bijvoorbeeld verminderd van 2,6 seconden naar 1,15 seconden in de nieuwe versie, terwijl de uitvoering van de operatie 'SELECT COUNT(*)' bovenop het CSV-bestand is verminderd van 1,8 seconden naar 0,3 seconden.
- Ondersteuning voor arrays van vaste grootte is toegevoegd, die lijken op lijsten met een vast aantal elementen ('CREATE TABLE vectors(v DOUBLE[3]);').
- Ondersteuning is toegevoegd voor verbinding met databases zoals MySQL, PostgreSQL en SQLite, waardoor het mogelijk is om gegevens van externe databases in DuckDB te laden en te verplaatsen tussen verschillende systemen. Toegang tot externe databases gebeurt met behulp van sythetische tabellen. ATTACH ‘postgres:dbname=postgresscanner’ AS postgres; SELECT title, release_year, length FROM postgres.film LIMIT 5;
- Ondersteuning voor de expressie 'COMMENT ON' is toegevoegd voor het opslaan van opmerkingen over objecten in de database.
- Ondersteuning voor de expressie 'COPY FROM DATABASE' is toegevoegd voor het kopiëren van alle inhoud van de ene database naar een andere.
- Ondersteuning voor de modificator 'ALL' in de expressies EXCEPT en INTERSECT is toegevoegd.
- Het type is geïmplementeerd
Bron: opennet.ru
