SQLite voegt WASM-ondersteuning toe voor het gebruik van het DBMS in een webbrowser

SQLite-ontwikkelaars ontwikkelen een project om de mogelijkheid te implementeren om de bibliotheek te compileren naar tussenliggende WebAssembly-code, die kan worden uitgevoerd in een webbrowser en geschikt is voor het organiseren van databasewerk vanuit webapplicaties in JavaScript. De code voor WebAssembly-ondersteuning is toegevoegd aan de hoofdrepository van het project. In tegenstelling tot de WebSQL API, die gebaseerd is op SQLite, is WASM SQLite volledig geïsoleerd van de browser en heeft het geen invloed op de beveiliging ervan (Google heeft besloten de ondersteuning voor WebSQL in Chrome te beëindigen na verschillende kwetsbaarheden in SQLite die via WebSQL konden worden misbruikt om de browser aan te vallen).

Het doel van het project is om een ​​werkende JavaScript-binding te bieden met een functionaliteit die identiek is aan die van de SQLite API. Webontwikkelaars krijgen een objectgeoriënteerde interface op hoog niveau voor het werken met data in de stijl van sql.js of Node.js, een binding via een low-level C API en een API gebaseerd op het Web Worker-mechanisme, waarmee asynchrone handlers kunnen worden aangemaakt die in afzonderlijke threads worden uitgevoerd. Om de complexiteit van het organiseren van werk met threads via de Web Worker-gebaseerde API te verbergen, wordt er ook een versie van de software-interface gebaseerd op het Promise-mechanisme ontwikkeld.

Gegevens die webapplicaties opslaan in de WASM-versie van SQLite, kunnen binnen de huidige sessie worden gelokaliseerd (verloren na het herladen van de pagina) of aan de clientzijde worden opgeslagen (opgeslagen tussen sessies). Voor permanente opslag worden backends voorbereid op het plaatsen van gegevens in een lokale bestandsserver met behulp van OPFS (Origin-Private FileSystem, een uitbreiding op de File System Access API, momenteel alleen beschikbaar in WebKit en Chromium-gebaseerde browsers) en in lokale browseropslag op basis van de API's window.localStorage en window.sessionStorage. In het geval van localStorage/sessionStorage worden gegevens in de bijbehorende opslag weergegeven in de sleutel/waarde-indeling. Bij gebruik van OPFS zijn er twee opties beschikbaar: een virtuele bestandsserversimulatie met WASMFS en een aparte implementatie van sqlite3_vfs, die een SQLite VFS-laag biedt op basis van OPFS.

Om SQLite in een WASM-representatie te implementeren, wordt de Emscripten-compiler gebruikt (het is voldoende om de extensie ext/wasm te bouwen: "./configure --enable-all; make sqlite3.c; cd ext/wasm; make"). De uitvoerbestanden zijn sqlite3.js en sqlite3.wasm, die u in uw JavaScript-project kunt opnemen (voorbeeld van HTML en JavaScript).

Bron: opennet.ru

Koop betrouwbare hosting voor sites met DDoS-bescherming, VPS VDS-servers 🔥 Koop betrouwbare websitehosting met DDoS-bescherming, VPS- en VDS-servers | ProHoster