DuckDB 0.6.0 on avaldatud, variant SQLite analüütiliste päringute jaoks.

DuckDB 0.6.0 versioon on nüüd saadaval. See ühendab SQLite omadused, nagu kompaktne suurus, sisseehitatud teegi kaudu ühendamise võimalus, andmebaasi salvestamine ühte faili ja mugav CLI-liides, koos tööriistade ja optimeeringutega analüütiliste päringute täitmiseks, ulatudes suurtesse andmehulkadesse, näiteks kogu tabeli sisu agregatsiooni või mitme suure tabeli ühinemise täitmiseks. Projekti kood on vabastatud MIT litsentsi alusel. Arendamine on praegu katsetamisfaasis, kuna salvestusformaat ei ole veel stabiliseeritud ja muutub versioonide lõikes.

DuckDB pakub laienenud SQL keele dialekti, mis sisaldab täiendavaid võimalusi väga keeruliste ja pikaajaliste päringute töötlemiseks. Toetatakse keeruliste tüüpide (massivid, struktuurid, ühendused) kasutamist ning võimalust teostada suvalisi ja pesastatud korreleerivaid alampäringuid. Samuti toetatakse mitme päringu samaaegset täitmist, päringute otse teostamist CSV ja Parquet formaadis failidest ning andmete importimist PostgreSQL andmebaasidest.

Lisaks SQLite koodile kasutatakse projektis eraldi raamatukogusse välja viidud PostgreSQLi parserit, MonetDB Date Math komponenti, oma akna funktsioonide teostust (Segment Tree Aggregation alusel), regulaaravaldiste töötlejat, mis põhineb RE2 raamatukogul, enda päringute optimeerijat, MVCC-mehhanismi (Multi-Version Concurrency Control) samade ülesannete täitmise juhtimiseks ning vektoreeritud päringute täitmise mootori, mis põhineb Hyper-Pipelining Query Execution algoritmil, võimaldades ühes operatsioonis korraga töödelda suuri väärtuste kogusid.

Uue väljaande muudatused:

  • Töö andmehoidmisse formaadi täiustamise nimel jätkub. Rakendatud on optimistlik ketta kirjutamise režiim, kus suurte andmehulkade laadimisel ühes tehingus andmed kokku surutakse ja voogedastatakse andmebaasi faili, ootamata tehingu kinnitamise käsu COMMIT täitmist. COMMIT käsu saamisel on andmed juba kettale kirjutatud ja ROLLBACK'i täitmisel tõugatakse need tagasi. Varem säilitati andmed kõigepealt täielikult mälus ja kirjutati kettale alles pärast kinnitamist.
  • Lisatud on tugi andmete paralleelsele laadimisele eraldi tabelitesse, mis võimaldab märkimisväärselt kiirendada laadimist mitme tuumaga süsteemides. Näiteks eelmisel versioonil võttis 150 miljoni rea andmebaasi laadimine 10-tuumalise CPU-ga 91 sekundit, samas kui uues versioonis täidetakse see operatsioon 17 sekundiga. Pakutakse kahte paralleelse laadimise režiimi - järjestuse säilitamisega ja ilma järjestuse säilitamiseta.
  • Andmete kokkusurutamiseks kasutatakse FSST (Fast Static Symbol Table) algoritmi, mis võimaldab andmeid ridade sees kokku pakkida, kasutades tavalist malli. Uue algoritmi rakendamine on võimaldanud vähendada proovandmebaasi suurust 761 MB-lt 251 MB-le.
  • Ujuvate punktide (DOUBLE ja FLOAT) kokkusurumiseks on välja pakkutud algoritmid Chimp ja Patas. Võrreldes varasemalt kasutatud Gorillas algoritmiga pakub Chimp kõrgemat kokkusurutuse taset ja kiiremat lahtipakkimist. Algoritm Patas jääb Chimpile kokkusurutuse taseme poolest alla, kuid on lahtipakkimisel märgatavalt kiirem, pealegi on selle kiirus peaaegu sama mis kokkusurumata andmete lugemisel.
  • Lisatud on katsetusvõimalus andmete laadimiseks CSV-failidest mitme paralleelse vooge (SET experimental_parallel_csv=true), mis vähendab oluliselt suurte CSV-failide laadimise aega. Näiteks, kui funktsioon on aktiivne, vähenes 720 MB suuruse CSV-faili laadimisaeg 3,5 sekundilt 0,6 sekundile.
  • Rakendatud on võimalus paralleelseks toiminguteks indeksite loomisel ja haldamisel. Näiteks, CREATE INDEX toimingu teostamine veerule, kus on 16 miljonit kirjet, vähenes 5,92 sekundilt 1,38 sekundile.
  • Küsimustes, mis sisaldavad väljendit „COUNT(DISTINCT col)”, on tagatud operatsioonide paralleelne töötlemine.
  • SQL-is on lisatud UNION-tüübi tugi, mis võimaldab siduda ühe elemendiga mitut tüüpi (näiteks „UNION(num INT, error VARCHAR)”).
  • SQL-is on võimaldatud päringute loomine sõna „FROM” alustamisega, mitte „SELECT”. Sellisel juhul eeldatakse, et päring algab „SELECT *”.
  • SQL-is on lisatud COLUMNS-väljendi tugi, mis võimaldab teostada operatsioon mitmete veergude üle ilma väljendi dubleerimise vajaduseta. Näiteks „SELECT MIN(COLUMNS(*)) from obs;” viib funktsiooni MIN täitmiseni iga veeru jaoks tabelis obs, ja „SELECT COLUMNS(‘val[0-9]+’) from obs;” veergude jaoks, mille nimed koosnevad „val” ja numbritest.
  • On lisatud toimetamisoperatsioonid loendite üle, näiteks „SELECT [x + 1 for x in [1, 2, 3]] AS l;”.
  • Mälu kasutuse optimeerimine on läbi viidud. Vaikimisi kasutab Linuxi platvorm mälu haldamiseks jemalloc teeki. Hashi ühendamisoperatsioonide jõudlus on märgatavalt paranenud, kui mälu suurus on piiratud.
  • Käsurežiimis on lisatud "dugbox" väljundirežiim, mis eemaldab keskmised veerud, arvestades terminali akna laiust (sobib kiireks visuaalseks hindamiseks päringute tulemusi, kus on palju veerge, nagu "SELECT * FROM tbl", mis muidu jaguneks mitmele reale). Parameetri "maxrows X" abil on samuti võimalik piirata väljundirea arvu.
  • CLI-s on tagatud konteksti alusel sisendi automaatne täiendamine (täiendatakse märksõnade, tabelite nimede, funktsioonide, veergude nimede ja failinimede sisestust).
  • CLI-s on vaikimisi sisse lülitatud päringu progressi indikaatori kuvamine.

Allikas: opennet.ru

Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid 🔥 Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster