SQLite WASM-Unterstützung hinzugefügt, um das DBMS in einem Webbrowser zu verwenden

SQLite

ist ein ACID-konformes Verwaltungssystem für relationale Datenbanken, das in einer relativ kleinen, in C geschriebenen Bibliothek enthalten ist

Die SQLite-Entwickler entwickeln ein zu implementierendes Projekt die Fähigkeit, die Bibliothek in a zu kompilieren Zwischen-WebAssembly-Code das in einem Webbrowser ausgeführt werden kann und geeignet ist, die Arbeit mit der Datenbank aus Webanwendungen in der Sprache JavaScript zu organisieren.

Das Ziel Projekt ist es, einen funktionierenden JavaScript-Link bereitzustellen die in ihrer Funktionalität mit der SQLite-API identisch ist. Webentwicklern wird eine objektorientierte High-Level-Schnittstelle für die Arbeit mit Daten im Stil von sql.js oder Node.js bereitgestellt, die eine Low-Level-C-API und eine auf dem Web-Worker-Mechanismus basierende API umschließt, die das Erstellen asynchroner Daten ermöglicht Controller, die auf separaten Threads ausgeführt werden.

Um die Komplexität des Threadings über die Web Worker-basierte API zu verbergen, Eine Variante von die Programmierschnittstelle basierend auf dem Mechanismus Versprechen.

Die Daten, die Webanwendungen in der WASM-Version von SQLite speichern, können sich innerhalb der aktuellen Sitzung befinden (nach dem Neuladen der Seite verloren gehen) oder auf der Clientseite bestehen bleiben (über Sitzungen hinweg bestehen bleiben).

Für die dauerhafte Speicherung wurden Backends vorbereitet, um Daten auf einem lokalen Dateisystem abzulegen Verwendung von OPFS (Origin-Private FileSystem, Erweiterung der File System Access API, derzeit nur in WebKit- und Chromium-basierten Browsern verfügbar) und lokalem Browserspeicher basierend auf den APIs window.localStorage und window.sessionStorage.

Bei der Verwendung von localStorage/sessionStorage werden die Daten den entsprechenden Key/Value-Speichern zugeordnet, während es bei der Verwendung von OPFS zwei Optionen gibt: die Simulation eines virtuellen FS mit WASMFS und eine separate sqlite3_vfs-Implementierung, die eine SQLite-basierte VFS-Schicht in OPFS bietet .

Der Emscripten-Compiler wird verwendet, um SQLite in einer WASM-Darstellung zu erstellen. Das Ergebnis sind die Dateien sqlite3.js und sqlite3.wasm, die Sie in Ihr JavaScript-Projekt einfügen können (HTML- und JavaScript-Beispiel).

der konkreten Ziele dieses Projektes genannt werden:

Sofern in den Nichtzielen nicht anders angegeben, stellen Sie einen mehr oder weniger vollständigen Wrapper von Funktionen für die sqlite3-C-API bereit, soweit dies die Funktionsparität von WASM mit C zulässt. Stellen Sie tatsächlich mindestens die folgenden APIs bereit.

  • Binden Sie eine sqlite3-API auf niedriger Ebene, die in Bezug auf die Verwendung so nah wie möglich an der nativen ist.
  • Eine OO-API auf höherer Ebene, eher wie die Implementierungen im Stil von sql.js und node.js.
  • Eine Worker-basierte API, die über Worker-Nachrichten mit den oben genannten APIs kommuniziert. Dies ist für die Verwendung im Haupt-Thread konzipiert, wobei APIs auf niedrigerer Ebene in einem Worker-Thread installiert sind und mit ihnen über Worker-Nachrichten kommunizieren.
  • Eine Promise-basierte Variante der Worker-API, die die Inter-Thread-Kommunikationsaspekte des Benutzers vollständig verbirgt.
  • Unterstützen Sie nach Möglichkeit clientseitigen persistenten Speicher mithilfe verfügbarer JS-APIs. Zum Zeitpunkt der Erstellung dieses Artikels umfasst dies das Source Private File System (OPFS) und (sehr begrenzten) Speicher über die Backends window.localStorage und .window.sessionStorage

Wie für unspezifische Ziele:

  • Da WASM eine webzentrierte Technologie ist und UTF-8 der König der Kodierungen in diesem Bereich ist, gibt es derzeit keine Pläne, UTF3-bezogene sqlite16-APIs zu unterstützen.
  • Während die Unterstützung für Out-of-Browser-WASM-Laufzeiten weit verbreitet ist, konzentriert sich dieses Projekt derzeit (Ende 2022) nur auf Browserziele. Obwohl webbezogene Implementierungsdetails Vorrang haben und die JavaScript-Komponenten der API sich speziell auf Browser-Clients konzentrieren, „sollte“ das untergeordnete WASM-Modul in Nicht-Web-WASM-Umgebungen funktionieren.
  • Kompatibilität mit alten oder Nischenplattformen. WASM ist für ein modernes Web konzipiert und erfordert moderne Plattformen. Ebenso werden veraltete sqlite3-Bibliotheksoptionen vollständig aus der WASM-Schnittstelle entfernt.

Der Code für die WebAssembly-Unterstützung wurde dem Hauptrepository des Projekts hinzugefügt. Im Gegensatz zur WebSQL-API, die auf SQLite basiert, ist WASM SQLite vollständig vom Browser isoliert und beeinträchtigt nicht dessen Sicherheit (Google hat beschlossen, die Unterstützung für WebSQL in Chrome nach mehreren Schwachstellen in SQLite einzustellen, die über WebSQL ausgenutzt werden könnten, um den Navigator anzugreifen ).

schließlich, wenn Sie sind daran interessiert, mehr darüber zu erfahrenkönnen Sie die Details überprüfen im folgenden Link.


Hinterlasse einen Kommentar

Ihre E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert mit *

*

*

  1. Verantwortlich für die Daten: AB Internet Networks 2008 SL
  2. Zweck der Daten: Kontrolle von SPAM, Kommentarverwaltung.
  3. Legitimation: Ihre Zustimmung
  4. Übermittlung der Daten: Die Daten werden nur durch gesetzliche Verpflichtung an Dritte weitergegeben.
  5. Datenspeicherung: Von Occentus Networks (EU) gehostete Datenbank
  6. Rechte: Sie können Ihre Informationen jederzeit einschränken, wiederherstellen und löschen.