Az SQLite hozzáadja a WASM támogatást a DBMS webböngészőben való használatához

Az SQLite fejlesztői egy olyan projektet fejlesztenek ki, amely lehetővé teszi a könyvtár WebAssembly köztes kódba való fordítását, amely képes webböngészőben futni, és alkalmas arra, hogy JavaScript-ben webalkalmazásokból szervezze meg az adatbázist. A WebAssembly támogatására szolgáló kód hozzáadásra került a fő projekttárhoz. Az SQLite-on alapuló WebSQL API-val ellentétben a WASM SQLite teljesen el van szigetelve a böngészőtől, és nincs hatással annak biztonságára (a Google úgy döntött, hogy megszünteti a WebSQL támogatását a Chrome-ban, miután az SQLite számos sebezhetőségét kihasználva a WebSQL megtámadhatja a böngészőt) .

A projekt célja egy működő JavaScript-keretrendszer biztosítása, amely működésében megegyezik az SQLite API-val. A webfejlesztők magas szintű objektum-orientált felülettel rendelkeznek az sql.js vagy Node.js stílusú adatokkal való munkavégzéshez, az alacsony szintű C API-n keresztüli kötést és a Web Worker mechanizmuson alapuló API-t, amely lehetővé teszi külön szálakban végrehajtott aszinkron kezelőket hozhat létre. A Web Worker-alapú API-n felüli streamekkel való munkaszervezés bonyolultságának elrejtése érdekében a programfelület Promise mechanizmuson alapuló verzióját is fejlesztik.

A webalkalmazások az SQLite WASM verziójában tárolt adatok lokalizálhatók az aktuális munkameneten belül (elvesznek az oldal újratöltése után), vagy tárolhatók a kliens oldalon (menthetők a munkamenetek között). Az állandó tároláshoz a háttérprogramokat előkészítették az adatok helyi fájlrendszerbe történő elhelyezésére az OPFS (Origin-Private FileSystem, a File System Access API kiterjesztése, jelenleg csak WebKit és Chromium alapú böngészőkben) és helyi böngésző alapú tárolására. a window.localStorage API-n és a window.sessionStorage-on. A localStorage/sessionStorage használatakor az adatok kulcs/érték formátumban jelennek meg a megfelelő tárolókban, OPFS használatakor pedig két lehetőség van: egy virtuális FS szimulálása WASMFS használatával és az sqlite3_vfs külön implementációja, amely SQLite VFS réteg alapú. az OPFS-en.

Az SQLite WASM nézetbe való felépítéséhez az Emscripten fordítót használjuk (elég az ext/wasm kiterjesztést megépíteni: “./configure —enable-all; make sqlite3.c; cd ext/wasm; make”). A kimenet sqlite3.js és sqlite3.wasm fájlok, amelyek beilleszthetők a JavaScript-projektbe (HTML és JavaScript példa).

Forrás: opennet.ru

Hozzászólás