Liberigo de DBMS SQLite 3.42 kaj DuckDB 0.8.0. CG/SQL kun efektivigo de stokitaj proceduroj por SQLite

La eldono de SQLite 3.42, malpeza DBMS desegnita kiel aldonaĵa biblioteko, estis publikigita. La SQLite-kodo estas distribuita en la publika domeno, t.e. povas esti uzata sen limigo kaj senpage por ajna celo. Financa subteno por SQLite-programistoj estas provizita de speciale kreita konsorcio, kiu inkluzivas kompaniojn kiel Adobe, Oracle, Mozilla, Bentley kaj Bloomberg.

Ĉefaj ŝanĝoj:

  • Por plentekstaj indeksoj de FTS5, la sekure-foriga komando estas efektivigita, kiu tute purigas ĉiujn restajn datumojn post forigo.
  • Funkcioj por prilaborado de datumoj en JSON-formato nun subtenas JSON5-etendaĵojn.
  • Plibonigita demandplanisto. Nombra optimumigo estas ebligita defaŭlte. Forigita uzado de neuzataj kolumnoj en subdemandoj. Plibonigita puŝmalsupren-optimumiga efektivigo.
  • Aldonita "--unsafe-testing" opcio al la CLI por permesi kelkajn danĝerajn komandojn kiel ".testctrl" esti uzataj en testado. En sekura reĝimo ("--safe"), la komandoj ".log on" kaj ".log off" estas permesitaj. Aldonita subteno por la "—" apartigilo, por argumentoj post kiuj opcioprilaborado estas malŝaltita. Aldonitaj ":inf" kaj ":nan" parametroj asociitaj kun infinito kaj NaN valoroj.
  • La nomoj de aplik-difinitaj SQL-funkcioj rajtas intersekci kun la ŝlosilvortoj KRUCO, PLENA, INTERNA, LEFT, NATURA, OUTTER kaj RIGHT.
  • Pligrandigitaj PRAGMA integrity_check-kapabloj. Aldonita kontrolo por specifi la NaN-valoron en kolumnoj kun la NENULA kondiĉo. Plibonigita informenhavo de erarmesaĝoj.
  • La sesio-aldono permesas interkapton de ŝanĝoj de tabeloj sen ROWIDoj.
  • La "subsec" modifilo estis aldonita al funkcioj por labori kun tempo kaj datoj por uzi frakciojn de sekundoj.
  • Reduktita defaŭlta rekursia profundo por tabeloj kaj JSON-objektoj de 2000 ĝis 1000.

Krome, la eldono DuckDB 0.8.0 DBMS estis formita, kiu disvolvas la SQLite-variaĵon, plibonigitan per funkcioj kaj optimumigoj por plenumi analizajn demandojn kovrantajn signifan parton de la stokitaj datumoj, ekzemple, kunigante la tutan enhavon de tabeloj aŭ kunfandante plurajn. grandaj tabloj. Plilongigita dialekto de la SQL-lingvo estas disponigita, inkluzive de kromaj kapabloj por pritrakti tre kompleksajn kaj longdaŭrajn demandojn, same kiel subtenon por kompleksaj specoj (aroj, strukturoj, sindikatoj), samtempa plenumo de multoblaj demandoj kaj plenumo de demandoj rekte de dosieroj en formato CSV, JSON kaj Parquet. Eblas importi de PostgreSQL DBMS.

Aldone al la ŝelkodo de SQLite, la projekto uzas analizilon de PostgreSQL, proponitan al aparta biblioteko, la Date Math-komponenton de MonetDB, sian propran efektivigon de fenestrofunkcioj (surbaze de la Segment Tree Aggregation-algoritmo), regula esprimprocesoro surbaze de la biblioteko RE2, sia propra konsultoptimumiganto, MVCC-kontrolmekanismo samtempa ekzekuto de taskoj (Multi-Version Concurrency Control), same kiel vektorigita demanda ekzekutmotoro bazita sur la Hyper-Pipelining Query Execution-algoritmo, kiu permesas prilabori grandajn arojn de valoroj samtempe en unu operacio. La projektkodo estas distribuita sub la MIT-licenco.

En la nova versio de DuckDB:

  • Aldonitaj novaj esprimoj "PIVOT" kaj "UNPIVOT" por transformi vicojn en kolumnojn kaj inverse.
  • Plibonigita paraleligo dum importado kaj eksportado de datumoj. Defaŭlte, legado de dosieroj en CSV-formato en multoblajn fluojn kaj plurfadenan skribadon estas efektivigitaj kiam oni uzas Parquet, CSV kaj JSON-formatojn.
  • Aldonita "**" operatoro por rekursie ripetadi super dosierujoj dum difinado de dosiervojoj (ekz. DE "'data/glob/crawl/stackoverflow/**/*.csv';").
  • Aldonita subteno por kunfandaj operacioj (JOIN) por datumoj en formo de temposerio (tranĉaĵoj de parametraj valoroj je specifitaj tempintervaloj), en kiuj la kriterio por kunfandi rekordojn ne estas ĝusta, sed proksimuma kongruo de valoroj. en kampo kun tempo (ekzemple, vi povas kombini rekordojn, tempo kiuj diferencas je ne pli ol 1 minuto).
  • La prokrastita ŝarĝo de datumbazaj metadatenoj estis efektivigita, kio ebligis rapidigi la lanĉon de la DBMS dekoble.
  • Aldonita subteno por konekti kutimajn funkciojn en Python.
  • Aldonita subteno por la ADBC ​​(Arrow Database Connectivity) API por transdono de datumoj per Apache Arrow.
  • Efektivigita ligado por integriĝo kun Swift-kodo.
  • Ŝanĝis la konduton de la divido ("/") operatoro, kiu nun plenumas glitkoman kalkulojn defaŭlte anstataŭ entjeroperacioj. Nova operatoro "//" estis proponita por entjerdivido. La malnova konduto povas esti resendita per agordo "SET integer_division=true;".
  • La metodo de kontado por nulaj rekordoj dum ordigo estis ŝanĝita de "NULLS FIRST" al "NULLS LAST", t.e. NULL-valoroj nun estos montrataj ĉe la fino anstataŭ la komenco de la listo. La malnova konduto povas esti restarigita per la agordo "SET default_null_order='nulls_first';".

Aldone, la projekto CG/SQL disvolvita de Facebook, kiu provizas kodgeneratoron por uzi konservitajn procedurojn kun SQLite, povas esti notita. CG/SQL permesas al vi skribi konservitajn procedurojn en speciala dialekto de T-SQL (Transact-SQL), kiu ebligas al vi voki la funkciojn de la norma C-biblioteko kaj aliri datumojn en SQLite. La generitaj konservitaj proceduroj estas kompilitaj en C-kodon, kiu uzas la SQLite C API por plenumi specifitajn agojn kaj prilabori kompleksajn demandojn. Kompilitaj stokproceduroj povas esti ligitaj al C, Java, kaj Objective-C programoj. La projektkodo estas skribita en C kaj distribuita sub la MIT-licenco.

fonto: opennet.ru

Aldoni komenton