SQLite dodaje WASM podršku za korištenje DBMS-a u web pretraživaču

SQLite programeri razvijaju projekat za implementaciju mogućnosti kompajliranja biblioteke u WebAssembly međukod, sposoban za rad u web pretraživaču i pogodan za organizaciju rada sa bazom podataka iz web aplikacija u JavaScript-u. Kôd za podršku WebAssembly-a je dodan u glavno spremište projekta. Za razliku od WebSQL API-ja, koji je baziran na SQLite-u, ​​WASM SQLite je potpuno izoliran od pretraživača i ne utječe na njegovu sigurnost (Google je odlučio ukinuti podršku za WebSQL u Chromeu nakon što se nekoliko ranjivosti u SQLite-u moglo iskoristiti kroz WebSQL za napad na pretraživač) .

Cilj projekta je osigurati radni JavaScript okvir koji je po funkcionalnosti identičan SQLite API-ju. Web programeri imaju objektno orijentirano sučelje visokog nivoa za rad sa podacima u stilu sql.js ili Node.js, povezivanje preko C API niskog nivoa i API zasnovan na mehanizmu Web Worker, koji omogućava da kreirate asinkrone rukovaoce koji se izvršavaju u odvojenim nitima. Da bi se sakrile zamršenosti organizacije rada sa streamovima na vrhu API-ja zasnovanog na Web Worker-u, takođe se razvija verzija programskog interfejsa zasnovanog na mehanizmu Promise.

Podaci koje web aplikacije pohranjuju u WASM verziji SQLite-a mogu biti lokalizirani unutar trenutne sesije (izgubljeni nakon ponovnog učitavanja stranice) ili pohranjeni na strani klijenta (spremljeni između sesija). Za trajnu pohranu, backendovi su pripremljeni za postavljanje podataka u lokalni sistem datoteka pomoću OPFS-a (Origin-Private FileSystem, ekstenzija API-ja za pristup sistemu datoteka, trenutno dostupna samo u preglednicima baziranim na WebKit-u i Chromium-u) iu lokalnoj memoriji pretraživača zasnovanom na na window.localStorage API i window.sessionStorage. Kada se koristi localStorage/sessionStorage, podaci se odražavaju u odgovarajućim skladištima u formatu ključ/vrijednost, a kada se koristi OPFS, postoje dvije opcije: simulacija virtuelnog FS-a koristeći WASMFS i zasebna implementacija sqlite3_vfs, koja nudi SQLite VFS sloj baziran na OPFS.

Za ugradnju SQLite-a u WASM pogled, koristi se Emscripten kompajler (dovoljno je izgraditi ekstenziju ext/wasm: “./configure —enable-all; make sqlite3.c; cd ext/wasm; make”). Izlaz su datoteke sqlite3.js i sqlite3.wasm, koje se mogu uključiti u vaš JavaScript projekat (HTML i JavaScript primjer).

izvor: opennet.ru

Dodajte komentar