DBMS SQLite 3.42 un DuckDB 0.8.0 izlaišana. CG/SQL ar SQLite saglabāto procedūru ieviešanu

Ir publicēts SQLite 3.42, viegla DBVS, kas izstrādāta kā spraudņu bibliotēka, izlaidums. SQLite kods tiek izplatīts publiskajā domēnā, t.i. var izmantot bez ierobežojumiem un bez maksas jebkuram mērķim. Finansiālu atbalstu SQLite izstrādātājiem nodrošina īpaši izveidots konsorcijs, kurā ietilpst tādi uzņēmumi kā Adobe, Oracle, Mozilla, Bentley un Bloomberg.

Galvenās izmaiņas:

  • FTS5 pilna teksta indeksiem ir ieviesta droša dzēšanas komanda, kas pēc dzēšanas pilnībā notīra visus atlikušos datus.
  • Funkcijas datu apstrādei JSON formātā tagad atbalsta JSON5 paplašinājumus.
  • Uzlabots vaicājumu plānotājs. Skatījumu skaita optimizācija ir iespējota pēc noklusējuma. Likvidēta apakšvaicājumos neizmantoto kolonnu apstrāde. Uzlabota nospiežamās optimizācijas ieviešana.
  • CLI ir pievienota opcija "--unsafe-testing", lai testēšanā varētu izmantot dažas bīstamas komandas, piemēram, ".testctrl". Drošajā režīmā ("--safe") ir atļautas komandas ".log on" un ".log off". Pievienots atbalsts atdalītājam "—" argumentiem, pēc kuriem opciju apstrāde ir atspējota. Pievienoti parametri ":inf" un ":nan", kas saistīti ar bezgalības un NaN vērtībām.
  • Lietojumprogrammas definēto SQL funkciju nosaukumiem ir atļauts krustoties ar atslēgvārdiem CROSS, FULL, INNER, LEFT, NATURAL, OUTER un RIGHT.
  • Paplašinātas PRAGMA integritātes pārbaudes iespējas. Pievienota pārbaude, lai norādītu NaN vērtību kolonnās ar nosacījumu NOT NULL. Uzlabots kļūdu ziņojumu informācijas saturs.
  • Sesijas pievienošana ļauj pārtvert izmaiņas no tabulām bez ROWID.
  • "Subsec" modifikators ir pievienots funkcijām darbam ar laiku un datumiem, lai izmantotu sekunžu daļas.
  • Samazināts noklusējuma rekursijas dziļums masīviem un JSON objektiem no 2000 līdz 1000.

Turklāt ir izveidots DuckDB 0.8.0 DBMS laidiens, kurā tiek izstrādāts SQLite variants, kas papildināts ar funkcijām un optimizācijām analītisko vaicājumu veikšanai, kas aptver ievērojamu daļu saglabāto datu, piemēram, apkopojot visu tabulu saturu vai apvienojot vairākas lieli galdi. Tiek nodrošināts paplašināts SQL valodas dialekts, tostarp papildu iespējas ļoti sarežģītu un ilgstošu vaicājumu apstrādei, kā arī atbalsts sarežģītiem tipiem (masīvi, struktūras, savienības), vienlaicīga vairāku vaicājumu izpilde un vaicājumu izpilde tieši no faili CSV, JSON un parketa formātā. Ir iespējams importēt no PostgreSQL DBVS.

Papildus čaulas kodam no SQLite projektā tiek izmantots parsētājs no PostgreSQL, kas pārvietots uz atsevišķu bibliotēku, Date Math komponents no MonetDB, savs loga funkciju ieviešana (pamatojoties uz Segment Tree Aggregation algoritmu), regulāro izteiksmju procesors. pamatojoties uz RE2 bibliotēku, savu vaicājumu optimizētāju, MVCC vadības mehānismu vienlaicīgai uzdevumu izpildei (Multi-Version Concurrency Control), kā arī vektorizētu vaicājumu izpildes dzinēju, kura pamatā ir Hyper-Pipelining Query Execution algoritms, kas ļauj apstrādāt lielas failu kopas. vērtības uzreiz vienā operācijā. Projekta kods tiek izplatīts saskaņā ar MIT licenci.

Jaunajā DuckDB versijā:

  • Pievienotas jaunas izteiksmes "PIVOT" un "UNPIVOT", lai pārveidotu rindas kolonnās un otrādi.
  • Uzlabota paralēlizācija datu importēšanas un eksportēšanas laikā. Pēc noklusējuma, izmantojot parketa, CSV un JSON formātus, tiek ieviesta lasīšana no failiem CSV formātā vairākās straumēs un vairāku pavedienu rakstīšana.
  • Pievienots operators "**", lai rekursīvi iterētu direktorijus, definējot failu ceļus (piemēram, NO "'data/glob/crawl/stackoverflow/**/*.csv';").
  • Pievienots atbalsts sapludināšanas darbībām (JOIN) datiem laikrindu veidā (parametru vērtību šķēles noteiktos laika intervālos), kurā ierakstu sapludināšanas kritērijs nav precīza, bet aptuvena vērtību atbilstība. laukā ar laiku (piemēram, var apvienot ierakstus, kuru laiks atšķiras ne vairāk kā par 1 minūti).
  • Ir ieviesta datu bāzes metadatu atliktā ielāde, kas ļāva desmitkārtīgi paātrināt DBVS palaišanu.
  • Pievienots atbalsts pielāgotu funkciju savienošanai programmā Python.
  • Pievienots atbalsts ADBC (Arrow Database Connectivity) API datu pārsūtīšanai, izmantojot Apache Arrow.
  • Ieviesta saistīšana integrācijai ar Swift kodu.
  • Mainīta dalīšanas ("/") operatora darbība, kas tagad pēc noklusējuma veic peldošā komata aprēķinus, nevis darbības ar veseliem skaitļiem. Veselo skaitļu dalīšanai ir piedāvāts jauns operators "//". Veco darbību var atgriezt, iestatot "SET integer_division=true;".
  • Nulles ierakstu uzskaites metode šķirošanas laikā ir mainīta no "NULLS FIRST" uz "NULLS LAST", t.i. NULL vērtības tagad tiks parādītas saraksta beigās, nevis sākumā. Veco darbību var atjaunot, iestatot "SET default_null_order='nulls_first';".

Papildus var atzīmēt Facebook izstrādāto CG/SQL projektu, kas nodrošina kodu ģeneratoru saglabāto procedūru izmantošanai ar SQLite. CG/SQL ļauj rakstīt saglabātās procedūras īpašā T-SQL dialektā (Transact-SQL), kas ļauj izsaukt standarta C bibliotēkas funkcijas un piekļūt datiem SQLite. Ģenerētās saglabātās procedūras tiek apkopotas C kodā, kas izmanto SQLite C API, lai veiktu noteiktas darbības un apstrādātu sarežģītus vaicājumus. Apkopotās saglabātās procedūras var saistīt ar C, Java un Objective-C programmām. Projekta kods ir rakstīts C valodā un tiek izplatīts saskaņā ar MIT licenci.

Avots: opennet.ru

Pievieno komentāru