Lëshimi i DBMS SQLite 3.42 dhe DuckDB 0.8.0. CG/SQL me zbatimin e procedurave të ruajtura për SQLite

Është publikuar publikimi i SQLite 3.42, një DBMS i lehtë i krijuar si një bibliotekë shtesë. Kodi SQLite shpërndahet si një domen publik, d.m.th. mund të përdoret pa kufizime dhe pa pagesë për çdo qëllim. Mbështetja financiare për zhvilluesit e SQLite ofrohet nga një konsorcium i krijuar posaçërisht, i cili përfshin kompani të tilla si Adobe, Oracle, Mozilla, Bentley dhe Bloomberg.

Ndryshimet kryesore:

  • Për indekset me tekst të plotë FTS5, është zbatuar komanda e fshirjes së sigurt, e cila pastron plotësisht të gjitha të dhënat e mbetura pas fshirjes.
  • Funksionet për përpunimin e të dhënave JSON tani mbështesin shtesat JSON5.
  • Planifikues i përmirësuar i pyetjeve. Si parazgjedhje, optimizimi i numërimit të shikimeve është aktivizuar. Përpunimi i kolonave të papërdorura në nënpyetje eliminohet. Implementimi i përmirësuar i optimizimit push-poshtë.
  • U shtua opsioni "--unsafe-testing" në ndërfaqen e linjës së komandës, i cili lejon përdorimin e disa komandave të rrezikshme, si ".testctrl", të destinuara për përdorim në testim. Në modalitetin e sigurt (“-safe”), lejohet përdorimi i komandave “.log on” dhe “.log off”. Mbështetje e shtuar për kufizuesin "—", për argumentet pas të cilave përpunimi i opsioneve është i çaktivizuar. U shtuan parametrat ":inf" dhe ":nan" të lidhura me vlerat e pafundësisë dhe NaN.
  • Emrat e funksioneve SQL të përcaktuara nga aplikacioni lejohen të mbivendosen me fjalët kyçe CROSS, FULL, INNER, LEFT, NATURAL, OUTER dhe RIGHT.
  • Aftësitë e PRAGMA integrity_check janë zgjeruar. U shtua kontrolli për specifikimin e vlerave NaN në kolonat me kushtin NOT NULL. Përmirësimi i përmbajtjes së informacionit të mesazheve të gabimit.
  • Shtesa e sesionit lejon përgjimin e ndryshimeve nga tabelat pa ROWID.
  • Modifikuesi "subsec" është shtuar në funksionet për të punuar me kohët dhe datat për të përdorur fraksione sekondash.
  • Thellësia e parazgjedhur e rekursionit për vargjet dhe objektet JSON është reduktuar nga 2000 në 1000.

Përveç kësaj, është krijuar lëshimi i DuckDB 0.8.0 DBMS, i cili zhvillon një version të SQLite, të zgjeruar me aftësi dhe optimizime për ekzekutimin e pyetjeve analitike që mbulojnë një pjesë të konsiderueshme të të dhënave të ruajtura, për shembull, duke kryer grumbullimin e të gjithë përmbajtjes i tabelave ose bashkimi i disa tabelave të mëdha. Ofron një dialekt të avancuar të SQL që përfshin aftësi shtesë për përpunimin e pyetjeve shumë komplekse dhe që kërkojnë kohë, dhe gjithashtu mbështet lloje komplekse (vargje, struktura, bashkime), ekzekutimin e pyetjeve të shumta në të njëjtën kohë dhe ekzekutimin e pyetjeve direkt nga skedarët CSV, JSON dhe Parquet . Është e mundur të importohet nga PostgreSQL DBMS.

Përveç kodit të guaskës nga SQLite, projekti përdor një analizues nga PostgreSQL në një bibliotekë të veçantë, komponentin Date Math nga MonetDB, zbatimin e tij të funksioneve të dritares (bazuar në algoritmin e grumbullimit të pemëve të segmentit), një procesor shprehjeje të rregullt bazuar në biblioteka RE2, optimizuesi i saj i pyetjeve dhe një mekanizëm kontrolli MVCC ekzekutimi i njëkohshëm i detyrave (Kontrolli i konkurencës me shumë versione), si dhe një motor ekzekutimi i pyetjeve të vektorizuar bazuar në algoritmin Hyper-Pipelining Query Execution, i cili lejon grupe të mëdha vlerash të përpunohen menjëherë në një operacion. Kodi i projektit shpërndahet nën licencën MIT.

Në versionin e ri të DuckDB:

  • U shtuan shprehje të reja "PIVOT" dhe "UNPIVOT" për të transformuar rreshtat në kolona dhe anasjelltas.
  • Paralelizim i përmirësuar gjatë importimit dhe eksportimit të të dhënave. Si parazgjedhje, leximi me shumë fije nga skedarët CSV dhe shkrimi me shumë fije zbatohen kur përdorni formatet Parquet, CSV dhe JSON.
  • U shtua operatori "**" për të përsëritur në mënyrë rekursive nëpër drejtori gjatë përcaktimit të shtigjeve të skedarëve (për shembull, FROM "'data/glob/crawl/stackoverflow/**/*.csv';").
  • Mbështetje e shtuar për operacionet e bashkimit (JOIN) për të dhënat në formën e një serie kohore (feta të vlerave të parametrave në intervale të caktuara kohore), në të cilat kriteri për bashkimin e të dhënave nuk është një rastësi e saktë, por një rastësi e përafërt e vlerave në një fushë me kohë (për shembull, mund të bashkoni regjistrime, kohë të cilat ndryshojnë jo më shumë se 1 minutë).
  • Zbatoi ngarkimin dembel të meta të dhënave të bazës së të dhënave, gjë që bëri të mundur përshpejtimin e nisjes së DBMS me dhjetëra herë.
  • Mbështetje e shtuar për lidhjen e funksioneve të personalizuara në Python.
  • Mbështetje e shtuar për API ADBC ​​(Arrow Database Connectivity) për transferimin e të dhënave duke përdorur Apache Arrow.
  • Është zbatuar një lidhje për integrimin me kodin Swift.
  • Ndryshoi sjelljen e operatorit të ndarjes ("/") për të kryer llogaritjet me pikë lundruese në vend të operacioneve me numra të plotë si parazgjedhje. Një operator i ri “//” propozohet për ndarjen e numrave të plotë. Sjellja e vjetër mund të kthehet duke vendosur “SET integer_division=true;”.
  • Metoda e marrjes parasysh të regjistrimeve zero gjatë renditjes është ndryshuar nga "NULLS FIRST" në "NULLS FAST", d.m.th. Vlerat NULL tani do të printohen në fund dhe jo në fillim të listës. Sjellja e vjetër mund të kthehet duke vendosur "SET default_null_order='nulls_first';".

Për më tepër, mund të vërejmë projektin CG/SQL të zhvilluar nga Facebook, i cili ofron një gjenerues kodesh për përdorimin e procedurave të ruajtura me SQLite. CG/SQL ju lejon të shkruani procedura të ruajtura në një dialekt të veçantë të T-SQL (Transact-SQL), i cili lejon thirrjen e funksioneve të bibliotekës standarde C dhe aksesin e të dhënave në SQLite. Procedurat e ruajtura të krijuara përpilohen në kodin C që përdor SQLite C API për të kryer veprime të specifikuara dhe për të përpunuar pyetje komplekse. Procedurat e ruajtura të përpiluara mund të lidhen me programet C, Java dhe Objective-C. Kodi i projektit është i shkruar në C dhe shpërndahet nën licencën MIT.

Burimi: opennet.ru

Shto një koment