Ukukhishwa kwe-DBMS SQLite 3.42 kanye ne-DuckDB 0.8.0. CG/SQL ngokuqaliswa kwezinqubo ezigciniwe ze-SQLite

Ukukhishwa kwe-SQLite 3.42, i-DBMS engasindi eklanywe njengomtapo wolwazi we-plug-in, kushicilelwe. Ikhodi ye-SQLite isatshalaliswa esizindeni somphakathi, i.e. ingasetshenziswa ngaphandle kwemikhawulo futhi mahhala nganoma iyiphi injongo. Usekelo lwezezimali lwabathuthukisi be-SQLite luhlinzekwa yinhlangano edalwe ngokukhethekile, ehlanganisa izinkampani ezifana ne-Adobe, i-Oracle, i-Mozilla, i-Bentley ne-Bloomberg.

Izinguquko eziyinhloko:

  • Kuzinkomba ze-FTS5 zombhalo ogcwele, umyalo wokususa ngokuvikelekile usetshenzisiwe, osula yonke idatha eyinsalela ngemva kokususwa.
  • Imisebenzi yokucubungula idatha ye-JSON manje isekela izandiso ze-JSON5.
  • Isihleli semibuzo esithuthukisiwe. Ngokuzenzakalelayo, ukulungiselelwa kokubala kokubuka kunikwe amandla. Ukucutshungulwa kwamakholomu angasetshenzisiwe emihlotsheni engezansi kususiwe. Ukuqaliswa okuthuthukisiwe kokuthuthukiswa kokuphushela phansi.
  • Kwengezwe inketho ethi “--unsafe-testing” kusixhumi esibonakalayo somugqa womyalo, ovumela ukusetshenziswa kweminye imiyalo eyingozi, njengokuthi “.testctrl”, ehloselwe ukusetshenziswa ekuhlolweni. Kumodi ephephile (“-safe”), ukusetshenziswa kwemiyalelo ethi “.log on” kanye “.log off” kuvunyelwe. Usekelo olungeziwe lwe-delimiter ethi “—”, kuma-agumenti okuthi ngemva kwalokho ukucubungula inketho kukhutshazwe. Kwengezwe izinhlaka ze-":inf" kanye ne-":nan" ezihlotshaniswa ne-infinity kanye namanani e-NaN.
  • Amagama omsebenzi we-SQL achazwe ngohlelo lokusebenza avunyelwe ukuthi adlulele namagama angukhiye angukhiye ESIPHAMBANO, ESIGCWELE, ANGAPHAKATHI, LEFT, NATURAL, OUTER, kanye NAKWESOKUDLA.
  • Amandla e-PRAGMA integrity_check anwetshiwe. Kwengezwe ukuhlola kokucacisa amanani e-NaN kumakholomu anombandela othi NOT NULL. Okuqukethwe kolwazi oluthuthukisiwe lwemilayezo yephutha.
  • Isengezo seseshini sivumela ukunqamula izinguquko kumathebula ngaphandle kwe-ROWID.
  • Isilungisi “se-subsec” sengezwe emisebenzini yokusebenza nezikhathi namadethi ukuze kusetshenziswe izingxenyana zamasekhondi.
  • Ukushona okuzenzakalelayo kwe-recursion kwamalungu afanayo nezinto ze-JSON kwehlisiwe kusuka ku-2000 kuya ku-1000.

Ngaphezu kwalokho, ukukhishwa kwe-DuckDB 0.8.0 DBMS kudaliwe, ethuthukisa inguqulo ye-SQLite, enwetshwe ngamakhono nokulungiselelwa ukwenza imibuzo yokuhlaziya ehlanganisa ingxenye ebalulekile yedatha egciniwe, isibonelo, ukwenza ukuhlanganisa kwakho konke okuqukethwe. yamatafula noma ukuhlanganisa amatafula amakhulu amaningana. Ihlinzeka ngolimi lwesigodi oluthuthukisiwe lwe-SQL oluhlanganisa amakhono engeziwe okucubungula imibuzo eyinkimbinkimbi kakhulu nedla isikhathi, futhi futhi isekela izinhlobo eziyinkimbinkimbi (uhlu, izakhiwo, izinyunyana), eqhuba imibuzo eminingi ngesikhathi esisodwa, nokusebenzisa imibuzo ngokuqondile kumafayela e-CSV, JSON, kanye ne-Parquet. . Kungenzeka ukungenisa kusuka ku-PostgreSQL DBMS.

Ngaphezu kwekhodi yegobolondo evela ku-SQLite, iphrojekthi isebenzisa i-parser evela ku-PostgreSQL kumtapo wolwazi ohlukile, ingxenye ye-Date Math evela ku-MonetDB, ukuqaliswa kwayo kwemisebenzi yewindi (ngokusekelwe ku-algorithm ye-Segment Tree Aggregation), iphrosesa evamile yokubonisa esekelwe umtapo wezincwadi we-RE2, i-query optimizer yawo, kanye nendlela yokulawula ye-MVCC yokwenza imisebenzi ngasikhathi sinye (Multi-Version Concurrency Control), kanye nenjini yokukhipha imibuzo eyenziwe nge-vectored esekelwe ku-algorithm ye-Hyper-Pipelining Query Execution, evumela amasethi amakhulu amanani. izocutshungulwa ngesikhathi esisodwa ekusebenzeni okukodwa. Ikhodi yephrojekthi isatshalaliswa ngaphansi kwelayisensi ye-MIT.

Kunguqulo entsha ye-DuckDB:

  • Kwengezwe izisho ezintsha "PIVOT" kanye "UNPIVOT" ukuze kuguqulwe imigqa ibe amakholomu futhi ngokuphambene nalokho.
  • Ukufanisa okuthuthukisiwe lapho ungenisa futhi uthekelisa idatha. Ngokuzenzakalelayo, ukufunda okunemicu eminingi okuvela kumafayela e-CSV nokubhala okunemicu eminingi kuyasetshenziswa uma kusetshenziswa amafomethi e-Parquet, CSV kanye ne-JSON.
  • Kwengezwe u-opharetha we-"**" ukuze aphindaphinde ngokuphindaphindiwe ngezinhla zemibhalo lapho kunqunywa imizila yefayela (ngokwesibonelo, KUSUKA "''data/glob/crawl/stackoverflow/**/*.csv';").
  • Ukwesekwa okwengeziwe kokuhlanganisa imisebenzi (JOIN) yedatha ngendlela yochungechunge lwesikhathi (izingcezu zamanani epharamitha ngezikhathi ezithile ezishiwo), lapho umbandela wokuhlanganisa amarekhodi ungeyona into eqondile, kodwa ukuhlobana okulinganiselwe kwamanani ensimini enesikhathi (isibonelo, ungahlanganisa amarekhodi, isikhathi esingefani ngomzuzu o-1).
  • Kusetshenziswe ukulayisha okuvilapha kwemethadatha egciniwe, okwenze kwaba nokwenzeka ukusheshisa ukwethulwa kwe-DBMS ngamashumi ezikhathi.
  • Kungezwe ukusekelwa kokuxhuma imisebenzi yangokwezifiso kuPython.
  • Kungezwe usekelo lwe-ADBC ​​(Arrow Database Connectivity) API yokudlulisa idatha kusetshenziswa Umcibisholo we-Apache.
  • Ukubophezela kusetshenziswe ukuze kuhlanganiswe nekhodi ye-Swift.
  • Kushintshwe ukuziphatha ko-opharetha ohlukanisayo ("/") ukuze yenze izibalo zamaphoyinti antantayo esikhundleni senombolo yokusebenza ngokuzenzakalelayo. Kuhlongozwa u-opharetha omusha “//” ukuze kuhlukaniswe inombolo ephelele. Ukuziphatha okudala kungabuyiswa ngokusetha okuthi “SET integer_division=true;”.
  • Indlela yokucabangela amarekhodi anguziro lapho ukuhlunga ishintshiwe kusukela ku-“NULLS FIRST” kuya ku-“NULLS LAST”, i.e. Amanani angu-NULL manje azophrintwa ekugcineni kunesiqalo sohlu. Ukuziphatha okudala kungabuyiswa ngokusetha okuthi “SET default_null_order='nulls_first';”.

Ukwengeza, singaqaphela iphrojekthi ye-CG/SQL eyakhiwe yi-Facebook, ehlinzeka ngomshini wokukhiqiza ikhodi wokusebenzisa izinqubo ezigciniwe nge-SQLite. I-CG/SQL ikuvumela ukuthi ubhale izinqubo ezigciniwe ngolimi lwesigodi olukhethekile lwe-T-SQL (Transact-SQL), okuvumela imisebenzi yokushaya yelabhulali ye-C evamile kanye nokufinyelela idatha ku-SQLite. Izinqubo ezigciniwe ezikhiqiziwe zihlanganiswa zibe ikhodi engu-C esebenzisa i-SQLite C API ukuze yenze izenzo ezithile futhi icubungule imibuzo eyinkimbinkimbi. Izinqubo ezigciniwe ezihlanganisiwe zingaxhunywa ezinhlelweni ze-C, Java, kanye ne-Objective-C. Ikhodi yephrojekthi ibhalwe ngo-C futhi isatshalaliswa ngaphansi kwelayisensi ye-MIT.

Source: opennet.ru

Engeza amazwana