Izdaja podatkovne baze SQLite 3.42 in DuckDB 0.8.0. CG/SQL z implementacijo shranjenih postopkov za SQLite

Objavljen je izdan SQLite 3.42, lagane SGBD, predstavljene kao dinamička biblioteka. Kod SQLite-a se distribuira kao javno dobro (public domain), tj. može se koristiti bez ograničenja i besplatno u bilo koje svrhe. Finansijsku podršku razvojnim timovima SQLite pruža posebno osnovani konzorcijum, u kojem se nalaze kompanije poput Adobe, Oracle, Mozilla, Bentley i Bloomberg.

Glavne spremembe:

  • Za full-text indekse FTS5 implementirana je komanda secure-delete, koja vrši potpuno uklanjanje svih preostalih podataka nakon brisanja.
  • U funkcijama za obradu podataka u JSON formatu implementirana je podrška za proširenja JSON5.
  • Poboljšan je planifikator upita. Podešavanje "count-of-view" je uključeno po default-u. Isključena je obrada neiskorišćenih kolona u podupitima. Poboljšana je implementacija optimizacije push-down.
  • U interfejs komandne linije dodata je opcija "—unsafe-testing", koja omogućava korišćenje nekih opasnih komandi, poput " .testctrl", predviđenih za тестирање. U bezbednom režimu ("—safe") dozvoljeno je korišćenje komandi " .log on" i " .log off". Dodata je podrška za separator "—", nakon kojeg se isključuje obrada opcija za argumente. Dodati su parametri ":inf" i ":nan", povezani s vrednostima beskonačnosti i NaN.
  • U imenima SQL funkcija definisanih na strani aplikacije dozvoljeno je preklapanje s rezervisanim rečima CROSS, FULL, INNER, LEFT, NATURAL, OUTER i RIGHT.
  • Proširen je kapacitet PRAGMA integrity_check. Dodata je provera zadavanja vrednosti NaN u kolonama sa uslovom NOT NULL. Poboljšana je informativnost poruka o greškama.
  • U dodatku session omogućen je presretanje promena iz tabela bez ROWID.
  • U funkciju za rad s vremenom i datumima dodat je modifikator "subsec" za korišćenje delića sekunde.
  • Dubina rekurzije za nizove i JSON objekte po defaultu smanjena je sa 2000 na 1000.

Poleg tega je izšla različica podatkovne baze DuckDB 0.8.0, ki razvija različico SQLite, razširjeno z možnostmi in optimizacijami za izvajanje analitičnih poizvedb, ki pokrivajo velik del shranjenih podatkov, na primer, za agregatno obdelavo vsebine tabel ali združevanje več velikih tabel. Na voljo je razširjen dialekt jezika SQL, ki vključuje dodatne možnosti za obdelavo zelo zapletenih in dolgotrajnih poizvedb ter podpira zapletene tipe (seznami, strukture, unije), sočasno izvajanje več poizvedb in izvajanje poizvedb neposredno iz datotek v formatih CSV, JSON in Parquet. Na voljo je tudi možnost uvoza iz podatkovne baze PostgreSQL.

Poleg SQLite obvodne kode projekt uporablja parser iz PostgreSQL, ki je bil izločen v ločeno knjižnico, komponento Date Math iz MonetDB, lastno izvedbo okenskih funkcij (na osnovi algoritma Segment Tree Aggregation), obdelovalnik regularnih izrazov na osnovi knjižnice RE2, lastni optimizator poizvedb, MVCC mehanizem za obvladovanje sočasnega izvajanja nalog (Multi-Version Concurrency Control), ter vektorizirani motor za izvajanje poizvedb na osnovi algoritma Hyper-Pipelining Query Execution, ki omogoča obravnavo velikih nizov vrednosti v enem delovanju. Koda projekta se distribuira pod MIT licenco.

V novi različici DuckDB:

  • Dodani so novi izrazi 'PIVOT' in 'UNPIVOT' za preoblikovanje vrstic v stolpce in obratno.
  • Izboljšano je bilo paralelno izvajanje pri uvozu in izvozu podatkov. Privzeto je omogočeno branje iz datotek v formatu CSV v več nitih in večnitno zapisovanje pri uporabi formatov Parquet, CSV in JSON.
  • Dodana je bila operator '**' za rekurzivno obravnavo imenikov pri določanju poti do datotek (na primer, FROM 'data/glob/crawl/stackoverflow/**/*.csv';).
  • Dodana je bila podpora za združevanje (JOIN) operacij za podatke v obliki časovnega niz, kjer se kot kriterij za združevanje zapisov uporablja ne natančno, temveč približno ujemanje vrednosti na časovnem polju (na primer, lahko združimo zapise, katerih čas se razlikuje največ za 1 minuto).
  • Uvedena je bila odložena nalaganje metapodatkov podatkovne baze, kar je omogočilo večkratno pospešitev zagona podatkovne baze.
  • Dodana je podpora za povezovanje uporabniških funkcij v programskem jeziku Python.
  • Dodana je podpora za API ADBC (Arrow Database Connectivity) za prenos podatkov z uporabo Apache Arrow.
  • Implementirana je vezava za integracijo s kodo v programskem jeziku Swift.
  • Obnašanje operatorja deljenja ("/") se je spremenilo in zdaj privzeto izvaja izračune s plavajočo vejico namesto celih števil. Za celoštevilsko deljenje je predlagan nov operator "//". Star način delovanja lahko obnovite z nastavitev "SET integer_division=true;".
  • Metoda obravnave ničelnih zapisov pri sortiranju se je spremenila iz "NULLS FIRST" v "NULLS LAST", kar pomeni, da bodo vrednosti NULL zdaj prikazane na koncu seznama, ne pa na začetku. Star način delovanja lahko obnovite z nastavitvijo "SET default_null_order='nulls_first';".

Dodatno lahko omenimo projekt CG/SQL, ki ga razvija podjetje Facebook, ki nudi generator kode za uporabo shranjenih postopkov z SQLite. CG/SQL omogoča oblikovanje shranjenih postopkov v posebnem dialektu T-SQL (Transact-SQL), ki omogoča klic funkcij standardne knjižnice C in dostop do podatkov v SQLite. Ustvarjeni shranjeni postopki se prevedejo v kodo v programskem jeziku C, ki uporablja SQLite C API za izvajanje nalog in obdelavo zapletenih poizvedb. Sestavljeni shranjeni postopki se lahko povezujejo z programi v jezikih C, Java in Objective-C. Koda projekta je napisana v programskem jeziku C in je objavljena pod licenco MIT.

Izvor: opennet.ru

Kupite zanesljivo gostovanje za spletne strani z zaščito pred DDoS, VPS VDS strežniki 🔥 Kupite zanesljivo gostovanje za spletne strani z zaščito pred DDoS, VPS VDS strežniki | ProHoster