SQLite doda podporo WASM za uporabo DBMS v spletnem brskalniku

Razvijalci SQLite razvijajo projekt za implementacijo zmožnosti prevajanja knjižnice v vmesno kodo WebAssembly, ki se lahko izvaja v spletnem brskalniku in je primerna za organizacijo dela z bazo podatkov iz spletnih aplikacij v JavaScriptu. Koda za podporo WebAssembly je bila dodana v glavni repozitorij projekta. Za razliko od API-ja WebSQL, ki temelji na SQLite, je WASM SQLite popolnoma izoliran od brskalnika in ne vpliva na njegovo varnost (Google se je odločil opustiti podporo za WebSQL v Chromu, potem ko je bilo mogoče prek WebSQL izkoristiti več ranljivosti v SQLite za napad na brskalnik) .

Cilj projekta je zagotoviti delujoč okvir JavaScript, ki je po funkcionalnosti enak API-ju SQLite. Spletnim razvijalcem je na voljo visokonivojski objektno orientiran vmesnik za delo s podatki v slogu sql.js ali Node.js, vezava preko C API nizke ravni in API, ki temelji na mehanizmu Web Worker, ki omogoča ustvarite asinhrone upravljalnike, ki se izvajajo v ločenih nitih. Da bi skrili zapletenost organizacije dela s tokovi na vrhu API-ja, ki temelji na spletnem delavcu, se razvija tudi različica programskega vmesnika, ki temelji na mehanizmu Promise.

Podatke, ki jih spletne aplikacije shranjujejo v WASM različici SQLite, je mogoče lokalizirati znotraj trenutne seje (izgubiti po ponovnem nalaganju strani) ali shraniti na strani odjemalca (shraniti med sejami). Za trajno shranjevanje so bila pripravljena zaledja za postavitev podatkov v lokalni datotečni sistem z uporabo OPFS (Origin-Private FileSystem, razširitev API-ja za dostop do datotečnega sistema, ki je trenutno na voljo samo v brskalnikih, ki temeljijo na WebKit in Chromium) in v lokalni shrambi brskalnika, ki temelji na API-ju window.localStorage in window.sessionStorage. Pri uporabi localStorage/sessionStorage se podatki odražajo v ustreznih shrambah v formatu ključ/vrednost, pri uporabi OPFS pa sta na voljo dve možnosti: simulacija navideznega FS z uporabo WASMFS in ločena implementacija sqlite3_vfs, ki ponuja plast SQLite VFS, ki temelji na OPFS.

Za vgradnjo SQLite v pogled WASM se uporablja prevajalnik Emscripten (dovolj je zgraditi razširitev ext/wasm: “./configure —enable-all; make sqlite3.c; cd ext/wasm; make”). Rezultat sta datoteki sqlite3.js in sqlite3.wasm, ki ju lahko vključite v svoj projekt JavaScript (primer HTML in JavaScript).

Vir: opennet.ru

Dodaj komentar