Új JSONB-funkciók és komoly teljesítménynövekedés az SQLite 3.51-ben

Segítséget kaptál? Szívesen töltöd itt az idődet? Visszajársz hozzánk? Támogasd a munkákat: Ko-fi és Paypal!

kami911 képe

Az SQLite fejlesztői kiadták a 3.51-es verziót, amely számos fontos újítást hoz a beágyazott rendszerekben és alkalmazásokban világszerte használt, nyílt forrású adatbázismotor számára. A friss kiadás legnagyobb újdonsága az új jsonb_each() és jsonb_tree() függvények megjelenése, amelyek a meglévő JSON-eszközök bináris JSONB formátumú megfelelői. A fejlesztések mellett több teljesítménybeli javítás is érkezett, különösen nagy adatállományokat kezelő lekérdezések esetén. A parancssori és beépített eszközök is okosabbá váltak, miközben a projekt a platformkompatibilitás terén is előrelépett. Mindez tovább erősíti az SQLite pozícióját a könnyű, mégis meglepően erős adatbázisok élmezőnyében.

Új JSONB-eszközök és beépített kiterjesztések

Az SQLite 3.51 legfontosabb újdonsága a jsonb_each() és a jsonb_tree() függvények bevezetése, amelyek a JSON-feldolgozás bináris formátumú, hatékonyabb változatát kínálják. A bináris JSONB formátum (binary JSON format) elsősorban olyan esetekben előnyös, ahol tömeges JSON-adatok gyors bejárására van szükség, mivel a strukturált bináris tárolás csökkenti a parse műveletek számát.

A carray és percentile kiterjesztések alapértelmezetté válása

A fejlesztők ezúttal két népszerű bővítményt, a carray és percentile modulokat is beépítették az alap SQLite-kódfába (amalgamation). Bár ezek továbbra is csak akkor aktiválódnak, ha fordításkor engedélyezik őket, a döntés jelzi, mennyire fontos szerepet töltenek be elemző és tudományos felhasználásokban. A percentile modul például százalékos eloszlások gyors számítását, a carray pedig memóriában tárolt tömbök közvetlen átadását teszi lehetővé SQL-lekérdezéseknek.

Rugalmasabb Tcl-interfész és okosabb parancssori eszközök

A Tcl felület továbbfejlesztése újabb lehetőségeket nyit meg a script-alapú automatizálásban. Az új -asdict flag segítségével a sorok immár szótárként (dictionary) is lekérdezhetők, ami jelentősen egyszerűsíti a strukturált adatok feldolgozását. Ezen felül a felhasználók saját függvényei most már képesek megszakítani a végrehajtást és NULL értéket visszaadni (return SQL NULL), ami rugalmasabb hibakezelést biztosít.

Precízebb időmérés és biztonságosabb imposter táblák

A parancssori eszközök is fejlődtek. A .timer parancs mostantól mikroszekundumos pontossággal mér, ami fejlesztői szemmel különösen hasznos teljesítményelemzéskor. A megjelenítési módok helyesen kezelik a széles Unicode karaktereket, míg a .imposter funkció már read-only imposter táblák létrehozását is támogatja, amelyek biztonságosan működnek együtt a VACUUM műveletekkel.

Biztonsági és stabilitási fejlesztések a mindennapi használatért

Az SQLite 3.51 több finom, de fontos részlettel is foglalkozik. A --ifexists opció óvatosabbá teszi a műveleteket, megelőzve bizonyos véletlen törléseket vagy hibás döntéseket. Emellett bevezetésre került egy új limit, amely megakadályozza, hogy az oszlopszélesség 30 000 karakternél nagyobb legyen. Ez elsősorban a rosszindulatú vagy hibás adatmodellek ellen nyújt védelmet.

Jelentős teljesítménynövekedés a lekérdezés-optimalizálásban

A fejlesztők sokat dolgoztak az adatbázismag gyorsításán is. A rendszer kevesebb CPU-időt használ el olvasási tranzakciók commit műveletekor, korábban felismeri az üres join műveleteket, és kihagyja a redundáns scalar subquery értékeléseket. Ez a mindennapi lekérdezésekben is látványosan csökkentheti a futási időt.

Gyorsabb window függvények nagy adatállományokon

A window függvények, különösen a “BETWEEN … FOLLOWING” feltételt használók, szintén új optimalizálást kaptak. Ennek hatására jelentős gyorsulást tapasztalhatnak mindazok, akik nagy adathalmazokon végeznek időablak-alapú aggregációt vagy elemzést.

Finomhangolt belső eszközök és fejlődő típuskezelés

A beépített printf() és SQL format() függvények immár nem jelenítenek meg olyan értékeket, mint a “-0.00”, ami a korábbi verziókban megzavarhatta a formázási logikát. Az FTS5 modul hibajelzései részletesebbek lettek, míg a STRICT típuskezelés (STRICT typing) mostantól a számított oszlopokra is vonatkozik, ezzel tovább erősítve a sémák következetességét.

WebAssembly, kompatibilitás és adatbiztonság

A 3.51-es verzió a platformok közötti kompatibilitás terén is fejlődést hoz. A JavaScript/WASM verziók immár támogatják a 64 bites WebAssembly futtatást, miközben a hivatalos build továbbra is 32 bites. A 64 bites verzió készítése egyszerű: elég lefuttatni a make parancsot. Emellett javult az összhang a VxWorks rendszerrel, és erősebb védelem került a megsérült POSIX advisory lock műveletekkel szemben, ami csökkenti az adatbázis-sérülések kockázatát.

Az SQLite 3.51 frissítése jól mutatja, hogy az adatbázismotor egyszerre fókuszál teljesítményre, biztonságra és fejlesztői kényelemre. Az új JSONB-eszközök, a gyorsabb lekérdezések és a platformszintű fejlesztések egyaránt azt erősítik, hogy az SQLite továbbra is az egyik legstabilabb és legsokoldalúbb adatbázis-megoldás marad, amely kiválóan illeszkedik mind beágyazott környezetekhez, mind modern webalkalmazásokhoz.