DBMS SQLite 3.42:n ja DuckDB 0.8.0:n julkaisu. CG/SQL ja tallennettujen SQLite-toimintojen toteuttaminen

SQLite 3.42, kevyt DBMS, joka on suunniteltu laajennuskirjastoksi, on julkaistu. SQLite-koodia jaetaan julkisena, ts. voidaan käyttää rajoituksetta ja maksutta mihin tahansa tarkoitukseen. Taloudellisen tuen SQLite-kehittäjille tarjoaa erityisesti luotu konsortio, johon kuuluvat muun muassa Adobe, Oracle, Mozilla, Bentley ja Bloomberg.

Suurimmat muutokset:

  • FTS5-täysteksti-indekseissä on otettu käyttöön suojauspoistokomento, joka tyhjentää kokonaan kaikki jäännöstiedot poistamisen jälkeen.
  • JSON-tietojen käsittelytoiminnot tukevat nyt JSON5-laajennuksia.
  • Parannettu kyselyn suunnittelija. Oletusarvoisesti näyttökertojen määrän optimointi on käytössä. Käyttämättömien sarakkeiden käsittely alikyselyissä on eliminoitu. Push-down-optimoinnin parannettu toteutus.
  • Komentorivikäyttöliittymään lisätty "--unsafe-testing" -vaihtoehto, joka sallii joidenkin vaarallisten komentojen, kuten ".testctrl", käytön testaukseen. Vikasietotilassa ("-safe") ".log on"- ja ".log off"-komentojen käyttö on sallittua. Lisätty tuki "-"-erottimelle argumenteille, joiden jälkeen vaihtoehtojen käsittely on poistettu käytöstä. Lisätty parametrit ":inf" ja ":nan", jotka liittyvät äärettömyyteen ja NaN-arvoihin.
  • Sovelluksen määrittämät SQL-funktioiden nimet voivat mennä päällekkäin avainsanojen CROSS, FULL, INNER, LEFT, NATURAL, OUTTER ja RIGHT kanssa.
  • PRAGMA integrity_checkin ominaisuuksia on laajennettu. Lisätty tarkistus NaN-arvojen määrittämiseksi sarakkeissa, joissa on NOT NULL -ehto. Virheilmoitusten tietosisältöä parannettu.
  • Istunto-lisäosa mahdollistaa muutosten sieppaamisen taulukoista, joissa ei ole ROWID-tunnusta.
  • "Subsec"-muunnin on lisätty toimintoihin, joilla työskennellään kellonaikojen ja päivämäärien kanssa sekuntien murto-osien käyttämiseksi.
  • Taulukko- ja JSON-objektien oletusrekursion syvyys on laskettu 2000:sta 1000:een.

Lisäksi on luotu DuckDB 0.8.0 DBMS -julkaisu, joka kehittää SQLite-version, jota on laajennettu ominaisuuksilla ja optimoinnilla analyyttisten kyselyiden suorittamiseen, jotka kattavat merkittävän osan tallennetusta tiedosta, esimerkiksi suorittamalla koko sisällön aggregointia. taulukoista tai useiden suurten taulukoiden yhdistämisestä. Tarjoaa edistyneen SQL:n murteen, joka sisältää lisäominaisuuksia erittäin monimutkaisten ja aikaa vievien kyselyjen käsittelyyn, ja tukee myös monimutkaisia ​​tyyppejä (taulukoita, rakenteita, liitoksia), useiden kyselyjen suorittamista samanaikaisesti ja kyselyjen suorittamista suoraan CSV-, JSON- ja Parquet-tiedostoista. . On mahdollista tuoda PostgreSQL DBMS:stä.

Projektissa käytetään SQLiten shell-koodin lisäksi erillisessä kirjastossa olevaa PostgreSQL:n jäsentäjää, MonetDB:n Date Math -komponenttia, omaa ikkunatoimintojen toteutusta (perustuu Segment Tree Aggregation -algoritmiin), säännölliseen lausekkeeseen perustuvaa prosessoria. RE2-kirjasto, oma kyselyn optimoija ja MVCC-ohjausmekanismi tehtävien samanaikaiseen suorittamiseen (Multi-Version Concurrency Control) sekä vektorisoitu kyselyn suoritusmoottori, joka perustuu Hyper-Pipelining Query Execution -algoritmiin, joka mahdollistaa suuria arvojoukkoja käsitellä kerralla yhdessä toimenpiteessä. Projektikoodia jaetaan MIT-lisenssillä.

DuckDB:n uudessa versiossa:

  • Lisätty uusia lausekkeita "PIVOT" ja "UNPIVOT" rivien muuttamiseksi sarakkeiksi ja päinvastoin.
  • Parannettu rinnakkaistoiminto datan tuonnissa ja viennissä. Oletusarvoisesti monisäikeinen luku CSV-tiedostoista ja monisäikeinen kirjoitus toteutetaan käytettäessä Parquet-, CSV- ja JSON-muotoja.
  • Lisätty "**"-operaattori, joka iteroi rekursiivisesti hakemistoja määritettäessä tiedostopolkuja (esimerkiksi FROM "'data/glob/crawl/stackoverflow/**/*.csv';").
  • Lisätty tuki yhdistämisoperaatioille (JOIN) datalle aikasarjan muodossa (parametriarvojen viipaleet tietyin aikavälein), joissa tietueiden yhdistämisen kriteeri ei ole tarkka, vaan likimääräinen arvojen yhteensattuma. kentässä ajan kanssa (voit esimerkiksi yhdistää tietueita, jotka eroavat enintään 1 minuutilla).
  • Toteutettu tietokannan metatietojen laiska lataus, mikä mahdollisti DBMS:n käynnistämisen nopeuttamisen kymmeniä kertoja.
  • Lisätty tuki mukautettujen toimintojen yhdistämiseen Pythonissa.
  • Lisätty tuki ADBC (Arrow Database Connectivity) API:lle tietojen siirtämiseen Apache Arrow -sovelluksella.
  • Sidos on toteutettu integrointia varten Swift-koodin kanssa.
  • Muutettiin jako-operaattorin ("/") käyttäytymistä suorittamaan liukulukuja oletusarvoisesti kokonaislukutoimintojen sijaan. Kokonaislukujaolle ehdotetaan uutta operaattoria "//". Vanha toiminta voidaan palauttaa asettamalla "SET integer_division=true;".
  • Nollatietueen huomioon ottaminen lajittelussa on muutettu "NULLS FIRST" -tilasta "NULLS LAST" eli "NULLS LAST". NULL-arvot tulostetaan nyt luettelon loppuun eikä alkuun. Vanha toiminta voidaan palauttaa asettamalla "SET default_null_order='nulls_first';".

Lisäksi voidaan mainita Facebookin kehittämä CG/SQL-projekti, joka tarjoaa koodigeneraattorin tallennettujen toimintojen käyttämiseen SQLiten kanssa. CG/SQL:n avulla voit kirjoittaa tallennettuja proseduureja T-SQL:n erityisellä murteella (Transact-SQL), joka mahdollistaa C-standardin kirjaston toimintojen kutsumisen ja tietojen käytön SQLitessa. Luodut tallennetut proseduurit käännetään C-koodiksi, joka käyttää SQLite C API:ta tiettyjen toimintojen suorittamiseen ja monimutkaisten kyselyjen käsittelyyn. Käännetyt tallennetut proseduurit voidaan yhdistää C-, Java- ja Objective-C-ohjelmiin. Projektikoodi on kirjoitettu C-kielellä ja sitä jaetaan MIT-lisenssillä.

Lähde: opennet.ru

Lisää kommentti