Az SQLite fejlesztői egy olyan projektet valósítanak meg, amely lehetővé teszi a könyvtár WebAssembly köztes kódba való fordítását, amely képes a webböngészőben futni és alkalmas adatbázis-kezelésre webalkalmazásokban JavaScript nyelven. A WebAssembly támogatásához szükséges kód hozzá lett adva a projekt fő tárolójához. A WebSQL API-jához, amely az SQLite-ra épül, képest a WASM SQLite teljesen elszigetelt a böngészőtől, és nem befolyásolja annak biztonságát (a Google úgy döntött, hogy felhagy a WebSQL támogatásával a Chrome-ban, miután több, az SQLite-ban fellelhető sebezhetőséget fedeztek fel, amelyeket a WebSQL-on keresztül lehetett kihasználni a böngésző elleni támadásokhoz).
A projekt célja egy működő JavaScript köntös biztosítása, amely funkcióiban megegyezik az SQLite API-jával. A webfejlesztők egy magas szintű, objektumorientált interfészt kapnak az adatok sql.js vagy Node.js stílusú kezelésére, egy alacsony szintű C API-t és Web Worker mechanizmusra épülő API-t, amely lehetővé teszi aszinkron kezelők létrehozását, amelyeket külön szálakban hajtanak végre. A Web Worker-alapú API fölötti szálkezelés nehézségeinek eltüntetése érdekében egy Promise mechanizmuson alapuló interfész változat is fejlődik.
Azok az adatok, amelyeket a webalkalmazások a WASM-version SQLite-ben tárolnak, a jelenlegi munkamenet keretein belül lokalizálhatók (azaz a lapok újratöltésekor elvesznek) vagy elmenthetők a kliens oldalon (azaz a munkamenetek között megmaradnak). Az állandó tárolás érdekében backend-ek készültek az adatok lokális fájlrendszerben történő elhelyezésére OPFS (Origin-Private FileSystem, a File System Access API bővítménye, ami jelenleg csak WebKit és Chromium alapú böngészőkben elérhető) és a lokális böngésző tárolók window.localStorage és window.sessionStorage API-n keresztüli használatára. Ha localStorage/sessionStorage-t használnak, az adatok a megfelelő tárolókban kulcs/érték formátumban jelennek meg, míg OPFS alkalmazásakor két lehetőség áll rendelkezésre: virtuális fájlrendszer szimulálása WASMFS segítségével és korlátozott sqlite3_vfs implementáció, amely SQLite VFS réteget kínál OPFS alapján.
A SQLite WASM-változatába való fordításhoz az Emscripten fordítót használják (elég, ha a kiterjesztést ext/wasm összegyűjtjük: «./configure -enable-all; make sqlite3.c; cd ext/wasm; make»). Az eredményként sqlite3.js és sqlite3.wasm fájlok jönnek létre, amelyeket be lehet illeszteni a saját JavaScript projektbe (HTML és JavaScript példa).
Forrás: opennet.ru
