SQLite legger til WASM-støtte for bruk av DBMS i en nettleser

SQLite-utviklere utvikler et prosjekt for å implementere muligheten til å kompilere biblioteket til WebAssembly mellomkode, som kan kjøres i en nettleser og er egnet for å organisere arbeid med databasen fra webapplikasjoner i JavaScript. Kode for å støtte WebAssembly er lagt til hovedprosjektet. I motsetning til WebSQL API, som er basert på SQLite, er WASM SQLite fullstendig isolert fra nettleseren og påvirker ikke sikkerheten (Google bestemte seg for å avvikle støtte for WebSQL i Chrome etter at flere sårbarheter i SQLite kunne utnyttes gjennom WebSQL for å angripe nettleseren) .

Målet med prosjektet er å gi et fungerende JavaScript-rammeverk som er identisk i funksjonalitet med SQLite API. Webutviklere er utstyrt med et objektorientert grensesnitt på høyt nivå for å arbeide med data i stil med sql.js eller Node.js, en binding over lavnivå C API og en API basert på Web Worker-mekanismen, som tillater deg for å lage asynkrone behandlere utført i separate tråder. For å skjule vanskelighetene med å organisere arbeid med strømmer på toppen av Web Worker-basert API, utvikles også en versjon av programgrensesnittet basert på Promise-mekanismen.

Dataene som nettapplikasjoner lagrer i WASM-versjonen av SQLite kan lokaliseres innenfor gjeldende sesjon (tapt etter sideinnlasting) eller lagres på klientsiden (lagres mellom økter). For permanent lagring har backends blitt forberedt for å plassere data i det lokale filsystemet ved hjelp av OPFS (Origin-Private FileSystem, en utvidelse til File System Access API, foreløpig kun tilgjengelig i nettlesere basert på WebKit og Chromium) og i lokal nettleserlagring basert på window.localStorage API og window.sessionStorage. Når du bruker localStorage/sessionStorage, reflekteres dataene i de tilsvarende lagrene i et nøkkel/verdi-format, og ved bruk av OPFS er det to alternativer: simulering av en virtuell FS ved bruk av WASMFS og en separat implementering av sqlite3_vfs, som tilbyr et SQLite VFS-lagbasert på OPFS.

For å bygge SQLite inn i en WASM-visning, brukes Emscripten-kompilatoren (det er nok å bygge ext/wasm-utvidelsen: "./configure —enable-all; make sqlite3.c; cd ext/wasm; make"). Utdataene er sqlite3.js- og sqlite3.wasm-filer, som kan inkluderes i JavaScript-prosjektet ditt (HTML- og JavaScript-eksempel).

Kilde: opennet.ru

Legg til en kommentar