DuckDB 0.6.0 Gepubliseer, SQLite-opsie vir analitiese navrae

Die vrystelling van die DuckDB 0.6.0 DBMS is beskikbaar, wat eienskappe van SQLite kombineer soos kompaktheid, die vermoë om te koppel in die vorm van 'n ingebedde biblioteek, die stoor van die databasis in een lêer en 'n gerieflike CLI-koppelvlak, met gereedskap en optimalisering vir uitvoering analitiese navrae wat 'n beduidende deel van die gestoorde data dek, byvoorbeeld wat die hele inhoud van tabelle saamvoeg of verskeie groot tabelle saamvoeg. Die projekkode word onder die MIT-lisensie versprei. Die ontwikkeling is nog in die stadium van die vorming van eksperimentele vrystellings, aangesien die stoorformaat nog nie gestabiliseer is nie en van weergawe tot weergawe verander.

DuckDB bied 'n gevorderde SQL-dialek wat bykomende vermoëns insluit vir die hantering van baie komplekse en tydrowende navrae. Die gebruik van komplekse tipes (skikkings, strukture, unies) en die vermoë om arbitrêre en geneste korrelerende subnavrae uit te voer, word ondersteun. Dit ondersteun die uitvoer van verskeie navrae gelyktydig, die uitvoer van navrae direk vanaf CSV- en Parket-lêers. Dit is moontlik om vanaf die PostgreSQL DBMS in te voer.

Benewens die dopkode van SQLite, gebruik die projek 'n ontleder van PostgreSQL in 'n aparte biblioteek, die Date Math-komponent van MonetDB, sy eie implementering van vensterfunksies (gebaseer op die Segment Tree Aggregation-algoritme), 'n gereelde uitdrukkingverwerker gebaseer op die RE2-biblioteek, sy eie navraagoptimeerder, en 'n MVCC-beheermeganisme gelyktydige uitvoering van take (Multi-Version Concurrency Control), sowel as 'n gevektoriseerde navraaguitvoering-enjin gebaseer op die Hyper-Pipelining Query Execution-algoritme, wat groot stelle waardes toelaat. om gelyktydig in een operasie verwerk te word.

Onder die veranderinge in die nuwe weergawe:

  • Werk het voortgegaan om die stoorformaat te verbeter. 'n Optimistiese skyfskryfmodus is geïmplementeer, waarin wanneer 'n groot stel data in een transaksie gelaai word, die data saamgepers en na 'n lêer vanaf die databasis in stroommodus geskryf word, sonder om te wag dat die transaksie bevestig word met die COMMIT-opdrag . Wanneer 'n COMMIT-opdrag ontvang word, is die data reeds na skyf geskryf, en wanneer 'n ROLLBACK uitgevoer word, word dit weggegooi. Voorheen is die data aanvanklik heeltemal in die geheue gestoor, en wanneer dit gepleeg is, is dit op skyf gestoor.
  • Bygevoeg ondersteuning vir parallelle laai van data in afsonderlike tabelle, wat jou toelaat om laai spoed aansienlik te verhoog op multi-kern stelsels. Byvoorbeeld, in die vorige weergawe het die laai van 'n databasis met 150 miljoen rye op 'n 10-kern SVE 91 sekondes geneem, maar in die nuwe weergawe word hierdie bewerking in 17 sekondes voltooi. Daar is twee parallelle laaimodusse - met behoud van die volgorde van rekords en sonder behoud van orde.
  • Vir datakompressie word die FSST (Fast Static Symbol Table) algoritme gebruik, wat jou toelaat om data binne stringe te pak deur 'n algemene woordeboek van tipiese passings te gebruik. Die gebruik van die nuwe algoritme het dit moontlik gemaak om die grootte van die toetsdatabasis van 761MB tot 251MB te verminder.
  • Sjimpansee- en Patas-algoritmes is voorgestel om drywende-puntgetalle (DUBBEL en FLOAT) saam te druk. In vergelyking met die vorige Gorillas-algoritme, bied Chimp hoër vlakke van kompressie en vinniger dekompressie. Die Patas-algoritme is agter Chimp in kompressieverhouding, maar is baie vinniger in dekompressiespoed, wat amper niks verskil van die lees van ongecomprimeerde data nie.
  • Bygevoeg 'n eksperimentele vermoë om data van CSV-lêers in veelvuldige parallelle strome te laai (SET experimental_parallel_csv=true), wat die tyd wat dit neem om groot CSV-lêers te laai aansienlik verminder. Byvoorbeeld, wanneer hierdie opsie geaktiveer is, is die aflaaityd vir 'n 720 MB CSV-lêer van 3.5 tot 0.6 sekondes verminder.
  • Die moontlikheid van parallelle uitvoering van indeksskepping en bestuursbedrywighede is geïmplementeer. Byvoorbeeld, die CREATE INDEX-bewerking op 'n kolom met 16 miljoen rekords is van 5.92 tot 1.38 sekondes verminder.
  • Geaktiveer parallellisering van samevoegingsbewerkings in navrae wat die uitdrukking "COUNT(DISTINCT col)" bevat.
  • SQL het ondersteuning bygevoeg vir die UNION-tipe, wat toelaat dat veelvuldige tipes aan een element gebind word (byvoorbeeld, "UNION(num INT, fout VARCHAR))").
  • SQL bied die vermoë om navrae te vorm wat begin met die woord "FROM" in plaas van "SELECT". In hierdie geval word aanvaar dat die navraag met "SELECT *" begin.
  • SQL het ondersteuning bygevoeg vir die COLUMNS-uitdrukking, wat jou toelaat om 'n bewerking op veelvuldige kolomme uit te voer sonder om die uitdrukking te dupliseer. Byvoorbeeld, "SELECT MIN(COLUMNS(*)) from obs;" sal veroorsaak dat die MIN-funksie vir elke kolom in die obs-tabel uitgevoer word, en "SELECT COLUMNS('val[0-9]+') from obs;" vir kolomme met 'n naam wat uit "val" en nommers bestaan.
  • Bygevoeg ondersteuning vir bewerkings op lyste, byvoorbeeld, "KIES [x + 1 vir x in [1, 2, 3]] AS l;".
  • Geheueverbruik is geoptimaliseer. By verstek gebruik die Linux-platform die jemalloc-biblioteek vir geheuebestuur. Aansienlik verbeterde werkverrigting van hash-samesmeltingsbedrywighede wanneer geheue beperk is.
  • Het ".mode duckbox"-uitvoermodus by die opdragreël-koppelvlak gevoeg, wat die middelste kolomme weggooi met inagneming van die breedte van die terminale venster (geskik om die resultate van navrae met 'n groot aantal kolomme vinnig visueel te assesseer, soos "SELECT * FROM tbl", wat in normale modus oor verskeie lyne versprei is). Deur die ".maxrows X" parameter te gebruik, kan jy die aantal rye wat vertoon word addisioneel beperk.
  • Die CLI verskaf outovoltooiing van invoer met inagneming van die konteks (invoer van sleutelwoorde, tabelname, funksies, kolomname en lêername is voltooi).
  • Die CLI het 'n navraagvorderingsaanwyser wat by verstek geaktiveer is.

Bron: opennet.ru

Voeg 'n opmerking