DuckDB 0.6.0 Julkaistu, SQLite-vaihtoehto analyyttisille kyselyille

Saatavilla on DuckDB 0.6.0 DBMS:n julkaisu, jossa yhdistyvät sellaiset SQLiten ominaisuudet kuin tiiviys, kyky muodostaa yhteys sulautetun kirjaston muodossa, tietokannan tallentaminen yhteen tiedostoon ja kätevä CLI-käyttöliittymä sekä työkalut ja optimoinnit suoritusta varten. analyyttiset kyselyt, jotka kattavat merkittävän osan tallennetusta tiedosta, esimerkiksi yhdistävät taulukoiden koko sisällön tai yhdistävät useita suuria taulukoita. Projektikoodia jaetaan MIT-lisenssillä. Kehitys on vielä kokeellisten julkaisujen muodostamisvaiheessa, koska tallennusmuotoa ei ole vielä vakiintunut ja se muuttuu versiosta toiseen.

DuckDB tarjoaa edistyneen SQL-murteen, joka sisältää lisäominaisuuksia erittäin monimutkaisten ja aikaa vievien kyselyiden käsittelyyn. Monimutkaisten tyyppien (taulukot, rakenteet, liitot) käyttöä ja kykyä suorittaa mielivaltaisia ​​ja sisäkkäisiä korreloivia alikyselyjä tuetaan. Se tukee useiden kyselyjen suorittamista samanaikaisesti, kyselyjen suorittamista suoraan CSV- ja Parquet-tiedostoista. On mahdollista tuoda PostgreSQL DBMS:stä.

Projektissa käytetään SQLiten shell-koodin lisäksi erillisessä kirjastossa olevaa PostgreSQL:n jäsentäjää, MonetDB:n Date Math -komponenttia, omaa ikkunatoimintojen toteutusta (perustuu Segment Tree Aggregation -algoritmiin), säännölliseen lausekkeeseen perustuvaa prosessoria. RE2-kirjasto, oma kyselyn optimoija ja MVCC-ohjausmekanismi tehtävien samanaikaiseen suorittamiseen (Multi-Version Concurrency Control) sekä vektorisoitu kyselyn suoritusmoottori, joka perustuu Hyper-Pipelining Query Execution -algoritmiin, joka mahdollistaa suuria arvojoukkoja käsitellä kerralla yhdessä toimenpiteessä.

Uuden julkaisun muutoksista:

  • Työ tallennusmuodon parantamiseksi jatkui. Optimistinen levykirjoitustila on toteutettu, jossa ladattaessa suuri joukko tietoja yhdellä tapahtumalla, tiedot pakataan ja kirjoitetaan tiedostoon tietokannasta suoratoistotilassa odottamatta tapahtuman vahvistusta COMMIT-komennolla. . Kun COMMIT-komento vastaanotetaan, tiedot on jo kirjoitettu levylle, ja kun ROLLBACK suoritetaan, se hylätään. Aiemmin tiedot tallennettiin kokonaan muistiin, ja kun se oli sitonut, ne tallennettiin levylle.
  • Lisätty tuki tietojen rinnakkaiselle lataamiselle erillisiin taulukoihin, mikä mahdollistaa merkittävästi lisäämisen latausnopeutta moniytimisissä järjestelmissä. Esimerkiksi edellisessä versiossa 150 miljoonan rivin tietokannan lataaminen 10-ytimiseen suorittimeen kesti 91 sekuntia, mutta uudessa versiossa tämä toiminto valmistuu 17 sekunnissa. On olemassa kaksi rinnakkaista lataustilaa - tietueiden järjestyksen säilyttämisellä ja ilman järjestyksen säilyttämistä.
  • Tietojen pakkaamiseen käytetään FSST (Fast Static Symbol Table) -algoritmia, jonka avulla voit pakata tietoja merkkijonojen sisään käyttämällä yleistä tyypillisten osumien sanakirjaa. Uuden algoritmin käyttö mahdollisti testitietokannan koon pienentämisen 761 megatavusta 251 megatavuun.
  • Simpanssi- ja Patas-algoritmeja on ehdotettu liukulukujen (DOUBLE ja FLOAT) pakkaamiseen. Edelliseen Gorillas-algoritmiin verrattuna Chimp tarjoaa korkeamman pakkaustason ja nopeamman purkamisen. Patas-algoritmi on jäljessä Chimpistä pakkaussuhteessa, mutta on paljon nopeampi purkunopeudessa, mikä ei juuri eroa pakkaamattoman datan lukemisesta.
  • Lisätty kokeellinen kyky ladata tietoja CSV-tiedostoista useisiin rinnakkaisiin virtoihin (SET experimental_parallel_csv=true), mikä vähentää merkittävästi suurten CSV-tiedostojen lataamiseen kuluvaa aikaa. Esimerkiksi kun tämä asetus oli käytössä, 720 Mt:n CSV-tiedoston latausaika lyheni 3.5 sekunnista 0.6 sekuntiin.
  • Mahdollisuus indeksin luonti- ja hallintatoimintojen rinnakkaiseen suorittamiseen on otettu käyttöön. Esimerkiksi 16 miljoonan tietueen sarakkeen CREATE INDEX -toiminto lyhennettiin 5.92 sekunnista 1.38 sekuntiin.
  • Otettu käyttöön yhdistämistoimintojen rinnakkaistaminen kyselyissä, jotka sisältävät lausekkeen "COUNT(DISTINCT col)".
  • SQL on lisännyt tuen UNION-tyypille, joka mahdollistaa useiden tyyppien sitomisen yhteen elementtiin (esimerkiksi "UNION(num INT, error VARCHAR)").
  • SQL tarjoaa mahdollisuuden muodostaa kyselyitä, jotka alkavat sanalla "FROM" sanan "SELECT" sijaan. Tässä tapauksessa oletetaan, että kysely alkaa "SELECT *".
  • SQL on lisännyt tuen COLUMNS-lausekkeelle, jonka avulla voit suorittaa toiminnon useille sarakkeille kopioimatta lauseketta. Esimerkiksi "VALITSE MIN(SARAKE(*)) havainnoista;" aiheuttaa MIN-funktion suorittamisen jokaiselle obs-taulukon sarakkeelle ja "SELECT COLUMNS('val[0-9]+') from obs;" sarakkeille, joiden nimi koostuu "val":sta ja numeroista.
  • Lisätty tuki listatoimintoille, esimerkiksi "VALITSE [x + 1 x:lle in [1, 2, 3]] AS l;".
  • Muistin kulutus on optimoitu. Oletusarvoisesti Linux-alusta käyttää jemalloc-kirjastoa muistin hallintaan. Merkittävästi parantunut hajautustoimintojen suorituskyky, kun muisti on rajallinen.
  • Komentorivikäyttöliittymään lisätty ".mode duckbox" -tulostustila, joka hylkää keskimmäiset sarakkeet ottaen huomioon pääteikkunan leveyden (sopii nopeasti visuaalisesti arvioimaan kyselyiden tuloksia, joissa on suuri määrä sarakkeita, kuten "SELECT *". FROM tbl”, jotka normaalitilassa ovat hajallaan useille riveille). ".maxrows X" -parametrilla voit lisäksi rajoittaa näytettävien rivien määrää.
  • CLI tarjoaa syötteiden automaattisen täydennyksen kontekstin huomioon ottaen (avainsanojen, taulukoiden nimien, funktioiden, sarakkeiden ja tiedostojen nimien syöttö on valmis).
  • CLI:ssä on oletuksena käytössä kyselyn edistymisen ilmaisin.

Lähde: opennet.ru

Lisää kommentti