Van afegir a SQLite el suport WASM per utilitzar el DBMS en un navegador web

SQLite

és un sistema de gestió de bases de dades relacional compatible amb ACID, continguda en una relativament petita biblioteca escrita a C

Els desenvolupadors de SQLite estan desenvolupant un projecte per implementar la capacitat de compilar la biblioteca en un codi WebAssembly intermedi que es pot executar en un navegador web i és adequat per organitzar el treball amb la base de dades des d'aplicacions web al llenguatge JavaScript.

l'objectiu del projecte és proporcionar un enllaç de JavaScript funcional que sigui idèntic en funcionalitat a l'API de SQLite. Els desenvolupadors web tenen una interfície orientada a objectes d'alt nivell per treballar amb dades a l'estil de sql.js o Node.js, embolicant una API C de baix nivell i una API basada en el mecanisme Web Worker que permet crear controladors asincrònics que s'executen en fils separats.

Per amagar les complexitats d'organitzar el treball amb subprocessos sobre l'API basada en Web Worker, també s'està desenvolupant una variant de la interfície de programació basada en el mecanisme Promesa.

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 persistir al costat del client (persistir entre sessions).

Per a l'emmagatzematge permanent, s'han preparat backends per col·locar dades en un sistema de fitxers local utilitzant OPFS (Origin-Private FileSystem, extensió a l'API d'accés al sistema de fitxers, actualment només disponible en navegadors basats en WebKit i Chromium) i emmagatzematge local del navegador basat en les API window.localStorage i window.sessionStorage.

Quan s'usa localStorage/sessionStorage, les dades s'assignen als emmagatzematges de clau/valor apropiats, mentre que quan s'usa OPFS, hi ha dues opcions: simular un FS virtual usant WASMFS i una implementació separada de sqlite3_vfs que ofereix una capa SQLite VFS basada a OPFS.

El compilador Emscripten es fa servir per construir SQLite en una representació WASM. El resultat són els fitxers sqlite3.js i sqlite3.wasm que podeu incloure al vostre projecte de JavaScript (exemple d'HTML i JavaScript).

Dels objectius en concret d'aquest projecte s'esmenten:

Excepte on s'indiqui en els no objectius, proporcioneu un embolcall més o menys complet de característiques per a l'API C de sqlite3, en la mesura que ho permeti la paritat de característiques de WASM amb C. De fet, proporcioneu almenys les següents API .

  • Vinculeu una API sqlite3 de baix nivell que sigui el més propera possible a la nativa en termes d'ús.
  • Una API OO de nivell superior més semblant a les implementacions d'estil sql.js i node.js.
  • Una API basada en treballadors que es comunica amb les anteriors API a través de missatges de treballadors. Aquest està dissenyat per utilitzar-se al subprocés principal, amb les API de nivell inferior instal·lades en un subprocés de Worker i comunicar-s'hi a través de missatges de Worker.
  • Una variant basada en Promise de Worker API que oculta completament els aspectes de comunicació entre subprocessos de l'usuari.
  • En la mesura del possible, admeteu l'emmagatzematge persistent del costat del client utilitzant les API de JS disponibles. En el moment d'escriure aquest article, això inclou el sistema de fitxers privat d'origen (OPFS) i l'emmagatzematge (molt limitat) a través dels backends window.localStoragey .window.sessionStorage

Pel que fa als objectius no específics:

  • Com que WASM és una tecnologia centrada a la web i UTF-8 és el rei de les codificacions en aquest àmbit, no hi ha plans actuals per admetre les API sqlite3 relacionades amb UTF16.
  • Tot i que la compatibilitat amb els temps d'execució de WASM fora del navegador està molt estesa, aquest projecte actualment (finals del 2022) se centra només en els objectius del navegador. Tot i que els detalls d'implementació relacionats amb la web tenen prioritat, i els components de JavaScript de l'API se centren específicament en els clients del navegador, el mòdul WASM de nivell inferior hauria de funcionar en entorns WASM que no siguin web.
  • Compatibilitat amb plataformes antigues o de nínxol de mercat. WASM està dissenyat per a una web moderna i requereix plataformes modernes. De la mateixa manera, les opcions de la biblioteca sqlite3 que han quedat en desús s'eliminaran completament de la interfície WASM.

El codi per a la compatibilitat amb el WebAssembly s'ha afegit al dipòsit 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 d'admetre WebSQL a Chrome després de diverses vulnerabilitats a SQLite que podrien explotar-se a través de WebSQL per atacar el navegador).

Finalment si estàs interessat a poder conèixer més sobre això, Pots consultar els detalls en el següent enllaç.


Sigues el primer a comentar

Deixa el teu comentari

La seva adreça de correu electrònic no es publicarà. Els camps obligatoris estan marcats amb *

*

*

  1. Responsable de les dades: AB Internet Networks 2008 SL
  2. Finalitat de les dades: Controlar l'SPAM, gestió de comentaris.
  3. Legitimació: El teu consentiment
  4. Comunicació de les dades: No es comunicaran les dades a tercers excepte per obligació legal.
  5. Emmagatzematge de les dades: Base de dades allotjada en Occentus Networks (UE)
  6. Drets: En qualsevol moment pots limitar, recuperar i esborrar la teva informació.