SQLite afegeix suport WASM per utilitzar el SGBD en un navegador web

Els desenvolupadors de SQLite estan desenvolupant un projecte per implementar la capacitat de compilar la biblioteca en codi intermedi WebAssembly, capaç d'executar-se en un navegador web i adequat per organitzar el treball amb la base de dades des d'aplicacions web en JavaScript. S'ha afegit codi per donar suport a WebAssembly al repositori principal del projecte. A diferència de l'API de WebSQL, que es basa en SQLite, WASM SQLite està completament aïllat del navegador i no afecta la seva seguretat (Google va decidir deixar de suportar WebSQL a Chrome després que diverses vulnerabilitats de SQLite poguessin ser explotades mitjançant WebSQL per atacar el navegador) .

L'objectiu del projecte és proporcionar un marc de treball JavaScript que sigui idèntic en funcionalitat a l'API SQLite. Els desenvolupadors web disposen d'una interfície d'alt nivell orientada a objectes per treballar amb dades a l'estil de sql.js o Node.js, una vinculació sobre l'API C de baix nivell i una API basada en el mecanisme Web Worker, que permet podeu crear controladors asíncrons executats en fils separats. Per amagar les complexitats d'organitzar el treball amb fluxos a la part superior de l'API basada en Web Worker, també s'està desenvolupant una versió de la interfície del programa basada en el mecanisme Promise.

Les dades que les aplicacions web emmagatzemen a la versió WASM de SQLite es poden localitzar dins de la sessió actual (perdre's després de recarregar la pàgina) o emmagatzemar-se al costat del client (desar-se entre sessions). Per a l'emmagatzematge permanent, s'han preparat backends per col·locar dades al sistema de fitxers local mitjançant OPFS (Origin-Private FileSystem, una extensió de l'API d'accés al sistema de fitxers, actualment només disponible en navegadors basats en WebKit i Chromium) i en emmagatzematge local basat en navegador. a l'API window.localStorage i window.sessionStorage. Quan s'utilitza localStorage/sessionStorage, les dades es reflecteixen als magatzems corresponents en un format clau/valor, i quan s'utilitza OPFS, hi ha dues opcions: simular un FS virtual mitjançant WASMFS i una implementació independent de sqlite3_vfs, que ofereix una capa SQLite VFS basada. a OPFS.

Per crear SQLite en una vista WASM, s'utilitza el compilador Emscripten (n'hi ha prou amb construir l'extensió ext/wasm: “./configure —enable-all; make sqlite3.c; cd ext/wasm; make”). La sortida són fitxers sqlite3.js i sqlite3.wasm, que es poden incloure al vostre projecte JavaScript (exemple d'HTML i JavaScript).

Font: opennet.ru

Afegeix comentari