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
