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

Objavljeno je izdanje SQLite 3.42, laganog DBMS-a dizajniranog kao plug-in biblioteka. SQLite kod se distribuira u javnom domenu, tj. može se koristiti bez ograničenja i besplatno u bilo koju svrhu. Finansijsku podršku za SQLite programere pruža posebno kreiran konzorcij, koji uključuje kompanije kao što su Adobe, Oracle, Mozilla, Bentley i Bloomberg.

Glavne promjene:

  • Za FTS5 indekse punog teksta implementirana je komanda secure-delete, koja u potpunosti čisti sve preostale podatke nakon brisanja.
  • Funkcije za obradu podataka u JSON formatu sada podržavaju JSON5 ekstenzije.
  • Poboljšan planer upita. Optimizacija broja pregleda je podrazumevano omogućena. Eliminirano rukovanje neiskorištenim stupcima u potupitima. Poboljšana implementacija optimizacije guranja prema dolje.
  • Dodata opcija "--unsafe-testing" u CLI kako bi se omogućilo korištenje nekih opasnih naredbi kao što je ".testctrl" u testiranju. U sigurnom načinu rada ("--safe"), naredbe ".log on" i ".log off" su dozvoljene. Dodata podrška za "—" separator, za argumente nakon kojih je obrada opcija onemogućena. Dodati ":inf" i ":nan" parametri povezani sa vrijednostima beskonačnosti i NaN.
  • Imenima aplikacijski definiranih SQL funkcija je dozvoljeno da se sijeku s ključnim riječima CROSS, FULL, INNER, LEFT, NATURAL, OUTER i RIGHT.
  • Proširene mogućnosti PRAGMA integrity_check. Dodata provjera za specificiranje NaN vrijednosti u stupcima sa NOT NULL uslovom. Poboljšan informativni sadržaj poruka o greškama.
  • Dodatak sesije omogućava presretanje promjena iz tabela bez ROWID-ova.
  • Modifikator "subsec" dodat je funkcijama za rad s vremenom i datumima za korištenje dijelova sekundi.
  • Smanjena zadana dubina rekurzije za nizove i JSON objekte sa 2000 na 1000.

Osim toga, formirano je DuckDB 0.8.0 DBMS izdanje koje razvija varijantu SQLite, poboljšanu karakteristikama i optimizacijama za izvođenje analitičkih upita koji pokrivaju značajan dio pohranjenih podataka, na primjer, agregiranje cjelokupnog sadržaja tablica ili spajanje nekoliko velikih tablica. Osiguran je prošireni dijalekt jezika SQL, 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 direktno iz datoteka u CSV, JSON i Parquet formatu. Moguć je uvoz iz PostgreSQL DBMS-a.

Pored shell koda iz SQLite-a, projekat koristi parser iz PostgreSQL-a, komponentu Date Math iz MonetDB-a, vlastitu implementaciju funkcija prozora (baziranu na algoritmu Segment Tree Aggregation), procesor regularnih izraza baziran na RE2 biblioteci, vlastiti optimizator upita, MVCC mehanizam za upravljanje simultanim vektorskim kontrolorom MVCC-a i simultanom kontrolom vektora MVCC-a. mehanizam upita baziran na algoritmu Hyper-Pipelining Query Execut, koji vam omogućava da obrađujete velike skupove vrijednosti odjednom u jednoj operaciji. Šifra projekta se distribuira pod MIT licencom.

U novoj verziji DuckDB:

  • Dodani su novi izrazi "PIVOT" i "UNPIVOT" za transformaciju redova u kolone i obrnuto.
  • Poboljšana paralelizacija prilikom uvoza i izvoza podataka. Prema zadanim postavkama, čitanje iz datoteka u CSV formatu u više tokova i višenitno pisanje implementirani su kada se koriste parket, CSV i JSON formati.
  • Dodan "**" operator za rekurzivno iteraciju preko direktorija prilikom definiranja putanja datoteka (npr. FROM "'data/glob/crawl/stackoverflow/**/*.csv';").
  • Dodata podrška za operacije spajanja (JOIN) za podatke u obliku vremenske serije (odsječci vrijednosti parametara u određenim vremenskim intervalima), u kojima kriterij spajanja zapisa nije tačan, već približno podudaranje vrijednosti u polju s vremenom (na primjer, možete kombinirati zapise čije se vrijeme razlikuje za najviše 1 minutu).
  • Implementirano je odloženo učitavanje metapodataka baze podataka, što je omogućilo desetostruko ubrzanje pokretanja DBMS-a.
  • Dodata podrška za povezivanje prilagođenih funkcija u Pythonu.
  • Dodata podrška za ADBC ​​(Arrow Database Connectivity) API za prijenos podataka koristeći Apache Arrow.
  • Implementirano vezivanje za integraciju sa Swift kodom.
  • Promijenjeno je ponašanje operatora dijeljenja ("/"), koji sada po defaultu izvodi proračune s pomičnim zarezom umjesto cjelobrojnih operacija. Predložen je novi operator "//" za dijeljenje cijelih brojeva. Staro ponašanje se može vratiti postavljanjem "SET integer_division=true;".
  • Način obračuna nultih zapisa prilikom sortiranja je promijenjen iz "NULLS FIRST" u "NULLS LAST", tj. NULL vrijednosti će sada biti prikazane na kraju umjesto na početku liste. Staro ponašanje se može vratiti postavkom "SET default_null_order='nulls_first';".

Dodatno, može se primijetiti CG/SQL projekat koji je razvio Facebook, koji obezbjeđuje generator koda za korištenje pohranjenih procedura sa SQLite-om. CG/SQL vam omogućava da pišete pohranjene procedure na posebnom dijalektu T-SQL (Transact-SQL), što vam omogućava da pozivate funkcije standardne C biblioteke i pristupate podacima u SQLite-u. Generirane pohranjene procedure se kompajliraju u C kod koji koristi SQLite C API za izvođenje određenih radnji i obradu složenih upita. Prevedene uskladištene procedure mogu se povezati sa C, Java i Objective-C programima. Kod projekta je napisan u C i distribuiran pod MIT licencom.

izvor: opennet.ru

Dodajte komentar