DBMS SQLite 3.42 ir DuckDB 0.8.0 išleidimas. CG/SQL su SQLite saugomų procedūrų įgyvendinimu

Paskelbtas SQLite 3.42, lengvos DBVS, sukurtos kaip papildinių biblioteka, leidimas. SQLite kodas platinamas kaip viešasis domenas, t.y. gali būti naudojamas be apribojimų ir nemokamai bet kokiam tikslui. Finansinę paramą SQLite kūrėjams teikia specialiai sukurtas konsorciumas, į kurį įeina tokios kompanijos kaip Adobe, Oracle, Mozilla, Bentley ir Bloomberg.

Pagrindiniai pakeitimai:

  • FTS5 viso teksto indeksams buvo įdiegta saugaus ištrynimo komanda, kuri visiškai išvalo visus likusius duomenis po ištrynimo.
  • JSON duomenų apdorojimo funkcijos dabar palaiko JSON5 plėtinius.
  • Patobulinta užklausų planavimo priemonė. Pagal numatytuosius nustatymus įjungtas peržiūrų skaičiaus optimizavimas. Nenaudojamų stulpelių apdorojimas antrinėse užklausose pašalinamas. Patobulintas optimizavimo „push-down“ įgyvendinimas.
  • Komandinės eilutės sąsajoje buvo pridėta parinktis „--unsafe-testing“, kuri leidžia naudoti kai kurias pavojingas komandas, pvz., „.testctrl“, skirtas naudoti testavimui. Saugiuoju režimu („-safe“) leidžiama naudoti komandas „.log on“ ir „.log off“. Pridėtas „-“ skyriklio palaikymas argumentams, po kurių parinkčių apdorojimas išjungiamas. Pridėta ":inf" ir ":nan" parametrai, susieti su begalybės ir NaN reikšmėmis.
  • Programos apibrėžtų SQL funkcijų pavadinimai gali sutapti su raktiniais žodžiais CROSS, FULL, INNER, LEFT, NATURAL, OUTER ir RIGHT.
  • Praplėstos PRAGMA integrity_check galimybės. Pridėtas NaN reikšmių stulpeliuose su sąlyga NOT NULL patikra. Patobulintas klaidų pranešimų informacinis turinys.
  • Seanso priedas leidžia perimti pakeitimus iš lentelių be ROWID.
  • „Subsec“ modifikatorius buvo pridėtas prie funkcijų, skirtų dirbti su laiku ir datomis, kad būtų galima naudoti sekundžių dalis.
  • Numatytasis masyvų ir JSON objektų rekursijos gylis sumažintas nuo 2000 iki 1000.

Be to, buvo sukurta DuckDB 0.8.0 DBVS versija, kuri kuria SQLite versiją, papildytą galimybėmis ir optimizavimu vykdyti analitines užklausas, apimančias didelę dalį saugomų duomenų, pavyzdžiui, atliekant viso turinio agregavimą. lentelių arba kelių didelių lentelių sujungimas. Suteikia pažangų SQL dialektą, apimantį papildomas galimybes apdoroti labai sudėtingas ir daug laiko reikalaujančias užklausas, taip pat palaiko sudėtingus tipus (masyvus, struktūras, sąjungas), kelių užklausų vykdymą vienu metu ir užklausų vykdymą tiesiai iš CSV, JSON ir Parquet failų. . Galima importuoti iš PostgreSQL DBVS.

Be apvalkalo kodo iš SQLite, projektas naudoja analizatorių iš PostgreSQL atskiroje bibliotekoje, Date Math komponentą iš MonetDB, savo lango funkcijų įgyvendinimą (pagal Segment Tree Aggregation algoritmą), reguliariosios išraiškos procesorių, pagrįstą RE2 biblioteka, užklausų optimizavimo priemonė ir MVCC valdymo mechanizmas, leidžiantis vienu metu vykdyti užduotis (kelių versijų lygiagretumo valdymas), taip pat vektorizuotas užklausų vykdymo variklis, pagrįstas „Hyper-Pipelining Query Execution“ algoritmu, leidžiančiu didelius reikšmių rinkinius. apdoroti iš karto per vieną operaciją. Projekto kodas platinamas pagal MIT licenciją.

Naujoje „DuckDB“ versijoje:

  • Pridėtos naujos išraiškos „PIVOT“ ir „UNPIVOT“, kad eilutės būtų paverstos stulpeliais ir atvirkščiai.
  • Patobulintas lygiagretinimas importuojant ir eksportuojant duomenis. Pagal numatytuosius nustatymus kelių gijų skaitymas iš CSV failų ir kelių gijų rašymas įgyvendinamas naudojant „Parquet“, CSV ir JSON formatus.
  • Pridėtas „**“ operatorius, skirtas rekursyviai kartoti katalogus nustatant failų kelius (pvz., FROM „'data/glob/crawl/stackoverflow/**/*.csv';“).
  • Pridėtas sujungimo operacijų (JOIN) palaikymas duomenims laiko eilučių pavidalu (parametrų reikšmių skiltys nurodytais laiko intervalais), kuriose įrašų sujungimo kriterijus yra ne tikslus, o apytikslis reikšmių sutapimas. lauke su laiku (pvz., galite sujungti įrašus, kurių laikas skiriasi ne daugiau kaip 1 minutę).
  • Įdiegtas tingus duomenų bazės metaduomenų įkėlimas, kuris leido paspartinti DBVS paleidimą dešimtis kartų.
  • Pridėta pasirinktinių funkcijų prijungimo Python palaikymas.
  • Pridėtas ADBC (Arrow Database Connectivity) API palaikymas duomenims perduoti naudojant Apache Arrow.
  • Integracijai su „Swift“ kodu įdiegtas susiejimas.
  • Pakeista padalijimo operatoriaus ("/") elgsena, kad pagal numatytuosius nustatymus būtų atliekami slankiojo kablelio skaičiavimai, o ne sveikųjų skaičių operacijos. Padalinimui sveikaisiais skaičiais siūlomas naujas operatorius „//“. Seną elgseną galima grąžinti nustatant „SET integer_division=true;“.
  • Metodas, kuriuo rūšiuojant atsižvelgiama į nulį įrašų, pakeistas iš „NULLS FIRST“ į „NULLS LAST“, t.y. NULL reikšmės dabar bus spausdinamos sąrašo pabaigoje, o ne pradžioje. Seną elgseną galima grąžinti nustatant „SET default_null_order='nulls_first';“.

Be to, galime atkreipti dėmesį į „Facebook“ sukurtą CG/SQL projektą, kuris suteikia kodų generatorių, skirtą saugomų procedūrų naudojimui su SQLite. CG/SQL leidžia įrašyti saugomas procedūras specialiu T-SQL (Transact-SQL) dialektu, kuris leidžia iškviesti standartinės C bibliotekos funkcijas ir pasiekti duomenis SQLite. Sugeneruotos saugomos procedūros sukompiliuojamos į C kodą, kuris naudoja SQLite C API nurodytiems veiksmams atlikti ir sudėtingoms užklausoms apdoroti. Sukompiliuotas saugomas procedūras galima prijungti prie C, Java ir Objective-C programų. Projekto kodas parašytas C ir platinamas pagal MIT licenciją.

Šaltinis: opennet.ru

Добавить комментарий