DuckDB 0.6.0 Publikuar, Opsioni SQLite për pyetje analitike

Lëshimi i DuckDB 0.6.0 DBMS është i disponueshëm, duke kombinuar karakteristika të tilla të SQLite si kompaktësia, aftësia për t'u lidhur në formën e një biblioteke të integruar, ruajtjen e bazës së të dhënave në një skedar dhe një ndërfaqe të përshtatshme CLI, me mjete dhe optimizime për ekzekutim pyetje analitike që mbulojnë një pjesë të konsiderueshme të të dhënave të ruajtura, për shembull që grumbullojnë të gjithë përmbajtjen e tabelave ose bashkojnë disa tabela të mëdha. Kodi i projektit shpërndahet nën licencën MIT. Zhvillimi është ende në fazën e formimit të lëshimeve eksperimentale, pasi formati i ruajtjes ende nuk është stabilizuar dhe ndryshon nga versioni në version.

DuckDB ofron një dialekt të avancuar SQL që përfshin aftësi shtesë për trajtimin e pyetjeve shumë komplekse dhe që kërkojnë kohë. Mbështetet përdorimi i llojeve komplekse (vargje, struktura, bashkime) dhe aftësia për të ekzekutuar nënpyetje arbitrare dhe të ndërlidhura. Ai mbështet ekzekutimin e shumë pyetjeve në të njëjtën kohë, ekzekutimin e pyetjeve direkt nga skedarët CSV dhe Parquet. Është e mundur të importohet nga PostgreSQL DBMS.

Përveç kodit të guaskës nga SQLite, projekti përdor një analizues nga PostgreSQL në një bibliotekë të veçantë, komponentin Date Math nga MonetDB, zbatimin e tij të funksioneve të dritares (bazuar në algoritmin e grumbullimit të pemëve të segmentit), një procesor shprehjeje të rregullt bazuar në biblioteka RE2, optimizuesi i saj i pyetjeve dhe një mekanizëm kontrolli MVCC ekzekutimi i njëkohshëm i detyrave (Kontrolli i konkurencës me shumë versione), si dhe një motor ekzekutimi i pyetjeve të vektorizuar bazuar në algoritmin Hyper-Pipelining Query Execution, i cili lejon grupe të mëdha vlerash të përpunohen menjëherë në një operacion.

Ndër ndryshimet në versionin e ri:

  • Puna vazhdoi për të përmirësuar formatin e ruajtjes. Është zbatuar një modalitet optimist i shkrimit të diskut, në të cilin kur ngarkoni një grup të madh të dhënash në një transaksion, të dhënat kompresohen dhe shkruhen në një skedar nga baza e të dhënave në modalitetin e transmetimit, pa pritur që transaksioni të konfirmohet me komandën COMMIT. . Kur merret një komandë COMMIT, të dhënat janë shkruar tashmë në disk, dhe kur ekzekutohet një ROLLBACK, ato hidhen. Më parë, të dhënat fillimisht u ruajtën plotësisht në memorie, dhe kur kryheshin, ato u ruajtën në disk.
  • Mbështetje e shtuar për ngarkimin paralel të të dhënave në tabela të veçanta, gjë që ju lejon të rritni ndjeshëm shpejtësinë e ngarkimit në sistemet me shumë bërthama. Për shembull, në versionin e mëparshëm, ngarkimi i një baze të dhënash me 150 milionë rreshta në një CPU me 10 bërthama mori 91 sekonda, por në versionin e ri ky operacion përfundon në 17 sekonda. Ekzistojnë dy mënyra paralele të ngarkimit - me ruajtjen e rendit të regjistrave dhe pa ruajtjen e rendit.
  • Për kompresimin e të dhënave, përdoret algoritmi FSST (Tabela e shpejtë statike e simboleve), i cili ju lejon të paketoni të dhënat brenda vargjeve duke përdorur një fjalor të përbashkët të përputhjeve tipike. Përdorimi i algoritmit të ri bëri të mundur reduktimin e madhësisë së bazës së të dhënave të testit nga 761MB në 251MB.
  • Algoritmet Chimp dhe Patas janë propozuar për të kompresuar numrat me pikë lundruese (DOUBLE dhe FLOAT). Krahasuar me algoritmin e mëparshëm Gorillas, Chimp siguron nivele më të larta të kompresimit dhe dekompresim më të shpejtë. Algoritmi Patas mbetet pas Chimp-it në raportin e kompresimit, por është shumë më i shpejtë në shpejtësinë e dekompresimit, e cila pothuajse nuk ndryshon nga leximi i të dhënave të pakompresuara.
  • U shtua një aftësi eksperimentale për të ngarkuar të dhënat nga skedarët CSV në transmetime të shumta paralele (SET eksperimental_parallel_csv=true), gjë që redukton ndjeshëm kohën që duhet për të ngarkuar skedarë të mëdhenj CSV. Për shembull, kur ky opsion u aktivizua, koha e shkarkimit për një skedar CSV 720 MB u reduktua nga 3.5 në 0.6 sekonda.
  • Është zbatuar mundësia e ekzekutimit paralel të operacioneve të krijimit dhe menaxhimit të indekseve. Për shembull, operacioni CREATE INDEX në një kolonë me 16 milionë regjistrime u reduktua nga 5.92 në 1.38 sekonda.
  • Aktivizoi paralelizimin e operacioneve të grumbullimit në pyetjet që përmbajnë shprehjen "COUNT(DISTINCT col)".
  • SQL ka shtuar mbështetje për llojin UNION, i cili lejon që disa lloje të lidhen me një element (për shembull, "UNION(num INT, gabim VARCHAR))").
  • SQL ofron mundësinë për të formuar pyetje që fillojnë me fjalën "FROM" në vend të "SELECT". Në këtë rast, supozohet se pyetja fillon me "SELECT *".
  • SQL ka shtuar mbështetje për shprehjen COLUMNS, e cila ju lejon të kryeni një operacion në kolona të shumta pa dublikuar shprehjen. Për shembull, "SELECT MIN(COLUMNS(*)) nga obs;" do të bëjë që funksioni MIN të ekzekutohet për secilën kolonë në tabelën obs dhe "SELECT COOLUMNS('val[0-9]+') nga obs;" për kolonat me një emër të përbërë nga "val" dhe numra.
  • Mbështetje e shtuar për operacionet në lista, për shembull, "SELECT [x + 1 për x në [1, 2, 3]] AS l;".
  • Konsumi i memories është optimizuar. Si parazgjedhje, platforma Linux përdor bibliotekën jemalloc për menaxhimin e kujtesës. Performanca e përmirësuar ndjeshëm e operacioneve të bashkimit hash kur memoria është e kufizuar.
  • Është shtuar modaliteti i daljes ".mode duckbox" në ndërfaqen e linjës së komandës, e cila hedh poshtë kolonat e mesme duke marrë parasysh gjerësinë e dritares së terminalit (i përshtatshëm për vlerësimin e shpejtë vizual të rezultateve të pyetjeve me një numër të madh kolonash, si "SELECT * FROM tbl”, të cilat në modalitetin normal shpërndahen në disa rreshta). Duke përdorur parametrin ".maxrows X", mund të kufizoni gjithashtu numrin e rreshtave të shfaqur.
  • CLI siguron plotësimin automatik të hyrjes duke marrë parasysh kontekstin (futja e fjalëve kyçe, emrave të tabelave, funksioneve, emrave të kolonave dhe emrave të skedarëve është përfunduar).
  • CLI ka një tregues të përparimit të pyetjes të aktivizuar si parazgjedhje.

Burimi: opennet.ru

Shto një koment