DuckDB 0.6.0 publicēta, SQLite opcija analītiskajiem vaicājumiem

Ir pieejams DuckDB 0.6.0 DBVS izlaidums, kas apvieno tādas SQLite īpašības kā kompaktums, iespēja izveidot savienojumu iegultas bibliotēkas veidā, datu bāzes glabāšana vienā failā un ērts CLI interfeiss, ar rīkiem un optimizācijām izpildei. analītiskie vaicājumi, kas aptver ievērojamu daļu saglabāto datu, piemēram, kas apkopo visu tabulu saturu vai apvieno vairākas lielas tabulas. Projekta kods tiek izplatīts saskaņā ar MIT licenci. Izstrāde joprojām ir eksperimentālo izlaidumu veidošanas stadijā, jo uzglabāšanas formāts vēl nav stabilizējies un mainās no versijas uz versiju.

DuckDB nodrošina uzlabotu SQL dialektu, kas ietver papildu iespējas ļoti sarežģītu un laikietilpīgu vaicājumu apstrādei. Tiek atbalstīta sarežģītu tipu (masīvu, struktūru, apvienību) izmantošana un iespēja izpildīt patvaļīgus un ligzdotus korelējošus apakšvaicājumus. Tā atbalsta vairāku vaicājumu vienlaicīgu izpildi, izpildot vaicājumus tieši no CSV un Parquet failiem. Ir iespējams importēt no PostgreSQL DBVS.

Papildus čaulas kodam no SQLite projekts izmanto parsētāju no PostgreSQL atsevišķā bibliotēkā, Date Math komponentu no MonetDB, savu logu funkciju ieviešanu (pamatojoties uz Segment Tree Aggregation algoritmu), regulāro izteiksmju procesoru, kura pamatā ir RE2 bibliotēka, savs vaicājumu optimizētājs un MVCC vadības mehānisms vienlaicīgai uzdevumu izpildei (Multi-Version Concurrency Control), kā arī vektorizēts vaicājumu izpildes dzinējs, kura pamatā ir Hyper-Pipelining Query Execution algoritms, kas ļauj izmantot lielas vērtību kopas. jāapstrādā uzreiz vienā operācijā.

Starp izmaiņām jaunajā laidienā:

  • Turpinājās darbs, lai uzlabotu uzglabāšanas formātu. Ir ieviests optimistiskais diska rakstīšanas režīms, kurā vienā transakcijā ielādējot lielu datu kopu, dati tiek saspiesti un ierakstīti failā no datu bāzes straumēšanas režīmā, negaidot darījuma apstiprināšanu ar komandu COMMIT . Kad tiek saņemta komanda COMMIT, dati jau ir ierakstīti diskā, un, izpildot ROLLBACK, tie tiek atmesti. Iepriekš dati sākotnēji tika pilnībā saglabāti atmiņā, un, kad tie tika izdarīti, tie tika saglabāti diskā.
  • Pievienots atbalsts paralēlai datu ielādei atsevišķās tabulās, kas ļauj ievērojami palielināt ielādes ātrumu daudzkodolu sistēmās. Piemēram, iepriekšējā laidienā datubāzes ar 150 miljoniem rindu ielāde uz 10 kodolu CPU aizņēma 91 sekundi, bet jaunajā versijā šī darbība tiek pabeigta 17 sekundēs. Ir divi paralēli ielādes režīmi - ar ierakstu secības saglabāšanu un bez pasūtījuma saglabāšanas.
  • Datu saspiešanai tiek izmantots FSST (Fast Static Symbol Table) algoritms, kas ļauj iepakot datus virknēs, izmantojot parasto tipisko atbilstību vārdnīcu. Jaunā algoritma izmantošana ļāva samazināt testa datu bāzes izmēru no 761 MB uz 251 MB.
  • Ir ierosināti šimpanzes un Patas algoritmi, lai saspiestu peldošā komata skaitļus (DOUBLE un FLOAT). Salīdzinot ar iepriekšējo Gorillas algoritmu, Chimp nodrošina augstāku saspiešanas līmeni un ātrāku dekompresiju. Patas algoritms saspiešanas pakāpē atpaliek no Chimp, bet ir daudz ātrāks dekompresijas ātrumā, kas gandrīz neatšķiras no nesaspiestu datu lasīšanas.
  • Pievienota eksperimentāla iespēja ielādēt datus no CSV failiem vairākās paralēlās straumēs (SET experimental_parallel_csv=true), kas ievērojami samazina laiku, kas nepieciešams lielu CSV failu ielādei. Piemēram, kad šī opcija bija iespējota, 720 MB CSV faila lejupielādes laiks tika samazināts no 3.5 līdz 0.6 sekundēm.
  • Ir ieviesta iespēja paralēli veikt indeksa izveides un pārvaldības operācijas. Piemēram, darbība CREATE INDEX kolonnā ar 16 miljoniem ierakstu tika samazināta no 5.92 līdz 1.38 sekundēm.
  • Iespējota apkopošanas darbību paralēlizācija vaicājumos, kas satur izteiksmi “COUNT(DISTINCT col)”.
  • SQL ir pievienojis UNION tipa atbalstu, kas ļauj vienam elementam saistīt vairākus veidus (piemēram, “UNION(num INT, error VARCHAR)”).
  • SQL nodrošina iespēju veidot vaicājumus, kas sākas ar vārdu “FROM”, nevis “SELECT”. Šajā gadījumā tiek pieņemts, ka vaicājums sākas ar "SELECT *".
  • SQL ir pievienojis atbalstu izteiksmei COLUMNS, kas ļauj veikt darbību vairākās kolonnās, nedublējot izteiksmi. Piemēram, “SELECT MIN(COLUMNS(*)) from obs;” izraisīs funkcijas MIN izpildi katrai obs tabulas kolonnai un "SELECT COLUMNS('val[0-9]+') from obs;" kolonnām, kuru nosaukums sastāv no "val" un cipariem.
  • Pievienots atbalsts darbībām ar sarakstiem, piemēram, “SELECT [x + 1 for x in [1, 2, 3]] AS l;”.
  • Atmiņas patēriņš ir optimizēts. Pēc noklusējuma Linux platforma atmiņas pārvaldībai izmanto jemalloc bibliotēku. Ievērojami uzlabota jaukšanas sapludināšanas darbību veiktspēja, ja atmiņa ir ierobežota.
  • Komandrindas saskarnei ir pievienots izvades režīms “.mode duckbox”, kas atmet vidējās kolonnas, ņemot vērā termināļa loga platumu (piemērots, lai ātri vizuāli novērtētu vaicājumu rezultātus ar lielu kolonnu skaitu, piemēram, “SELECT * NO tbl”, kas parastajā režīmā ir sadalīti vairākās rindās). Izmantojot parametru “.maxrows X”, varat papildus ierobežot parādīto rindu skaitu.
  • CLI nodrošina ievades automātisko pabeigšanu, ņemot vērā kontekstu (tiek pabeigta atslēgvārdu, tabulu nosaukumu, funkciju, kolonnu nosaukumu un failu nosaukumu ievade).
  • CLI pēc noklusējuma ir iespējots vaicājuma norises indikators.

Avots: opennet.ru

Pievieno komentāru