A DBMS SQLite 3.42 és a DuckDB 0.8.0 kiadása. CG/SQL az SQLite tárolt eljárások megvalósításával

Megjelent az SQLite 3.42, egy plug-in könyvtárként tervezett könnyű DBMS kiadása. Az SQLite kódot nyilvánosan terjesztik, azaz. korlátozás nélkül és ingyenesen használható bármilyen célra. Az SQLite fejlesztőinek pénzügyi támogatását egy speciálisan létrehozott konzorcium biztosítja, amelybe olyan cégek tartoznak, mint az Adobe, az Oracle, a Mozilla, a Bentley és a Bloomberg.

Nagy változások:

  • Az FTS5 teljes szövegű indexeknél a biztonságos törlés parancs kerül megvalósításra, amely a törlés után teljesen megtisztítja az összes maradék adatot.
  • A JSON formátumú adatok feldolgozására szolgáló funkciók mostantól támogatják a JSON5 bővítményeket.
  • Továbbfejlesztett lekérdezéstervező. A megtekintések számának optimalizálása alapértelmezés szerint engedélyezve van. A nem használt oszlopok kezelésének megszüntetése az allekérdezésekben. Továbbfejlesztett push-down optimalizálás megvalósítása.
  • "--unsafe-testing" opció hozzáadva a CLI-hez, hogy lehetővé tegye néhány veszélyes parancs, például a ".testctrl" használatát a tesztelés során. Csökkentett módban ("--safe") a ".log on" és ".log off" parancs engedélyezett. Támogatás hozzáadva a "—" határolóhoz azokhoz az argumentumokhoz, amelyek után az opciófeldolgozás le van tiltva. ":inf" és ":nan" paraméterek hozzáadva a végtelenséghez és a NaN-értékekhez.
  • Az alkalmazás által definiált SQL-függvények nevei keresztezhetik a CROSS, FULL, INNER, LEFT, NATURAL, OUTER és RIGHT kulcsszavakat.
  • Kibővített PRAGMA integrity_check képességek. Hozzáadott ellenőrzés a NaN érték megadásához a NOT NULL feltétellel rendelkező oszlopokban. A hibaüzenetek továbbfejlesztett információtartalma.
  • A munkamenet-összeadás lehetővé teszi a ROWID nélküli táblák változásainak elfogását.
  • A "subsec" módosító hozzáadásra került az idővel és dátummal történő munkavégzéshez a másodperc törtrészeinek használatához.
  • A tömbök és JSON-objektumok alapértelmezett rekurziós mélysége csökkentett 2000-ről 1000-re.

Emellett megalakult a DuckDB 0.8.0 DBMS kiadás, amely az SQLite változatot fejleszti, olyan funkciókkal és optimalizálással bővítve, amelyek lehetővé teszik a tárolt adatok jelentős részét lefedő elemző lekérdezések végrehajtását, például a táblák teljes tartalmának összesítését vagy több nagy tábla összevonását. Az SQL nyelv kiterjesztett dialektusa biztosított, beleértve a nagyon összetett és hosszan futó lekérdezések kezelésére szolgáló további lehetőségeket, valamint az összetett típusok (tömbök, struktúrák, uniók) támogatását, több lekérdezés egyidejű végrehajtását, valamint a lekérdezések végrehajtását közvetlenül CSV, JSON és Parquet formátumú fájlokból. PostgreSQL DBMS-ből importálható.

A projekt az SQLite shell kódja mellett PostgreSQL elemzőt, MonetDB Date Math komponenst, ablakfüggvények saját implementációját (a Segment Tree Aggregation algoritmus alapján), RE2 könyvtáron alapuló reguláris kifejezés processzort, saját lekérdezés optimalizálót, MVCC mechanizmust a feladatok egyidejű konverziós végrehajtására (Control query vektorizált) használ. a Hyper-Pipelining Query Execut algoritmuson alapuló motor, amely lehetővé teszi nagy értékkészletek egyszerre történő feldolgozását egy műveletben. A projekt kódját az MIT licence alatt terjesztik.

A DuckDB új verziójában:

  • Új „PIVOT” és „UNPIVOT” kifejezések hozzáadva a sorok oszlopokká alakításához és fordítva.
  • Továbbfejlesztett párhuzamosítás adatok importálásakor és exportálásakor. Alapértelmezés szerint a CSV formátumú fájlok több adatfolyamba történő olvasása és a többszálú írás valósul meg, ha Parquet, CSV és JSON formátumokat használ.
  • "**" operátor hozzáadva a könyvtárak rekurzív iterációjához a fájl útvonalak meghatározásakor (pl. FROM "'data/glob/crawl/stackoverflow/**/*.csv';").
  • Hozzáadott támogatás az összevonási műveletekhez (JOIN) idősorok formájában (paraméterértékek szeletei meghatározott időközönként), amelyben a rekordok egyesítésének kritériuma nem pontos, hanem hozzávetőleges egy mező értékeinek egyezése az idővel (például kombinálhatja azokat a rekordokat, amelyeknek az ideje legfeljebb 1 perc eltér).
  • Megvalósult az adatbázis metaadatok késleltetett betöltése, amely lehetővé tette a DBMS elindításának több tucatszoros felgyorsítását.
  • Támogatás hozzáadva az egyéni funkciók Pythonban való összekapcsolásához.
  • Támogatás hozzáadva az ADBC (Arrow Database Connectivity) API-hoz az Apache Arrow használatával történő adatátvitelhez.
  • Megvalósított kötés a Swift kóddal való integrációhoz.
  • Módosítottuk az osztás („/”) operátor viselkedését, amely mostantól alapértelmezés szerint lebegőpontos számításokat hajt végre egész műveletek helyett. Egy új "//" operátort javasoltak egész számokkal való osztáshoz. A régi viselkedés visszaállítható a "SET integer_division=true;" beállításával.
  • A nullrekordok elszámolásának módszere rendezéskor „NULLS FIRST”-ről „NULLS LAST”-ra módosult, azaz. A NULL értékek mostantól a lista végén jelennek meg, nem pedig a lista elején. A régi viselkedés visszaállítható a "SET default_null_order='nulls_first';" beállításával.

Említésre méltó továbbá a Facebook által kifejlesztett CG/SQL projekt, amely kódgenerátort biztosít a tárolt eljárások SQLite-tal történő használatához. A CG/SQL lehetővé teszi a tárolt eljárások megtervezését a T-SQL speciális dialektusában (Transact-SQL), amely lehetővé teszi a szabványos C könyvtár funkcióinak meghívását és az adatok elérését az SQLite-ban. A generált tárolt eljárások C kódba vannak fordítva, amely az SQLite C API-t használja meghatározott műveletek végrehajtására és összetett lekérdezések feldolgozására. A lefordított tárolt eljárások C, Java és Objective-C programokhoz kapcsolhatók. A projekt kódja C nyelven íródott, és az MIT licenc alatt kerül terjesztésre.

Forrás: opennet.ru

Hozzászólás