Die Entwickler von SQLite arbeiten an der Implementierung einer Möglichkeit zur Kompilierung der Bibliothek in WebAssembly-Bytecode, der im Webbrowser ausgeführt werden kann und zur Verwaltung von Datenbanken in Webanwendungen mit JavaScript geeignet ist. Der Code zur Unterstützung von WebAssembly wurde in das Haupt-Repository des Projekts aufgenommen. Im Gegensatz zur WebSQL-API, die auf SQLite basiert, ist WASM SQLite vollständig vom Browser isoliert und hat keinen Einfluss auf dessen Sicherheit (Google hat die Unterstützung von WebSQL in Chrome nach mehreren Sicherheitsanfälligkeiten in SQLite, die über WebSQL für Angriffe auf den Browser ausgenutzt werden konnten, eingestellt).
Das Ziel des Projekts ist die Bereitstellung einer funktional identischen JavaScript-Bindung zum SQLite API. Web-Entwicklern wird eine hochgradig objektorientierte Schnittstelle zur Verfügung gestellt, um mit Daten im Stil von sql.js oder Node.js zu arbeiten. Dies umfasst eine Bindung an die low-level C API sowie die API auf Basis des Web Worker Mechanismus, die es ermöglicht, asynchrone Handler in separaten Threads zu erstellen. Um die Feinheiten der Thread-Verwaltung über die Web Worker API zu verbergen, wird auch eine Variante der Programmierschnittstelle auf Basis des Promise-Mechanismus entwickelt.
Daten, die von Webanwendungen in der WASM-Version von SQLite gespeichert werden, können innerhalb einer Sitzung lokalisiert werden (gehen nach dem Neuladen der Seiten verloren) oder auf der Client-Seite (werden zwischen Sitzungen gespeichert). Für die dauerhafte Speicherung sind Backends vorbereitet, um Daten im lokalen Dateisystem mit OPFS (Origin-Private FileSystem, eine Erweiterung der API für den Datei-Systemzugriff, derzeit nur in WebKit- und Chromium-basierten Browsern verfügbar) zu hosten, sowie in lokalen Browser-Speichern basierend auf den APIs window.localStorage und window.sessionStorage. Bei der Verwendung von localStorage/sessionStorage werden die Daten in den entsprechenden Speichern im Schlüssel/Wert-Format gespeichert, während bei der Verwendung von OPFS zwei Varianten zur Verfügung stehen: die Simulation eines virtuellen Dateisystems mit WASMFS und eine separate Implementierung von sqlite3_vfs, die eine SQLite VFS-Schicht auf der Basis von OPFS bietet.
Für den Aufbau von SQLite in der WASM-Darstellung wird der Emscripten-Compiler verwendet (einfach das Erweiterung ext/wasm bauen: „./configure —enable-all; make sqlite3.c; cd ext/wasm; make“). Dabei entstehen die Dateien sqlite3.js und sqlite3.wasm, die in Ihr JavaScript-Projekt eingebunden werden können (Beispiel für HTML und JavaScript).
Quelle: opennet.ru
