SQLite fügt WASM-Unterstützung für die Verwendung des DBMS in einem Webbrowser hinzu

SQLite-Entwickler entwickeln ein Projekt, um die Möglichkeit zu implementieren, die Bibliothek in WebAssembly-Zwischencode zu kompilieren, der in einem Webbrowser ausgeführt werden kann und für die Organisation der Arbeit mit der Datenbank aus Webanwendungen in JavaScript geeignet ist. Code zur Unterstützung von WebAssembly wurde dem Hauptprojekt-Repository hinzugefügt. Im Gegensatz zur WebSQL-API, die auf SQLite basiert, ist WASM SQLite vollständig vom Browser isoliert und beeinträchtigt dessen Sicherheit nicht (Google hat beschlossen, die Unterstützung für WebSQL in Chrome einzustellen, nachdem mehrere Schwachstellen in SQLite über WebSQL ausgenutzt werden konnten, um den Browser anzugreifen). .

Ziel des Projekts ist die Bereitstellung eines funktionierenden JavaScript-Frameworks, dessen Funktionalität mit der SQLite-API identisch ist. Webentwicklern steht eine objektorientierte High-Level-Schnittstelle zum Arbeiten mit Daten im Stil von sql.js oder Node.js, eine Bindung über die Low-Level-C-API und eine auf dem Web Worker-Mechanismus basierende API zur Verfügung, die dies ermöglicht Sie können asynchrone Handler erstellen, die in separaten Threads ausgeführt werden. Um die Feinheiten der Arbeitsorganisation mit Streams über der Web Worker-basierten API zu verbergen, wird auch eine Version der Programmschnittstelle entwickelt, die auf dem Promise-Mechanismus basiert.

Die Daten, die Webanwendungen in der WASM-Version von SQLite speichern, können innerhalb der aktuellen Sitzung lokalisiert werden (verloren nach dem Neuladen der Seite) oder auf der Clientseite gespeichert werden (zwischen Sitzungen gespeichert). Für die dauerhafte Speicherung wurden Backends vorbereitet, um Daten mithilfe von OPFS (Origin-Private FileSystem, eine Erweiterung der File System Access API, derzeit nur in Browsern auf Basis von WebKit und Chromium) im lokalen Dateisystem und im lokalen Browserspeicher abzulegen auf der window.localStorage-API und window.sessionStorage. Bei der Verwendung von localStorage/sessionStorage werden die Daten in einem Schlüssel/Wert-Format in den entsprechenden Speichern widergespiegelt, und bei der Verwendung von OPFS gibt es zwei Optionen: Simulieren eines virtuellen FS mithilfe von WASMFS und einer separaten Implementierung von sqlite3_vfs, was eine SQLite-VFS-Schicht bietet auf OPFS.

Um SQLite in eine WASM-Ansicht zu integrieren, wird der Emscripten-Compiler verwendet (es reicht aus, die ext/wasm-Erweiterung zu erstellen: „./configure –enable-all; make sqlite3.c; cd ext/wasm; make“). Die Ausgabe sind die Dateien sqlite3.js und sqlite3.wasm, die in Ihr JavaScript-Projekt eingebunden werden können (HTML- und JavaScript-Beispiel).

Source: opennet.ru

Kommentar hinzufügen