sok Az SQLite fejlesztői egy megvalósítandó projektet fejlesztenek ki a könyvtár összeállításának képessége a közbenső WebAssembly kód amely webböngészőben futtatható és alkalmas arra, hogy JavaScript nyelvű webalkalmazásokból szervezzük meg az adatbázissal való munkát.
A cél a projektről egy működő JavaScript-hivatkozás biztosítása amely funkcionalitásában megegyezik az SQLite API-val. A webfejlesztők magas szintű objektum-orientált felületet kapnak az adatokkal való munkavégzéshez sql.js vagy Node.js stílusban, egy alacsony szintű C API-t és a Web Worker mechanizmuson alapuló API-t, amely lehetővé teszi aszinkron létrehozását. vezérlők. amelyek külön szálakon futnak.
A Web Worker-alapú API-n keresztüli szálfűzés bonyolultságának elrejtéséhez Egy változata a mechanizmuson alapuló programozási felület Ígéret.
A webalkalmazások az SQLite WASM-verziójában tárolt adatok az aktuális munkameneten belül helyezkedhetnek el (elvesznek az oldal újratöltése után), vagy megmaradhatnak az ügyféloldalon (a munkamenetek között is megmaradnak).
Az állandó tároláshoz a háttérprogramok felkészültek az adatok helyi fájlrendszerre történő elhelyezésére OPFS (Origin-Private FileSystem, a File System Access API kiterjesztése, jelenleg csak a WebKit és Chromium alapú böngészőkben érhető el) és a böngésző helyi tárhelye a window.localStorage és window.sessionStorage API-kon alapul.
A localStorage/sessionStorage használatakor az adatok a megfelelő kulcs/érték tárolókra vannak leképezve, míg az OPFS használatakor két lehetőség van: egy virtuális FS szimulálása WASMFS használatával, és egy különálló sqlite3_vfs megvalósítás, amely SQLite alapú VFS réteget kínál az OPFS-ben. .
Az Emscripten fordító az SQLite WASM-reprezentációban való felépítésére szolgál. Az eredmény sqlite3.js és sqlite3.wasm fájlok, amelyeket beilleszthet a JavaScript-projektbe (HTML és JavaScript minta).
a konkrét célokról ennek a projektnek a megemlítése:
A nem célpontok között megjelölt esetek kivételével biztosítsa az sqlite3 C API szolgáltatásainak többé-kevésbé teljes csomagolóanyagát, olyan mértékben, amennyire a WASM és a C szolgáltatásparitása lehetővé teszi. Valójában legalább a következő API-kat biztosítsa.
- Kössön össze egy alacsony szintű sqlite3 API-t, amely használat szempontjából a lehető legközelebb áll a natívhoz.
- Magasabb szintű OO API, inkább az sql.js és a node.js stílusú megvalósításokhoz.
- Munkavállalói API, amely a fenti API-kkal dolgozói üzeneteken keresztül kommunikál. Ezt úgy tervezték, hogy a fő szálon használják, alacsonyabb szintű API-kkal egy munkaszálra telepítve, és dolgozói üzeneteken keresztül kommunikáljon velük.
- A Worker API Promise-alapú változata, amely teljesen elrejti a felhasználó szálak közötti kommunikációs vonatkozásait.
- Amennyire lehetséges, támogassa az ügyféloldali állandó tárolást az elérhető JS API-k használatával. Az írás idején ez magában foglalja a Source Private File System (OPFS) és (nagyon korlátozott) tárhelyet a window.localStorage és .window.sessionStorage háttérprogramokon keresztül
Ami nem specifikus célok:
- Mivel a WASM egy webközpontú technológia, és az UTF-8 a kódolások királya ezen a területen, jelenleg nem tervezik az UTF3-hoz kapcsolódó sqlite16 API-k támogatását.
- Míg a böngészőn kívüli WASM-futási környezetek támogatása széles körben elterjedt, ez a projekt jelenleg (2022 végén) csak a böngészőcélokra összpontosít. Bár a webes megvalósítási részletek elsőbbséget élveznek, és az API JavaScript-összetevői kifejezetten a böngészőkliensekre összpontosítanak, az alacsonyabb szintű WASM-modulnak "kell" működnie nem webes WASM-környezetekben.
- Kompatibilitás a régi vagy szűkös platformokkal. A WASM modern webhez készült, és modern platformokat igényel. Hasonlóképpen, az elavult sqlite3 könyvtárbeállítások teljes egészében eltávolításra kerülnek a WASM felületről.
A WebAssembly támogatás kódja bekerült a projekt fő tárházába. Az SQLite-on alapuló WebSQL API-tól eltérően 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-ben számos olyan biztonsági rést találtak, amelyeket a WebSQL-en keresztül kihasználva megtámadhatták a Navigátort ).
végre, ha az vagy szeretne többet megtudni róla, ellenőrizheti a részleteket A következő linken.