DuckDB 0.6.0 është publikuar, një variant SQLite për kërkesa analitike

Doli në dispozicion versioni i DBMS DuckDB 0.6.0, që kombinon karakteristikat e SQLite, siç janë kompaktësia, mundësia e lidhjes si një bibliotekë e integruar, ruajtja e DB në një skedar dhe një ndërfaqe CLI miqësore, me mjete dhe optimizime për të realizuar kërkesa analitike që përfshijnë një pjesë të konsiderueshme të të dhënave të ruajtura, ndalja e agregimit të të gjitha përmbajtjeve të tabelave ose bashkimin e disa tabelave të mëdha. Kodi i projektit shpërndahen nën licencën MIT. Zhvillimi është ende në fazën e formimit të lëshimeve eksperimentale, pasi formati i ruajtjes nuk është stabilizuar dhe ndryshon nga versioni në version.

DuckDB ofron një dialekt të avancuar të gjuhës SQL, duke përfshirë mundësi shtesë për përpunimin e kërkesave shumë të ndërlikuara dhe të zgjatura. Mbështetet përdorimi i tipeve të ndërlikuara (dëgjo, struktura, bashkime) dhe mundësia për të ekzekutuar nënpyetje të rastësishme dhe të ngulitura. Mbështetet ekzekutimi i disa kërkesave në të njëjtën kohë, ekzekutimi i kërkesave drejtpërdrejt nga skedarët në formatin CSV dhe Parquet. Ka mundësi për import nga DBMS PostgreSQL.

Përveç kodit të shell-it nga SQLite, projekti përdor parser-in e hequr në një bibliotekë të veçantë nga PostgreSQL, komponentin Date Math nga MonetDB, implementimin e tij të funksioneve mendore (të bazuar në algoritmin Segment Tree Aggregation), përpunuesin e shprehjeve të rregullta të bazuar në bibliotekën RE2, optimizuesin e pyetjeve, mekanizmin MVCC për menaxhimin e ekzekutimit të shumëfishtë të detyrave (Kontrolli i Konkurrenceve me Versions të Shumta), si dhe motorin vektorizues të ekzekutimit të pyetjeve të bazuar në algoritmin Hyper-Pipelining Query Execution, i cili lejon të përpunoni grupe të mëdha vlerash në një operacion.

Ndryshimet në publikimin e ri përfshijnë:

  • Puna për përmirësimin e formatit të ruajtjes është vazhduar. Është realizuar një modalitet optimist për shkruarjen në disk, ku gjatë ngarkimit të një grumbi të madh të dhënash në një transaksion, të dhënat kompresohen dhe regjistrohen në skedarin e DB-së në mënyrë streaming, pa pritur për përfundimin e konfirmimit të transaksionit me komandën COMMIT. Gjatë marrjes së komandës COMMIT, të dhënat janë tashmë të regjistruara në disk, dhe gjatë ekzekutimit të ROLLBACK ato përjashtohen. Më parë, të dhënat ruheshin fillimisht plotësisht në memorje, dhe gjatë komitit ruheshin në disk.
  • Shtuar mbështetje për ngarkimin paralel të të dhënave në tabela të veçanta, e cila ndihmon në rritjen e dukshme të shpejtësisë së ngarkimit në sisteme me shumë bërthamë. Për shembull, në versionin e kaluar, ngarkimi i DB-së me 150 milion rreshta në një CPU 10-bërthamësh zgjaste 91 sekonda, ndërsa në versionin e ri kjo operacion kryhet për 17 sekonda. Parashikohen dy mënyra ngarkimi paralel — me dhe pa ruajtjen e rendit të rreshtave.
  • Për kompresimin e të dhënave është përdorur algoritmi FSST (Fast Static Symbol Table), i cili lejon paketimin e të dhënave brenda rreshtave, duke përdorur një fjalor të përbashkët për përputhjet tipike. Përdorimi i algoritmit të ri e ka reduktuar madhësinë e DB-së testuese nga 761MB në 251MB.
  • Për kompresimin e numrave me pozita të lëvizshme (DOUBLE dhe FLOAT) janë propozuar algoritmet Chimp dhe Patas. Krahasuar me algoritmin e mëparshëm Gorillas, Chimp ofron një nivel më të lartë kompresimi dhe një shpërndarje më të shpejtë. Algoritmi Patas është më pas në shkallën e kompresimit në krahasim me Chimp, por është dukshëm më i shpejtë në shpërndarje, e cila është pothuajse e njëjtë me leximin e të dhënave të pakompresuara.
  • Është shtuar një mundësi eksperimentale për ngarkimin e të dhënave nga skedarët CSV në disa rrjedha paralele (SET experimental_parallel_csv=true), e cila redukton ndjeshëm kohën e ngarkesës për skedarët e mëdhenj CSV. Për shembull, me aktivizimin e kësaj opsioni, koha e ngarkesës së skedarit CSV me madhësi 720 MB është reduktuar nga 3.5 në 0.6 sekonda.
  • Është realizuar mundësia për ekzekutimin paralel të operacioneve të krijimit dhe menaxhimit të indekseve. Për shembull, ekzekutimi i operacionit CREATE INDEX për një kolonë me 16 milion të dhëna është reduktuar nga 5.92 në 1.38 sekonda.
  • Është siguruar paralelizimi i operacioneve të agregimit në pyetjet që përmbajnë shprehjen "COUNT(DISTINCT col)".
  • Në SQL është shtuar mbështetje për llojin UNION, që lejon lidhjen e disa llojeve me një element të vetëm (për shembull, "UNION(num INT, error VARCHAR)").
  • Në SQL është ofruar mundësia për të formuar pyetje që fillojnë me fjalën "FROM" në vend të "SELECT". Në këtë rast, nënkuptohet se pyetja fillon me "SELECT *".
  • Në SQL është shtuar mbështetje për shprehjen "COLUMNS", e cila lejon kryerjen e operacioneve mbi shumë kolona pa shumëfishim të shprehjes. Për shembull, "SELECT MIN(COLUMNS(*)) from obs;" do të ekzekutojë funksionin MIN për çdo kolonë në tabelën obs, ndërsa "SELECT COLUMNS('val[0-9]+') from obs;" do të veprojë mbi kolonat me emrin që përbëhet nga "val" dhe numra.
  • E shtuar mbështetje për operacionet mbi lista, për shembull, "SELECT [x + 1 for x in [1, 2, 3]] AS l;".
  • Optimizuar konsumimi i memories. Nga e para, në platformën Linux, për menaxhimin e memories është angazhuar biblioteka jemalloc. Performanca e operacioneve të bashkimeve të hash-it është përmirësuar ndjeshëm kur ka mbetur një madhësi e kufizuar e memories.
  • Në ndërfaqen e komandave është shtuar moda e daljes ".mode duckbox", e cila hedh columnat e mesme duke marrë parasysh gjerësinë e dritares së terminalit (e përshtatshme për një vlerësim të shpejtë vizual të rezultateve të pyetjeve me numër të madh kolonash, si "SELECT * FROM tbl", të cilat në modin e zakonshëm shpërndahen në disa rreshta). Me anë të parametrave ".maxrows X" gjithashtu mund të kufizoni numrin e rreshtave të daljes.
  • Në CLI është e siguruar përfundimi automatik i hyrjes, duke marrë parasysh kontekstin (dorëzohet përfundimi i fjalëve kyçe, emrave të tabelave, funksioneve, emrave të kolonave dhe emrave të skedareve).
  • Në CLI, ekathe është e aktivizuar nga e para për të treguar indikatori i avancimit të kërkesës.

Burimi: opennet.ru

Bleni hostim të besueshëm për faqe me mbrojtje nga DDoS, serverë VPS VDS 🔥 Bleni hostim të besueshëm për faqe me mbrojtje nga DDoS, serverë VPS VDS | ProHoster