Izdanje DBMS SQLite 3.42 i DuckDB 0.8.0. CG/SQL s implementacijom pohranjenih procedura za SQLite

Objavljeno je izdanje SQLite 3.42, laganog DBMS-a dizajniranog kao plug-in biblioteka. SQLite kod se distribuira u javnoj domeni, tj. može se koristiti bez ograničenja i besplatno za bilo koju svrhu. Financijsku potporu SQLite programerima pruža posebno stvoreni konzorcij koji uključuje tvrtke kao što su Adobe, Oracle, Mozilla, Bentley i Bloomberg.

Velike promjene:

  • Za indekse punog teksta FTS5 implementirana je naredba sigurnog brisanja, koja potpuno čisti sve zaostale podatke nakon brisanja.
  • Funkcije za obradu podataka u JSON formatu sada podržavaju JSON5 ekstenzije.
  • Poboljšani planer upita. Optimizacija broja pregleda omogućena je prema zadanim postavkama. Eliminirano rukovanje neiskorištenim stupcima u podupitima. Poboljšana implementacija push-down optimizacije.
  • CLI-ju je dodana opcija "--unsafe-testing" kako bi se omogućilo korištenje nekih opasnih naredbi kao što je ".testctrl" u testiranju. U sigurnom načinu rada ("--safe") dopuštene su naredbe ".log on" i ".log off". Dodana podrška za razdjelnik "—", za argumente nakon kojih je obrada opcije onemogućena. Dodani parametri ":inf" i ":nan" povezani s vrijednostima beskonačnosti i NaN.
  • Imena aplikacijski definiranih SQL funkcija smiju se presijecati s ključnim riječima CROSS, FULL, INNER, LEFT, NATURAL, OUTER i RIGHT.
  • Proširene PRAGMA mogućnosti provjere integriteta. Dodana je provjera za određivanje NaN vrijednosti u stupcima s uvjetom NOT NULL. Poboljšan informativni sadržaj poruka o pogreškama.
  • Dodavanje sesije omogućuje presretanje promjena iz tablica bez ROWID-ova.
  • Modifikator "subsec" dodan je funkcijama za rad s vremenom i datumima za korištenje frakcija sekundi.
  • Smanjena zadana dubina rekurzije za polja i JSON objekte s 2000 na 1000.

Osim toga, formirano je izdanje DuckDB 0.8.0 DBMS, koje razvija varijantu SQLite, poboljšanu značajkama i optimizacijama za izvođenje analitičkih upita koji pokrivaju značajan dio pohranjenih podataka, na primjer, agregiranje cijelog sadržaja tablica ili spajanje nekoliko veliki stolovi. Omogućen je prošireni dijalekt SQL jezika, uključujući dodatne mogućnosti za rukovanje vrlo složenim i dugotrajnim upitima, kao i podršku za složene tipove (nizovi, strukture, unije), istovremeno izvršavanje više upita i izvršavanje upita izravno iz datoteke u CSV, JSON i Parquet formatu. Moguć je uvoz iz PostgreSQL DBMS-a.

Osim shell koda iz SQLite-a, projekt koristi parser iz PostgreSQL-a, premješten u zasebnu biblioteku, komponentu Date Math iz MonetDB-a, vlastitu implementaciju prozorskih funkcija (na temelju algoritma agregacije stabla segmenta), procesor regularnih izraza temeljeno na RE2 biblioteci, vlastitom optimizatoru upita, MVCC kontrolnom mehanizmu istovremenog izvršavanja zadataka (Multi-Version Concurrency Control), kao i vektoriziranom mehanizmu za izvršavanje upita temeljenom na algoritmu Hyper-Pipeling Query Execution, koji omogućuje obradu velikih skupova vrijednosti odjednom u jednoj operaciji. Kod projekta se distribuira pod licencom MIT-a.

U novoj verziji DuckDB-a:

  • Dodani su novi izrazi "PIVOT" i "UNPIVOT" za transformaciju redaka u stupce i obrnuto.
  • Poboljšana paralelizacija prilikom uvoza i izvoza podataka. Prema zadanim postavkama, pri korištenju Parquet, CSV i JSON formata implementirano je čitanje iz datoteka u CSV formatu u više tokova i pisanje u više niti.
  • Dodan je operator "**" za rekurzivno ponavljanje direktorija prilikom definiranja staza datoteka (npr. FROM "'data/glob/crawl/stackoverflow/**/*.csv';").
  • Dodana podrška za operacije spajanja (JOIN) za podatke u obliku vremenske serije (odsječci vrijednosti parametara u određenim vremenskim intervalima), u kojima kriterij za spajanje zapisa nije točno, već približno podudaranje vrijednosti u polju s vremenom (na primjer, možete kombinirati zapise, vrijeme koje se razlikuje za najviše 1 minutu).
  • Implementirano je odgođeno učitavanje metapodataka baze podataka, što je omogućilo deseterostruko ubrzanje pokretanja DBMS-a.
  • Dodana podrška za povezivanje prilagođenih funkcija u Pythonu.
  • Dodana je podrška za ADBC ​​​​(Arrow Database Connectivity) API za prijenos podataka pomoću Apache Arrowa.
  • Implementirano vezanje za integraciju sa Swift kodom.
  • Promijenjeno je ponašanje operatora dijeljenja ("/"), koji sada prema zadanim postavkama izvodi izračune s pomičnim zarezom umjesto operacija s cijelim brojevima. Predložen je novi operator "//" za cjelobrojno dijeljenje. Staro ponašanje može se vratiti postavljanjem "SET integer_division=true;".
  • Metoda obračunavanja nultih zapisa prilikom sortiranja promijenjena je iz "NULLS FIRST" u "NULLS LAST", tj. NULL vrijednosti sada će biti prikazane na kraju umjesto na početku popisa. Staro ponašanje može se vratiti postavkom "SET default_null_order='nulls_first';".

Dodatno, može se primijetiti CG/SQL projekt koji je razvio Facebook, a koji pruža generator koda za korištenje pohranjenih procedura sa SQLiteom. CG/SQL vam omogućuje pisanje pohranjenih procedura u posebnom dijalektu T-SQL (Transact-SQL), koji vam omogućuje pozivanje funkcija standardne C biblioteke i pristup podacima u SQLite. Generirane pohranjene procedure kompajliraju se u C kod koji koristi SQLite C API za izvođenje navedenih radnji i obradu složenih upita. Prevedene pohranjene procedure mogu se povezati s C, Java i Objective-C programima. Projektni kod je napisan u C-u i distribuiran pod licencom MIT-a.

Izvor: opennet.ru

Dodajte komentar