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 tot 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. De code voor WebAssembly-ondersteuning is toegevoegd aan de hoofdprojectrepository. 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 ervan (Google besloot de ondersteuning voor WebSQL in Chrome stop te zetten 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 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, waarbij een low-level C API wordt omwikkeld, en een API gebaseerd op het Web Worker-mechanisme waarmee u om asynchrone handlers te maken die op afzonderlijke threads draaien. Om de fijne kneepjes van het organiseren van werk met threads bovenop de op Web Worker gebaseerde API te verbergen, wordt ook een variant van de programmeerinterface op basis van het Promise-mechanisme ontwikkeld.

De gegevens die webapplicaties opslaan in de WASM-versie van SQLite kunnen worden gelokaliseerd binnen de huidige sessie (verloren nadat de pagina opnieuw is geladen) of aan de clientzijde blijven bestaan ​​(blijven bestaan ​​tussen sessies). Voor permanente opslag zijn backends voorbereid voor het plaatsen van gegevens in een lokaal bestandssysteem met behulp van OPFS (Origin-Private FileSystem, een uitbreiding op de File System Access API, tot nu toe alleen beschikbaar in browsers gebaseerd op WebKit en Chromium) en in lokale browseropslag gebaseerd op de window.localStorage API en window.sessionStorage. 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 virtueel bestandssysteem simuleren met behulp van WASMFS, en een aparte sqlite3_vfs-implementatie die een op OPFS gebaseerde SQLite VFS-laag biedt .

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

Bron: opennet.ru

Voeg een reactie