Paglabas ng DBMS SQLite 3.42 at DuckDB 0.8.0. CG/SQL na may pagpapatupad ng mga nakaimbak na pamamaraan para sa SQLite

Ang paglabas ng SQLite 3.42, isang magaan na DBMS na idinisenyo bilang isang plug-in na library, ay nai-publish. Ang SQLite code ay ipinamahagi bilang isang pampublikong domain, ibig sabihin. maaaring gamitin nang walang mga paghihigpit at walang bayad para sa anumang layunin. Ang suportang pinansyal para sa mga developer ng SQLite ay ibinibigay ng isang espesyal na nilikhang consortium, na kinabibilangan ng mga kumpanya tulad ng Adobe, Oracle, Mozilla, Bentley at Bloomberg.

Pangunahing pagbabago:

  • Para sa mga full-text index ng FTS5, ipinatupad ang secure-delete na command, na ganap na nililinis ang lahat ng natitirang data pagkatapos ng pagtanggal.
  • Sinusuportahan na ngayon ng mga function para sa pagproseso ng data ng JSON ang mga extension ng JSON5.
  • Pinahusay na tagaplano ng query. Bilang default, pinagana ang pag-optimize ng count-of-view. Ang pagproseso ng mga hindi nagamit na column sa mga subquery ay inaalis. Pinahusay na pagpapatupad ng push-down optimization.
  • Idinagdag ang opsyong "--unsafe-testing" sa interface ng command line, na nagbibigay-daan sa paggamit ng ilang mapanganib na command, gaya ng ".testctrl", na nilayon para gamitin sa pagsubok. Sa safe mode (“-safe”), pinapayagan ang paggamit ng mga command na “.log on” at “.log off”. Nagdagdag ng suporta para sa "—" delimiter, para sa mga argumento kung saan ang pagpoproseso ng opsyon ay hindi pinagana. Nagdagdag ng mga parameter na ":inf" at ":nan" na nauugnay sa mga halaga ng infinity at NaN.
  • Ang mga pangalan ng mga function ng SQL na tinukoy ng application ay nagbibigay-daan sa intersection sa mga keyword na CROSS, FULL, INNER, LEFT, NATURAL, OUTER, at RIGHT.
  • Ang mga kakayahan ng PRAGMA integrity_check ay pinalawak. Idinagdag ang pagsusuri para sa pagtukoy ng mga halaga ng NaN sa mga hanay na may kondisyon na HINDI NULL. Pinahusay na nilalaman ng impormasyon ng mga mensahe ng error.
  • Ang session add-on ay nagbibigay-daan sa pagharang ng mga pagbabago mula sa mga talahanayan na walang ROWID.
  • Ang "subsec" modifier ay idinagdag sa mga function para sa pagtatrabaho sa mga oras at petsa upang gumamit ng mga fraction ng segundo.
  • Ang default na recursion depth para sa mga array at JSON object ay binawasan mula 2000 hanggang 1000.

Bilang karagdagan, ang paglabas ng DuckDB 0.8.0 DBMS ay nilikha, na bumubuo ng isang bersyon ng SQLite, pinalawak na may mga kakayahan at pag-optimize para sa pagsasagawa ng mga analytical na query na sumasaklaw sa isang makabuluhang bahagi ng nakaimbak na data, halimbawa, gumaganap ng pagsasama-sama ng buong nilalaman ng mga talahanayan o pagsasama-sama ng ilang malalaking talahanayan. Nagbibigay ng advanced na dialect ng SQL na may kasamang mga karagdagang kakayahan para sa pagpoproseso ng napakakumplikado at matagal na mga query, at sinusuportahan din ang mga kumplikadong uri (array, istruktura, unyon), pagpapatakbo ng maraming query nang sabay-sabay, at pagpapatakbo ng mga query nang direkta mula sa CSV, JSON, at Parquet file . Posibleng mag-import mula sa PostgreSQL DBMS.

Bilang karagdagan sa shell code mula sa SQLite, ang proyekto ay gumagamit ng parser mula sa PostgreSQL sa isang hiwalay na library, ang Date Math component mula sa MonetDB, ang sarili nitong pagpapatupad ng mga function ng window (batay sa Segment Tree Aggregation algorithm), isang regular na expression processor batay sa ang RE2 library, sarili nitong query optimizer, at MVCC control mechanism na sabay-sabay na pagpapatupad ng mga gawain (Multi-Version Concurrency Control), pati na rin ang vectorized na query execution engine batay sa Hyper-Pipelining Query Execution algorithm, na nagbibigay-daan sa malalaking hanay ng mga value upang maiproseso nang sabay-sabay sa isang operasyon. Ang code ng proyekto ay ipinamahagi sa ilalim ng lisensya ng MIT.

Sa bagong bersyon ng DuckDB:

  • Nagdagdag ng mga bagong expression na "PIVOT" at "UNPIVOT" upang gawing mga column ang mga row at vice versa.
  • Pinahusay na parallelization kapag nag-i-import at nag-e-export ng data. Bilang default, ipinapatupad ang multi-threaded na pagbabasa mula sa mga CSV file at multi-threaded na pagsusulat kapag gumagamit ng Parquet, CSV at JSON na mga format.
  • Idinagdag ang operator ng "**" upang paulit-ulit na umulit sa mga direktoryo kapag tinutukoy ang mga path ng file (halimbawa, MULA sa "'data/glob/crawl/stackoverflow/**/*.csv';").
  • Idinagdag ang suporta para sa pagsasama-sama ng mga operasyon (JOIN) para sa data sa anyo ng isang serye ng oras (mga hiwa ng mga halaga ng parameter sa tinukoy na mga agwat ng oras), kung saan ang pamantayan para sa pagsasama ng mga tala ay hindi isang eksaktong, ngunit isang tinatayang pagkakataon ng mga halaga sa isang field na may oras (halimbawa, maaari mong pagsamahin ang mga talaan, oras na naiiba nang hindi hihigit sa 1 minuto).
  • Nagpatupad ng tamad na pag-load ng metadata ng database, na naging posible upang mapabilis ang paglulunsad ng DBMS nang sampu-sampung beses.
  • Nagdagdag ng suporta para sa pagkonekta ng mga custom na function sa Python.
  • Nagdagdag ng suporta para sa ADBC ​​​​(Arrow Database Connectivity) API para sa paglilipat ng data gamit ang Apache Arrow.
  • Ang isang pagbubuklod ay ipinatupad para sa pagsasama sa Swift code.
  • Binago ang gawi ng operator ng dibisyon ("/") upang magsagawa ng mga pagkalkula ng floating point sa halip na mga pagpapatakbo ng integer bilang default. Ang isang bagong operator na "//" ay iminungkahi para sa integer division. Maaaring ibalik ang lumang gawi sa pamamagitan ng pagtatakda ng “SET integer_division=true;”.
  • Ang paraan ng pagsasaalang-alang ng mga zero record kapag ang pag-uuri ay binago mula sa "NULLS FIRST" sa "NULLS LAST", i.e. Ang mga NULL na halaga ay ipi-print na ngayon sa dulo kaysa sa simula ng listahan. Maaaring ibalik ang lumang gawi sa pamamagitan ng pagtatakda ng “SET default_null_order='nulls_first';”.

Bukod pa rito, mapapansin natin ang proyekto ng CG/SQL na binuo ng Facebook, na nagbibigay ng code generator para sa paggamit ng mga nakaimbak na pamamaraan sa SQLite. Binibigyang-daan ka ng CG/SQL na magsulat ng mga naka-imbak na pamamaraan sa isang espesyal na diyalekto ng T-SQL (Transact-SQL), na nagpapahintulot sa mga function ng pagtawag ng karaniwang C library at pag-access ng data sa SQLite. Ang mga nabuong nakaimbak na pamamaraan ay pinagsama-sama sa C code na gumagamit ng SQLite C API upang magsagawa ng mga tinukoy na aksyon at magproseso ng mga kumplikadong query. Ang mga pinagsama-samang nakaimbak na pamamaraan ay maaaring konektado sa C, Java, at Objective-C na mga programa. Ang code ng proyekto ay nakasulat sa C at ipinamamahagi sa ilalim ng lisensya ng MIT.

Pinagmulan: opennet.ru

Magdagdag ng komento