SQLite lägger till WASM-stöd för att använda DBMS i en webbläsare

SQLite-utvecklare utvecklar ett projekt för att implementera möjligheten att kompilera biblioteket till en mellanliggande WebAssembly-kod som kan köras i en webbläsare och är lämplig för att organisera arbetet med databasen från webbapplikationer i JavaScript-språket. Koden för WebAssembly-stöd har lagts till i projektets huvudarkiv. Till skillnad från WebSQL API, som är baserat på SQLite, är WASM SQLite helt isolerad från webbläsaren och påverkar inte dess säkerhet (Google beslutade att ta bort stödet för WebSQL i Chrome efter flera sårbarheter i SQLite som kunde utnyttjas genom WebSQL för att attackera webbläsaren ) .

Målet med projektet är att tillhandahålla en fungerande JavaScript-bindning som är identisk i funktionalitet med SQLite API. Webbutvecklare är försedda med ett objektorienterat gränssnitt på hög nivå för att arbeta med data i stil med sql.js eller Node.js, omslutande ett lågnivå C API, och ett API baserat på Web Worker-mekanismen som låter dig för att skapa asynkrona hanterare som körs på separata trådar. För att dölja krångligheterna med att organisera arbetet med trådar ovanpå det Web Worker-baserade API:et utvecklas också en variant av programmeringsgränssnittet baserat på Promise-mekanismen.

Datan som webbapplikationer lagrar i WASM-versionen av SQLite kan lokaliseras inom den aktuella sessionen (förloras efter omladdning av sidan) eller kvarstå på klientsidan (bevaras mellan sessioner). För beständig lagring har backends förberetts för att placera data i ett lokalt filsystem med OPFS (Origin-Private FileSystem, ett tillägg till File System Access API, tillgängligt hittills endast i webbläsare baserade på WebKit och Chromium) och i lokala webbläsarlagringar baserat på window.localStorage API och window.sessionStorage. När du använder localStorage/sessionStorage mappas data till lämpliga nyckel-/värdelager, medan när du använder OPFS finns det två alternativ: simulering av ett virtuellt filsystem med WASMFS och en separat sqlite3_vfs-implementering som erbjuder ett OPFS-baserat SQLite VFS-lager .

För att bygga in SQLite i en WASM-representation används Emscripten-kompilatorn (det räcker med att bygga ext/wasm-tillägget: "./configure --enable-all; make sqlite3.c; cd ext/wasm; make"). Utdata är sqlite3.js- och sqlite3.wasm-filer som du kan inkludera i ditt JavaScript-projekt (HTML- och JavaScript-exempel).

Källa: opennet.ru

Lägg en kommentar