SQLite tilføjer WASM-understøttelse til brug af DBMS i en webbrowser

SQLite-udviklere er ved at udvikle et projekt for at implementere muligheden for at kompilere biblioteket til en mellemliggende WebAssembly-kode, der kan køre i en webbrowser og er velegnet til at organisere arbejde med databasen fra webapplikationer i JavaScript-sproget. Koden til WebAssembly-understøttelse er blevet tilføjet til projektets hovedlager. I modsætning til WebSQL API, som er baseret på SQLite, er WASM SQLite fuldstændig isoleret fra browseren og påvirker ikke dens sikkerhed (Google besluttede at droppe understøttelsen af ​​WebSQL i Chrome efter adskillige sårbarheder i SQLite, der kunne udnyttes gennem WebSQL til at angribe browseren ).

Målet med projektet er at levere en fungerende JavaScript-binding, der i funktionalitet er identisk med SQLite API. Webudviklere er forsynet med en objektorienteret grænseflade på højt niveau til at arbejde med data i stil med sql.js eller Node.js, indpakning over en lav-niveau C API og en API baseret på Web Worker-mekanismen, der giver dig mulighed for at oprette asynkrone handlere, der kører på separate tråde. For at skjule forviklingerne ved at organisere arbejdet med tråde oven på den Web Worker-baserede API, udvikles der også en variant af programmeringsgrænsefladen baseret på Promise-mekanismen.

De data, som webapplikationer gemmer i WASM-versionen af ​​SQLite, kan lokaliseres i den aktuelle session (tabt efter genindlæsning af siden) eller vedblivende på klientsiden (vedvarende mellem sessioner). Til vedvarende lagring er backends blevet forberedt til at placere data i et lokalt filsystem ved hjælp af OPFS (Origin-Private FileSystem, en udvidelse til File System Access API, som indtil videre kun er tilgængelig i browsere baseret på WebKit og Chromium) og i lokale browserlager baseret på window.localStorage API og window.sessionStorage. Når du bruger localStorage/sessionStorage, mappes dataene til de relevante nøgle-/værdilagre, mens der ved brug af OPFS er to muligheder: simulering af et virtuelt filsystem ved hjælp af WASMFS og en separat sqlite3_vfs-implementering, der tilbyder et OPFS-baseret SQLite VFS-lag .

For at bygge SQLite ind i en WASM-repræsentation bruges Emscripten-kompileren (det er nok at bygge ext/wasm-udvidelsen: "./configure --enable-all; make sqlite3.c; cd ext/wasm; make"). Outputtet er sqlite3.js og sqlite3.wasm filer, som du kan inkludere i dit JavaScript-projekt (HTML og JavaScript eksempel).

Kilde: opennet.ru

Tilføj en kommentar