SQLite agrega soporte WASM para usar el DBMS en un navegador web

Los desarrolladores de SQLite están desarrollando un proyecto para implementar la capacidad de compilar la biblioteca en código intermedio WebAssembly, capaz de ejecutarse en un navegador web y adecuado para organizar el trabajo con la base de datos desde aplicaciones web en JavaScript. Se ha agregado código para admitir WebAssembly al repositorio principal del proyecto. A diferencia de la API WebSQL, que se basa en SQLite, WASM SQLite está completamente aislado del navegador y no afecta su seguridad (Google decidió dejar de admitir WebSQL en Chrome después de que varias vulnerabilidades en SQLite pudieran explotarse a través de WebSQL para atacar el navegador). .

El objetivo del proyecto es proporcionar un marco de JavaScript funcional que sea idéntico en funcionalidad a la API SQLite. Los desarrolladores web cuentan con una interfaz orientada a objetos de alto nivel para trabajar con datos en el estilo de sql.js o Node.js, un enlace a través de la API C de bajo nivel y una API basada en el mecanismo Web Worker, que permite le permite crear controladores asincrónicos ejecutados en subprocesos separados. Para ocultar las complejidades de organizar el trabajo con flujos sobre la API basada en Web Worker, también se está desarrollando una versión de la interfaz del programa basada en el mecanismo Promise.

Los datos que las aplicaciones web almacenan en la versión WASM de SQLite pueden localizarse dentro de la sesión actual (se pierden después de recargar la página) o almacenarse en el lado del cliente (se guardan entre sesiones). Para el almacenamiento permanente, se han preparado backends para colocar datos en el sistema de archivos local utilizando OPFS (Origin-Private FileSystem, una extensión de la API de acceso al sistema de archivos, actualmente disponible solo en navegadores basados ​​en WebKit y Chromium) y en el almacenamiento del navegador local basado. en la API window.localStorage y window.sessionStorage. Cuando se usa localStorage/sessionStorage, los datos se reflejan en los almacenes correspondientes en un formato clave/valor, y cuando se usa OPFS, hay dos opciones: simular un FS virtual usando WASMFS y una implementación separada de sqlite3_vfs, ofreciendo una capa SQLite VFS basada en OPFS.

Para integrar SQLite en una vista WASM, se utiliza el compilador Emscripten (basta con crear la extensión ext/wasm: “./configure —enable-all; make sqlite3.c; cd ext/wasm; make”). El resultado son archivos sqlite3.js y sqlite3.wasm, que pueden incluirse en su proyecto JavaScript (ejemplo de HTML y JavaScript).

Fuente: opennet.ru

Añadir un comentario