Aggiunto il supporto SQLite WASM per utilizzare il DBMS in un browser web

SQLite

è un sistema di gestione di database relazionali conforme ad ACID, contenuto in una libreria relativamente piccola scritta in C

I Gli sviluppatori SQLite stanno sviluppando un progetto da implementare la capacità di compilare la libreria in a codice WebAssembly intermedio che può essere eseguito in un browser web ed è adatto per organizzare il lavoro con il database da applicazioni web nel linguaggio JavaScript.

L'obiettivo progetto consiste nel fornire un collegamento JavaScript funzionale che è 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, avvolgendo un'API C di basso livello e un'API basata sul meccanismo Web Worker che consente la creazione asincrona controller che girano su thread separati.

Per nascondere le complessità del threading sull'API basata su Web Worker, Una variante di l'interfaccia di programmazione basata sul meccanismo Promettere.

I dati archiviati dalle applicazioni Web nella versione WASM di SQLite possono trovarsi all'interno della sessione corrente (persi dopo il ricaricamento della pagina) o essere mantenuti sul lato client (permanere tra le sessioni).

Per l'archiviazione permanente, i backend sono stati preparati per inserire i dati in un file system locale utilizzando OPFS (Origin-Private FileSystem, estensione dell'API di accesso al file system, attualmente disponibile solo nei browser WebKit e basati su Chromium) e l'archiviazione locale del browser basata sulle API window.localStorage e window.sessionStorage.

Quando si utilizza localStorage/sessionStorage, i dati vengono mappati agli archivi chiave/valore appropriati, mentre quando si utilizza OPFS, sono disponibili due opzioni: simulazione di un FS virtuale utilizzando WASMFS e un'implementazione sqlite3_vfs separata che offre un livello VFS basato su SQLite. in OPFS .

Il compilatore Emscripten viene utilizzato per creare SQLite in una rappresentazione WASM. Il risultato sono i file sqlite3.js e sqlite3.wasm che puoi includere nel tuo progetto JavaScript (esempio HTML e JavaScript).

degli obiettivi specifici di questo progetto sono citati:

Tranne dove indicato nei non-target, fornisci un wrapper più o meno completo di funzionalità per l'API C di sqlite3, nella misura consentita dalla parità delle funzionalità di WASM con C. In effetti, fornisci almeno le seguenti API .

  • Associa un'API sqlite3 di basso livello che sia il più vicino possibile a quella nativa in termini di utilizzo.
  • Un'API OO di livello superiore, più simile alle implementazioni di stile sql.js e node.js.
  • Un'API basata sui lavoratori che comunica con le API di cui sopra tramite messaggi di lavoro. Questo è progettato per essere utilizzato sul thread principale, con API di livello inferiore installate su un thread di lavoro e per comunicare con loro tramite messaggi di lavoro.
  • Una variante basata su Promise dell'API di lavoro che nasconde completamente gli aspetti di comunicazione tra thread dell'utente.
  • Per quanto possibile, supporta l'archiviazione persistente lato client utilizzando le API JS disponibili. Al momento della stesura di questo articolo, ciò include il Source Private File System (OPFS) e l'archiviazione (molto limitata) tramite i backend window.localStorage e .window.sessionStorage

Quanto a obiettivi non specifici:

  • Poiché WASM è una tecnologia incentrata sul web e UTF-8 è il re delle codifiche in quel regno, non ci sono piani attuali per supportare le API sqlite3 relative a UTF16.
  • Sebbene il supporto per i runtime WASM fuori dal browser sia diffuso, questo progetto è attualmente (fine 2022) focalizzato solo su target browser. Sebbene i dettagli di implementazione relativi al Web abbiano la precedenza e i componenti JavaScript dell'API si concentrino specificamente sui client browser, il modulo WASM di livello inferiore "dovrebbe" funzionare in ambienti WASM non Web.
  • Compatibilità con piattaforme vecchie o di nicchia. WASM è progettato per un web moderno e richiede piattaforme moderne. Allo stesso modo, le opzioni della libreria sqlite3 deprecate verranno completamente rimosse dall'interfaccia WASM.

Il codice per il supporto di WebAssembly è stato aggiunto al repository principale del progetto. A differenza dell'API WebSQL, che è basata su SQLite, WASM SQLite è completamente isolato dal browser e non ne pregiudica la sicurezza (Google ha deciso di abbandonare il supporto per WebSQL in Chrome dopo diverse vulnerabilità in SQLite che potrebbero essere sfruttate tramite WebSQL per attaccare il Navigatore ).

finalmente se lo sei interessati a saperne di più, puoi controllare i dettagli nel seguente link


Lascia un tuo commento

L'indirizzo email non verrà pubblicato. I campi obbligatori sono contrassegnati con *

*

*

  1. Responsabile del trattamento: AB Internet Networks 2008 SL
  2. Scopo dei dati: controllo SPAM, gestione commenti.
  3. Legittimazione: il tuo consenso
  4. Comunicazione dei dati: I dati non saranno oggetto di comunicazione a terzi se non per obbligo di legge.
  5. Archiviazione dati: database ospitato da Occentus Networks (UE)
  6. Diritti: in qualsiasi momento puoi limitare, recuperare ed eliminare le tue informazioni.