Ho lokolloa ha DBMS SQLite 3.42 le DuckDB 0.8.0. CG/SQL ka ts'ebetsong ea mekhoa e bolokiloeng bakeng sa SQLite

Ho lokolloa ha SQLite 3.42, DBMS e bobebe e entsoeng e le laebrari ea plug-in, e hatisitsoe. Khoutu ea SQLite e ajoa sebakeng sa sechaba, ke hore. e ka sebelisoa ntle le lithibelo le ntle ho tefo bakeng sa morero ofe kapa ofe. Tšehetso ea lichelete bakeng sa bahlahisi ba SQLite e fanoa ke consortium e entsoeng ka ho khetheha, e kenyelletsang lik'hamphani tse kang Adobe, Oracle, Mozilla, Bentley le Bloomberg.

Liphetoho tse kholo:

  • Bakeng sa li-index tsa mongolo o felletseng oa FTS5, taelo e sireletsehileng ea ho hlakola e kentsoe ts'ebetsong, e hlakolang data eohle e setseng kamora ho hlakoloa.
  • Mesebetsi ea ho sebetsana le data ea JSON e se e tšehetsa likeketso tsa JSON5.
  • Moralo oa lipotso o ntlafalitsoeng. Ka tsela e iketsang, optimization count-of-view e a lumelloa. Ts'ebetso ea litšiea tse sa sebelisoeng ho subqueries e felisitsoe. Ts'ebetso e ntlafalitsoeng ea ts'ebetso ea push-down.
  • E kenyellelitsoe "--unsafe-testing" ho khokahanyo ea mola oa taelo, e lumellang tšebeliso ea litaelo tse kotsi, joalo ka ".testctrl", e reretsoeng ho sebelisoa litekong. Mokhoeng o bolokehileng (“-safe”), tšebeliso ea “.log on” le “.log off” e lumelletsoe. Tšehetso e ekelitsoeng bakeng sa "-" delimiter, bakeng sa likhang ka mor'a moo ts'ebetso ea khetho e koetsoeng. E kentsoe ":inf" le ":nan" liparamente tse amanang le boleng ba infinity le NaN.
  • Mabitso a lits'ebetso tse hlalositsoeng ke ts'ebeliso ea SQL a lumella ho kopana le mantsoe a bohlokoa a CROSS, FULL, INNER, LEFT, NATURAL, OUTER, le RIGHT.
  • Bokhoni ba PRAGMA integrity_check bo ekelitsoe. E kenyellelitse tlhahlobo ea ho hlakisa boleng ba NaN ka likholomo tse nang le boemo ba NOT NULL. Litaba tse ntlafalitsoeng tsa melaetsa ea liphoso.
  • Keketso ea seboka e lumella ho thibela liphetoho ho tsoa litafoleng ntle le ROWID.
  • "subsec" modifier e kenyellelitsoe mesebetsing ea ho sebetsa le linako le matsatsi ho sebelisa likaroloana tsa metsotsoana.
  • Botebo ba kamehla ba ho khutla bakeng sa li-arrays le lintho tsa JSON bo fokotsoe ho tloha ho 2000 ho isa ho 1000.

Ntle le moo, ho entsoe tokollo ea DuckDB 0.8.0 DBMS, e hlahisang mofuta oa SQLite, e atolositsoeng ka bokhoni le ntlafatso ea ho etsa lipotso tsa tlhahlobo tse koahelang karolo ea bohlokoa ea data e bolokiloeng, mohlala, ho kopanya litaba tsohle. ya ditafole kapa ho kopanya ditafole tse ngatanyana tse kgolo. E fana ka puo e tsoetseng pele ea SQL e kenyelletsang bokhoni bo eketsehileng ba ho sebetsana le lipotso tse thata haholo le tse senyang nako, hape e tšehetsa mefuta e rarahaneng (mekhahlelo, mekhatlo, mekhatlo ea basebetsi), e botsa lipotso tse ngata ka nako e le 'ngoe, le ho botsa lipotso ka ho toba ho tloha ho CSV, JSON, le lifaele tsa Parquet. . Hoa khoneha ho reka ho tsoa ho PostgreSQL DBMS.

Ntle le khoutu ea khetla e tsoang ho SQLite, morero o sebelisa parser ho tloha PostgreSQL laebraring e arohaneng, karolo ea Date Math ho tsoa ho MonetDB, ts'ebetsong ea eona ea mesebetsi ea lifensetere (e ipapisitseng le algorithm ea Segment Tree Aggregation), processor ea kamehla ea polelo e thehiloeng ho laeborari ea RE2, optimizer ea eona ea ho botsa, le mochini oa taolo oa MVCC ho etsa mesebetsi ka nako e le 'ngoe (Multi-Version Concurrency Control), hammoho le enjine ea ho botsa lipotso e thehiloeng ho Hyper-Pipelining Query Execution algorithm, e lumellang lihlopha tse kholo tsa boleng. e lokela ho sebetsoa hang ts'ebetsong e le 'ngoe. Khoutu ea projeke e ajoa tlasa laesense ea MIT.

Phetolelong e ncha ea DuckDB:

  • E kentse mantsoe a macha "PIVOT" le "UNPIVOT" ho fetola mela hore e be likholomo le ka tsela e fapaneng.
  • Ntlafatso ea parallelization ha o kenya le ho romella data kantle ho naha. Ka linako tsohle, ho bala ka likhoele tse ngata ho tsoa lifaeleng tsa CSV le ho ngola ka likhoele tse ngata ho kengoa ts'ebetsong ha ho sebelisoa lifomate tsa Parquet, CSV le JSON.
  • "**" e kenyellelitsoe ho pheta-pheta li-directory ha ho khethoa litsela tsa lifaele (mohlala, HO TLOHA "'data/glob/crawl/stackoverflow/**/*.csv';").
  • Ts'ehetso e ekelitsoeng bakeng sa ts'ebetso ea ho kopanya (JOIN) bakeng sa data ka mokhoa oa letoto la nako (likotoana tsa boleng ba paramethara ka nako e behiloeng), moo mokhoa oa ho kopanya lirekoto e seng ntho e nepahetseng, empa ke ketsahalo e lekantsoeng ea boleng. tšimong ka nako (mohlala, o ka kopanya lirekoto, nako e fapaneng ka nako e sa feteng motsotso o le mong).
  • E kentse ts'ebetso ea botsoa ea metadata ea database, e entseng hore ho khonehe ho potlakisa ho qala ha DBMS ka makhetlo a mashome.
  • Ts'ehetso e ekelitsoeng bakeng sa ho hokahanya mesebetsi ea tloaelo ho Python.
  • Tšehetso e ekelitsoeng bakeng sa ADBC ​​​​(Arrow Database Connectivity) API bakeng sa ho fetisetsa data ho sebelisa Apache Arrow.
  • Tlamo e kentsoe tšebetsong bakeng sa ho hokahana le khoutu ea Swift.
  • E fetotse boits'oaro ba opareitara ea karohano ("/") hore e etse lipalo tsa lintlha tse phaphametseng ho e-na le ho etsa lipalo kaofela ka mokhoa oa kamehla. Ho reriloe opareitara e ncha “//” bakeng sa karohano e felletseng. Boitšoaro ba khale bo ka khutlisoa ka ho beha "SET integer_division=true;".
  • Mokhoa oa ho ela hloko lirekoto tsa lefela ha ho hlophisoa ho fetotsoe ho tloha ho "NULLS FIRST" ho ea "NULLS LAST", i.e. Litekanyetso tsa NULL joale li tla hatisoa qetellong ho fapana le qalo ea lenane. Boitšoaro ba khale bo ka khutlisoa ka ho beha "SET default_null_order='nulls_first';".

Ho phaella moo, re ka hlokomela morero oa CG/SQL o entsoeng ke Facebook, o fanang ka jenereithara ea khoutu bakeng sa ho sebelisa mekhoa e bolokiloeng le SQLite. CG/SQL e u lumella ho ngola mekhoa e bolokiloeng ka puo e khethehileng ea T-SQL (Transact-SQL), e lumellang ho letsetsa mesebetsi ea laebrari e tloaelehileng ea C le ho fumana lintlha ho SQLite. Mekhoa e bolokiloeng e hlahisitsoeng e hlophisitsoe ka khoutu ea C e sebelisang SQLite C API ho etsa liketso tse boletsoeng le ho sebetsana le lipotso tse thata. Mekhoa e hlophisitsoeng e bolokiloeng e ka hokahana le mananeo a C, Java, le Objective-C. Khoutu ea projeke e ngotsoe ka C mme e ajoa tlasa laesense ea MIT.

Source: opennet.ru

Eketsa ka tlhaloso