Ondersteuning voor SQLite WASM toegevoegd om de DBMS in een webbrowser te gebruiken

SQLite

is een ACID-compatibel relationeel databasebeheersysteem, opgenomen in een relatief kleine bibliotheek geschreven in C

De SQLite-ontwikkelaars ontwikkelen een project om te implementeren de mogelijkheid om de bibliotheek te compileren in een tussenliggende WebAssembly-code die in een webbrowser kan worden uitgevoerd en geschikt is voor het organiseren van werk met de database vanuit webapplicaties in de JavaScript-taal.

Het doel van het project is om een ​​functionele JavaScript-link te bieden die qua functionaliteit identiek is aan de SQLite API. Webontwikkelaars krijgen een objectgeoriënteerde interface op hoog niveau voor het werken met gegevens in de stijl van sql.js of Node.js, met een low-level C API en een API gebaseerd op het Web Worker-mechanisme waarmee asynchrone controllers die op aparte threads draaien.

Om de complexiteit van threading via de op Web Worker gebaseerde API te verbergen, een variant van de programmeerinterface op basis van het mechanisme: Belofte.

De gegevens die webapplicaties opslaan in de WASM-versie van SQLite kunnen zich binnen de huidige sessie bevinden (verloren gaan na het opnieuw laden van de pagina) of aan de clientzijde blijven bestaan ​​(blijven gedurende verschillende sessies).

Voor permanente opslag zijn backends voorbereid om gegevens op een lokaal bestandssysteem te zetten gebruikmakend van OPFS (Origin-Private FileSystem, uitbreiding van de File System Access API, momenteel alleen beschikbaar in WebKit- en Chromium-gebaseerde browsers) en lokale browseropslag op basis van de window.localStorage- en window.sessionStorage-API's.

Bij gebruik van localStorage/sessionStorage worden de gegevens toegewezen aan de juiste sleutel/waarde-archieven, terwijl er bij gebruik van OPFS twee opties zijn: een virtuele FS simuleren met WASMFS en een afzonderlijke sqlite3_vfs-implementatie die een op SQLite gebaseerde VFS-laag biedt. .

De Emscripten-compiler wordt gebruikt om SQLite te bouwen in een WASM-representatie. Het resultaat zijn sqlite3.js- en sqlite3.wasm-bestanden die u kunt opnemen in uw JavaScript-project (HTML- en JavaScript-voorbeeld).

van de specifieke doelstellingen van dit project worden genoemd:

Behalve waar vermeld in de niet-doelen, moet u een min of meer volledige wrapper van functies voor de sqlite3 C API bieden, voor zover de functiepariteit van WASM met C dit toelaat. Geef in feite ten minste de volgende API's.

  • Bind een low-level sqlite3-API die qua gebruik zo dicht mogelijk bij native komt.
  • Een OO API van een hoger niveau, meer zoals de sql.js en node.js stijlimplementaties.
  • Een op werknemers gebaseerde API die via werknemerberichten communiceert met de bovenstaande API's. Dit is ontworpen om te worden gebruikt op de hoofdthread, met API's op een lager niveau die zijn geïnstalleerd op een werkthread, en om met hen te communiceren via werkberichten.
  • Een op Promise gebaseerde variant van de Worker API die de inter-thread communicatieaspecten van de gebruiker volledig verbergt.
  • Ondersteun, voor zover mogelijk, persistente opslag aan de clientzijde met behulp van beschikbare JS-API's. Op het moment van schrijven omvat dat Source Private File System (OPFS) en (zeer beperkte) opslag via de backends window.localStorage en .window.sessionStorage

Wat niet-specifieke doelstellingen:

  • Aangezien WASM een webgerichte technologie is en UTF-8 de koning van de coderingen op dat gebied is, zijn er momenteel geen plannen om UTF3-gerelateerde sqlite16-API's te ondersteunen.
  • Hoewel ondersteuning voor WASM-runtimes buiten de browser wijdverbreid is, is dit project momenteel (eind 2022) alleen gericht op browserdoelen. Hoewel webgerelateerde implementatiedetails voorrang hebben en de JavaScript-componenten van de API specifiek gericht zijn op browserclients, "zou" de lagere WASM-module moeten werken in niet-web-WASM-omgevingen.
  • Compatibiliteit met oude of nicheplatforms. WASM is ontworpen voor een modern web en vereist moderne platforms. Evenzo zullen verouderde sqlite3-bibliotheekopties volledig uit de WASM-interface worden verwijderd.

De code voor WebAssembly-ondersteuning is toegevoegd aan de hoofdrepository van het project. In tegenstelling tot de WebSQL API, die is gebaseerd op SQLite, is WASM SQLite volledig geïsoleerd van de browser en heeft het geen invloed op de beveiliging (Google heeft besloten de ondersteuning voor WebSQL in Chrome te laten vallen na verschillende kwetsbaarheden in SQLite die via WebSQL kunnen worden misbruikt om de Navigator aan te vallen ).

eindelijk als je bent geïnteresseerd om er meer over te leren, kunt u de details bekijken In de volgende link.


Laat je reactie achter

Uw e-mailadres wordt niet gepubliceerd. Verplichte velden zijn gemarkeerd met *

*

*

  1. Verantwoordelijk voor de gegevens: AB Internet Networks 2008 SL
  2. Doel van de gegevens: Controle SPAM, commentaarbeheer.
  3. Legitimatie: uw toestemming
  4. Mededeling van de gegevens: De gegevens worden niet aan derden meegedeeld, behalve op grond van wettelijke verplichting.
  5. Gegevensopslag: database gehost door Occentus Networks (EU)
  6. Rechten: u kunt uw gegevens op elk moment beperken, herstellen en verwijderen.