DuckDB 0.6.0 hadda waa la heli karaa. Waxay isku daraysaa cabbirka is haysta ee SQLite, taageerada maktabadda la dhex-dhigi karo, kaydinta xogta hal fayl, iyo is-dhexgal CLI-saaxiibtinimo leh. Waxa kale oo ay soo bandhigtay qalab iyo wanaajin loogu talagalay socodsiinta weydiimaha gorfaynta ee ka kooban qayb muhiim ah oo ka mid ah xogta la kaydiyay, sida isu geynta dhammaan waxa ku jira miisaska ama isku darka dhawr miisas oo waaweyn. Xeerka mashruuca waxa uu shati ku leeyahay shatiga MIT. Horumarintu hadda waxay ku jirtaa marxaladda tijaabada tijaabada ah, maadaama qaabka kaydintu aanu wali xasilin oo uu ku kala duwan yahay nooca ilaa nooca.
DuckDB waxay bixisaa lahjad horumarsan oo SQL ah oo ay ku jiraan awoodo dheeraad ah oo lagu maareynayo weydiimaha aadka u adag oo waqti badan qaata. Isticmaalka noocyo kakan (habayn, qaab-dhismeedyo, ururo) iyo kartida lagu fulinayo wax-is-daba-marin hoose ayaa la taageeray. Waxay taageertaa socodsiinta su'aalo badan isku mar, ka socodsiinta su'aalaha si toos ah faylasha CSV iyo Parquet. Waa suurtogal in laga keeno PostgreSQL DBMS.
Marka lagu daro koodhka qolofka ee SQLite, mashruucu wuxuu isticmaalaa parser-ka PostgreSQL ee maktabad gaar ah, Qaybta Xisaabta Taariikhda ee MonetDB, hirgelinteeda u gaarka ah ee hawlaha daaqada (oo ku salaysan Segment Tree Aggregation algorithm), farsameeyaha muujinta joogtada ah ee ku salaysan maktabadda RE2, hagaajinteeda su'aalaheeda, iyo habka xakamaynta MVCC ee fulinta hawlaha isku mar ah (Multi-Version Concurrency Concurrency), iyo sidoo kale matoorka fulinta weydiinta ee ku salaysan algorithm-ka Hyper-pipelining Query Execution, kaas oo u oggolaanaya qaybo badan oo qiyam ah. in hal mar lagu farsameeyo hal qaliin.
Waxaa ka mid ah isbeddelada sii deynta cusub:
- Shaqada ayaa sii waday hagaajinta qaabka kaydinta. Habka qorista saxan rajo leh ayaa la hirgeliyay. Habkani waxa uu ku cadaadiyaa oo ku shubayaa xogta faylka kaydka xogta marka la soo shubayo xog badan oo lagu dejiyay hal macaamil ganacsi, iyada oo aan la sugin macaamilku si uu u dhamaystiro amarka COMMIT. Marka amarka COMMIT la soo saaro, xogta ayaa hore loogu qoray saxanka, marka amarka ROLLBACK la fuliyo, waa la tuuraa. Markii hore, xogta ayaa marka hore si buuxda loogu keydiyay xusuusta ka dibna lagu qoray saxanka marka la sameeyo.
- Taageerada ku shubista xogta isku midka ah ee miisaska gaarka ah ayaa lagu daray, taasoo si weyn u wanaajisay xawaaraha rarka ee nidaamyada asaasiga ah. Tusaale ahaan, sii dayntii hore, ku shubista kaydka xogta oo leh 150 milyan oo saf oo 10-core CPU ah waxay qaadatay 91 ilbiriqsi, halka nooca cusub, hawlgalkan lagu dhammeeyo 17 ilbiriqsi. Laba qaab oo isbarbar socda ayaa la heli karaa: iyada oo aan la ilaalinayn nidaamka diiwaannada.
- Algorithm-ka FSST (Shaxda Summada Degdegga ah ee Degdegga ah) algorithm waxaa loo isticmaalaa isku-buufinta xogta, taasoo u oggolaanaysa in xogta lagu soo buuxiyo xargaha iyada oo la adeegsanayo qaamuus caadi ah oo kulannada caadiga ah. Isticmaalka algorithm-kan cusub ayaa hoos u dhigay cabbirka xogta xogta tijaabada ah 761 MB ilaa 251 MB.
- Algorithms-yada Chimp iyo Patas ayaa loo soo jeediyay in la isku cadaadiyo tirooyinka sabbaynaya (LABAALE iyo FLOAT). Marka la barbar dhigo algorithm-ka Gorillas-ka ee hore loo isticmaalay, Chimp wuxuu bixiyaa heer cadaadis sare iyo depression degdeg ah. Patas wuxuu ka dambeeyaa Chimp cadaadiska, laakiin aad ayuu ugu dhaqsaha badan yahay niyad-jabka, wuxuu ku dhow yahay inuu la mid yahay akhrinta xogta aan la adkeyn.
- Muuqaal tijaabo ah oo loogu talagalay soo dejinta xogta faylalka CSV ee taxaneyaal badan oo isbarbar socda (SET experimental_parallel_csv=run) ayaa lagu daray. Habkani wuxuu si weyn u yareynayaa wakhtiga rarka ee faylasha CSV ee waaweyn. Tusaale ahaan, markii sifadan la furay, wakhtiga rarida ee faylka CSV ee 720 MB ayaa hoos uga dhacay 3.5 ilaa 0.6 sekan.
- Fulinta fulinta isbarbardhigga ee abuurista tusmooyinka iyo hawlgallada maaraynta ayaa la hirgeliyey. Tusaale ahaan, hawlgalka CREATE INDEX ee tiir leh 16 milyan oo diiwaan ayaa laga dhigay 5.92 ilaa 1.38 ilbiriqsi.
- Isbarbardhigga hawlgallada isku-darka ee weydiimaha ka kooban odhaahda "COUNT(DISTINCT col)" waa la bixiyay.
- SQL hadda waxa ay taageertaa nooca UNION, kaas oo u oggolaanaya in lagu xidho noocyo badan oo hal shay ah (tusaale, "UNION(nambar INT, qalad VARCHAR))").
- SQL waxa ay ku ogolanaysaa in aad abuurto su'aalo ka bilaabma ereyga "FROM" halkii aad ka isticmaali lahayd "XUL". Xaaladdan oo kale, waydiinta waxaa loo malaynayaa inay ku bilaabanto "Xulsho *."
- SQL hadda waxay taageertaa odhaahda "COLUMNS", kaas oo kuu ogolaanaya inaad ku samayso qalliin ku yaala tiirar badan adiga oo aan nuqul ka samayn hadalka Tusaale ahaan, "Xulashada MIN (COLUMNS(*)) ee obs;" waxay fulin doontaa shaqada MIN tiir kasta oo ku jira miiska obs-ka, halka "Xulashada COLUMNS('val[0-9]+') laga bilaabo obs;" waxay fulin doontaa shaqada MIN ee tiirar leh magacyo ka kooban "val" iyo digits.
- Taageerada lagu daray hawlaha liiska, sida "Xulsho [x + 1 x gudaha [1, 2, 3]] AS l;".
- Isticmaalka xusuusta ayaa la hagaajiyay. Sida caadiga ah, maktabadda jemalloc waxaa loo isticmaalaa maareynta xusuusta ee goobta Linux. Waxqabadka hawlgallada isku-darka xashiishka ee xaaladaha xusuusta xaddidan ayaa si weyn loo hagaajiyay.
- Interface-line interface-ka hadda waxaa ku jira qaabka wax soo saarka ".mode duckbox", kaas oo tuuraya tiirarka dhexe ee ku salaysan ballaca daaqada terminal (ku habboon in si dhakhso ah loo sawiro natiijooyinka weydiimaha leh tiirar badan, sida "Xulsho * FROM tbl," kaas oo sida caadiga ah u gudbi doona khadadka badan). Halbeegga ".maxrows X" ayaa sidoo kale loo isticmaali karaa in lagu xaddido tirada safafka wax soo saarka.
- CLI-gu waxa ay si toos ah u dhammaystiraysaa gelinta (Erayada muhiimka ah, magacyada shaxda, shaqooyinka, magacyada tiirka, iyo magacyada faylalka waa la dhammaystiray).
- CLI-da si toos ah ayaa loo dajiyay si ay u muujiso tusiyaha horumarka weydiinta.
Source: opennet.ru
