ËshtĂ« publikuar DuckDB 0.6.0, njĂ« variant i SQLite pĂ«r pyetje analitike

Versioni e SGBD DuckDB 0.6.0 është e disponueshme, duke kombinuar veçori të tillë si kompaktësia dhe mundësia e lidhjes si një bibliotekë e integruar, ruajtja e DB në një skedar të vetëm dhe një ndërfaqe CLI e lehtë për t'u përdorur, me mjete dhe optimizime për ekzekutimin e pyetjeve analitike që kapin një pjesë të konsiderueshme të të dhënave të ruajtura, për shembull, duke kryer agregimin e të gjithë përmbajtjes së tabelave ose duke bashkuar disa tabela të mëdha. Kodi i projektit shpërndahet nën licencën MIT. Zhvillimi është ende në fazën e krijimit të lëshimeve eksperimentale, pasi formati i ruajtjes ende 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 pyetjeve shumë të komplikuara dhe me kohëzgjatje të gjatë. Përdorimi i llojeve të ndërlikuara (array, struktura, bashkime) mbështetet dhe është e mundur të kryhen nënpyetje korrelative të rastësishme dhe të thella. Mbështetet ekzekutimi i disa pyetjeve njëherësh, ekzekutimi i pyetjeve direkt nga skedarë në formatin CSV dhe Parquet. Ka mundësi importimi nga SGBD PostgreSQL.

Përveç kodit bazë nga SQLite, projekti përdor edhe një parser të veçuar në një bibliotekë më vete nga PostgreSQL, komponentin Date Math nga MonetDB, implementimin e vet të funksioneve të dritares (mbi bazën e algoritmit Segment Tree Aggregation), një përpunues të shprehjeve të rregullta të ndërtuar mbi bibliotekën RE2, optimizuesin e vet të kërkesave, mekanizmin MVCC për menaxhimin e ekzekutimit të njëkohshëm të detyrave (Multi-Version Concurrency Control), si dhe një engine të vektorizuar për ekzekutimin e kërkesave, i bazuar në algoritmin Hyper-Pipelining Query Execution, që mundëson përpunimin e menjëhershëm të grupeve të mëdha të vlerave brenda një operacioni të vetëm.

Mes ndryshimeve në versionin e ri:

  • Puna pĂ«r pĂ«rmirĂ«simin e formatit tĂ« ruajtjes Ă«shtĂ« vazhduar. ËshtĂ« realizuar njĂ« modalitet optimist pĂ«r shkrimin nĂ« disk, ku, gjatĂ« ngarkimit tĂ« njĂ« grupe tĂ« madh tĂ« dhĂ«nash nĂ« njĂ« transaksion, tĂ« dhĂ«nat comprimohet dhe shkruhen nĂ« rrjedhĂ« nĂ« skedarin me DB-nĂ«, pa pritur pĂ«r pĂ«rfundimin e konfirmimit tĂ« transaksionit nga komandĂ«s COMMIT. GjatĂ« dhĂ«nies sĂ« komandĂ«s COMMIT, tĂ« dhĂ«nat do tĂ« jenĂ« tashmĂ« tĂ« shkruara nĂ« disk, dhe nĂ« rastin e ROLLBACK, ato do tĂ« hidhen. MĂ« parĂ«, tĂ« dhĂ«nat ruheshin fillimisht plotĂ«sisht nĂ« memorie dhe nĂ« momentin e komitit ruhej nĂ« disk.
  • ËshtĂ« shtuar mbĂ«shtetje pĂ«r ngarkimin paralel tĂ« tĂ« dhĂ«nave nĂ« tabela tĂ« veçanta, duke lejuar rritjen e ndjeshme tĂ« shpejtĂ«sisĂ« sĂ« ngarkimit nĂ« sisteme me shumĂ« bĂ«rthama. PĂ«r shembull, nĂ« lĂ«shimin e kaluar, ngarkohet DB me 150 milion rreshta nĂ« njĂ« CPU me 10 bĂ«rthama nĂ« 91 sekonda, ndĂ«rsa nĂ« versionin e ri kjo operacion realizohet pĂ«r 17 sekonda. JanĂ« parashikuar dy modalitete tĂ« ngarkimit paralel - me ruajtjen e rendit tĂ« regjistrimeve dhe pa ruajtjen e rendit.
  • 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 vargjeve, duke pĂ«rdorur njĂ« fjalor tĂ« pĂ«rbashkĂ«t pĂ«r pĂ«rputhjet tipike. PĂ«rdorimi i algoritmit tĂ« ri ka bĂ«rĂ« tĂ« mundur zvogĂ«limin e madhĂ«sisĂ« sĂ« bazĂ«s sĂ« tĂ« dhĂ«nave testuese nga 761MB nĂ« 251MB.
  • PĂ«r kompresimin e numrave me presje lundruese (DOUBLE dhe FLOAT) janĂ« propozuar algoritmet Chimp dhe Patas. Krahasuar me algoritmin e pĂ«rdorur mĂ« parĂ« Gorillas, Chimp ofron njĂ« nivel mĂ« tĂ« lartĂ« kompresimi dhe njĂ« shpejtĂ«si mĂ« tĂ« shpejtĂ« tĂ« dekompresimit. Algoritmi Patas Ă«shtĂ« mĂ« i ngadalshĂ«m sa i pĂ«rket shkallĂ«s sĂ« kompresimit nĂ« krahasim me Chimp, por Ă«shtĂ« ndjeshĂ«m mĂ« i shpejtĂ« nĂ« shpejtĂ«sinĂ« e dekompresimit, e cila pothuajse nuk ndryshon nga leximi i tĂ« dhĂ«nave tĂ« pamodifikuara.
  • ËshtĂ« shtuar njĂ« mundĂ«si eksperimentale pĂ«r ngarkimin e tĂ« dhĂ«nave nga skedarĂ«t CSV nĂ« disa rrjedha paralel (SET experimental_parallel_csv=true), e cila zvogĂ«lon ndjeshĂ«m kohĂ«n e ngarkimit tĂ« skedarĂ«ve CSV tĂ« mĂ«dhenj. PĂ«r shembull, kur aktivizohet opsioni, koha e ngarkimit tĂ« skedarit CSV me madhĂ«si 720 MB Ă«shtĂ« zvogĂ«luar nga 3.5 nĂ« 0.6 sekonda.
  • ËshtĂ« realizuar mundĂ«sia e ekzekutimit paralel tĂ« operacioneve tĂ« krijimit dhe menaxhimit tĂ« indekseve. PĂ«r shembull, ekzekutimi i operacionit CREATE INDEX pĂ«r njĂ« kolonĂ« me 16 milion regjistrime Ă«shtĂ« zvogĂ«luar nga 5.92 nĂ« 1.38 sekonda.
  • ËshtĂ« siguruar paralelizimi i operacioneve tĂ« agregimit nĂ« kĂ«rkesat qĂ« pĂ«rmbajnĂ« shprehjen "COUNT(DISTINCT col)".
  • NĂ« SQL Ă«shtĂ« shtuar mbĂ«shtetje pĂ«r llojin UNION, i cili lejon lidhjen e njĂ« elementi me disa lloje (pĂ«r shembull, "UNION(num INT, error VARCHAR)").
  • NĂ« SQL Ă«shtĂ« ofruar mundĂ«sia pĂ«r tĂ« formuar kĂ«rkesa qĂ« fillojnĂ« me fjalĂ«n "FROM" nĂ« vend tĂ« "SELECT". NĂ« kĂ«tĂ« rast konsiderohet se kĂ«rkesa fillon me "SELECT *".
  • NĂ« SQL Ă«shtĂ« shtuar mbĂ«shtetje pĂ«r shprehjen "COLUMNS", e cila lejon kryerjen e operacionit mbi disa kolona pa pĂ«rsĂ«ritjen e shprehjes. PĂ«r shembull, "SELECT MIN(COLUMNS(*)) from obs;" do tĂ« realizojĂ« funksionin MIN pĂ«r çdo kolonĂ« nĂ« tabelĂ«n obs, ndĂ«rsa "SELECT COLUMNS(‘val[0-9]+’) from obs;" pĂ«r kolonat me emra qĂ« pĂ«rbĂ«hen nga "val" dhe numra.
  • ËshtĂ« shtuar mbĂ«shtetje pĂ«r operacionet mbi lista, pĂ«r shembull, "SELECT [x + 1 for x in [1, 2, 3]] AS l;".
  • ËshtĂ« bĂ«rĂ« optimizimi i konsumit tĂ« memories. Si parazgjedhje nĂ« platformĂ«n Linux pĂ«r menaxhimin e memories Ă«shtĂ« pĂ«rdorur libri jemalloc. JanĂ« pĂ«rmirĂ«suar ndjeshĂ«m performancat e operacioneve tĂ« bashkimit tĂ« hash-eve kur Ă«shtĂ« kufizuar madhĂ«sia e memories.
  • NĂ« ndĂ«rfaqen e komandĂ«s Ă«shtĂ« shtuar njĂ« mod i daljes «.mode duckbox», i cili pĂ«rjashton kolonat e mesme nĂ« pĂ«rputhje me gjerĂ«sinĂ« e dritares sĂ« terminalit (i pĂ«rshtatshĂ«m pĂ«r njĂ« vlerĂ«sim tĂ« shpejtĂ« tĂ« rezultateve tĂ« pyetjeve me numĂ«r tĂ« madh kolonash, siç Ă«shtĂ« «SELECT * FROM tbl», qĂ« nĂ« modin e zakonshĂ«m shpĂ«rndahen nĂ« disa rreshta). Me parametrin «.maxrows X» gjithashtu mund tĂ« kufizoni numrin e rreshtave tĂ« daljes.
  • NĂ« CLI Ă«shtĂ« siguruar autocompletimi i hyrjes duke marrĂ« parasysh kontekstin (pĂ«rfundon hyrjen e fjalĂ«ve kyçe, emrave tĂ« tabelave, funksioneve, emrave tĂ« kolonave dhe emrave tĂ« skedarĂ«ve).
  • NĂ« CLI, njĂ«kohĂ«sisht Ă«shtĂ« pĂ«rfshirĂ« si parazgjedhje shfaqja e indikatorit tĂ« pĂ«rparimit tĂ« ekzekutimit tĂ« pyetjes.

Burimi: opennet.ru

Blini hosting tĂ« besueshĂ«m pĂ«r faqe interneti me mbrojtje nga DDoS, serverĂ« VPS VDS đŸ”„ Blini hosting tĂ« besueshĂ«m pĂ«r faqe interneti me mbrojtje nga DDoS, serverĂ« VPS VDS | ProHoster