SQLite aggiunge il supporto WASM per l'utilizzo del DBMS in un browser web

Gli sviluppatori SQLite stanno sviluppando un progetto per implementare la capacità di compilare la libreria in codice intermedio WebAssembly, in grado di funzionare in un browser web e adatto per organizzare il lavoro con il database da applicazioni web in JavaScript. Il codice per supportare WebAssembly è stato aggiunto al repository principale del progetto. A differenza dell'API WebSQL, che si basa su SQLite, WASM SQLite è completamente isolato dal browser e non ne pregiudica la sicurezza (Google ha deciso di deprecare il supporto per WebSQL in Chrome dopo che diverse vulnerabilità in SQLite potrebbero essere sfruttate tramite WebSQL per attaccare il browser) .

L'obiettivo del progetto è fornire un framework JavaScript funzionante che sia identico nella funzionalità all'API SQLite. Agli sviluppatori Web viene fornita un'interfaccia orientata agli oggetti di alto livello per lavorare con i dati nello stile di sql.js o Node.js, un collegamento sull'API C di basso livello e un'API basata sul meccanismo Web Worker, che consente di creare gestori asincroni eseguiti in thread separati. Per nascondere le complessità dell'organizzazione del lavoro con i flussi sull'API basata su Web Worker, è in fase di sviluppo anche una versione dell'interfaccia del programma basata sul meccanismo Promise.

I dati archiviati dalle applicazioni Web nella versione WASM di SQLite possono essere localizzati all'interno della sessione corrente (persi dopo il ricaricamento della pagina) o archiviati sul lato client (salvati tra le sessioni). Per l'archiviazione permanente, sono stati preparati dei backend per inserire i dati nel file system locale utilizzando OPFS (Origin-Private FileSystem, un'estensione dell'API File System Access, attualmente disponibile solo nei browser basati su WebKit e Chromium) e nell'archiviazione del browser locale basata sull'API window.localStorage e window.sessionStorage. Quando si utilizza localStorage/sessionStorage, i dati si riflettono negli archivi corrispondenti in un formato chiave/valore e quando si utilizza OPFS, ci sono due opzioni: simulare un FS virtuale utilizzando WASMFS e un'implementazione separata di sqlite3_vfs, offrendo un livello SQLite VFS basato su OPFS.

Per costruire SQLite in una vista WASM, viene utilizzato il compilatore Emscripten (è sufficiente costruire l'estensione ext/wasm: “./configure —enable-all; make sqlite3.c; cd ext/wasm; make”). L'output sono i file sqlite3.js e sqlite3.wasm, che possono essere inclusi nel tuo progetto JavaScript (esempio HTML e JavaScript).

Fonte: opennet.ru

Aggiungi un commento