Datenbank SQLite 3.40 läuft mit WebAssembly im Browser

Neben einer WASM-Variante bietet die schlanke Datenbank im aktuellen Release eine Erweiterung zum Reparieren defekter Datenbankdateien.

In Pocket speichern vorlesen Druckansicht

(Bild: rawf8/Shutterstock.com)

Lesezeit: 3 Min.
Inhaltsverzeichnis

Die als C-Library umgesetzte Datenbank SQLite ist in Version 3.40 erschienen. Das Release bringt gleich zwei größere Neuerungen mit: Zum einen ist eine WebAssembly-Variante verfügbar und zum anderen dient die Recovery Extension dazu, beschädigte Datenbankdateien zu reparieren.

Die Datenbank lässt sich neuerdings nach WebAssembly (WASM) kompilieren, um sie aus JavaScript direkt im Browser zu verwenden. Die Komponenten haben im aktuellen Release noch Betastatus und sollen in Version 3.41 stabilisiert werden.

Zwar existieren bereits seit zehn Jahren Varianten für den Einsatz von SQLite im Web wie sql.js, aber nun gibt es ein offizielles Projekt, das sich um die Portierung nach WASM kümmert. Das Unterprojekt sqlite 3 WASM/JS kümmert sich um die Umsetzung in WebAssembly und zugehörige APIs in unterschiedlichen Abstraktionsebenen.

Die Low Level oder C-Style API gibt den direkten Zugriff und entspricht wohl weitgehend der nativen SQLite-Umsetzung. Eine objektorientierte API stellt die Klasse DB als zentrale Anlaufstelle zum Zugriff auf die Datenbank bereit. Sie verwendet die Low Level API und muss im selben Thread laufen. Die Worker API bietet eine Worker-basierte Schnittstelle. Davon existiert zusätzlich eine Variante, die auf Promises für die asynchrone Verarbeitung setzt.

Ein API-Index beschreibt die unterschiedlichen JavaScript-APIs für SQLite. Eine Kurzanleitung mit drei Schritten zum Integrieren des sqlite3-WASM-Moduls und der Anbindung über die APIs soll beim Einstieg helfen. In der einfachen Konfiguration leben die Datenbanken nur so lange, bis die Seite neu geladen wird. Eine Dokumentation beschreibt daher Wege zum Persistieren.

Laut den Angaben des SQLite-Teams sind die Datenbanken weitgehend robust und widerstehen typischerweise Stromausfällen oder Anwendungsfehlern. Allerdings können beispielsweise Fehlfunktionen der Hardware die Dateien beschädigen oder ein außer Kontrolle geratener Prozess die Datenbank teilweise überschreiben.

Die neue Recovery Extension versucht, die beschädigte Datenbank so gut wie möglich zu reparieren, wobei die Beschreibung darauf hinweist, dass eine vollständige Wiederherstellung nur in Ausnahmefällen möglich ist. Einige Daten können unwiderruflich überschrieben und damit gelöscht sein. Umgekehrt können mit DELETE gelöschte Daten wieder auftauchen. Auch können sich die Inhalte von Feldern oder Feldtypen ändern. Die reparierten Dateien sind also mit Vorsicht zu genießen.

Für die Wiederherstellung bietet SQLite zwei Wege: über die Kommandozeile oder mittels einer API. Die CLI-Anwendung sqlite3 führt dazu die Option .recover ein:

sqlite3 corrupt.db .recover >data.sql

Die API dient zum Integrieren der Recovery-Option in eigene Anwendungen. Eine Anleitung dazu findet sich ebenso auf der Seite zur Recovery-Extension wie eine Beschreibung der Kommadozeilenparameter für .recover.

Weitere Neuerungen in SQLite 3.40 finden sich in den Release-Informationen. SQLite ist eine relationale Datenbank, die als Softwarebibliothek umgesetzt ist. Vor allem durch den Verzicht auf einen eigenen Serverprozess ist sie schlanker als andere Datenbanksysteme. Sie greift direkt lesend und schreibend auf Dateien zu.

Auf der Downloadseite stehen neben dem Sourcecode vorkompilierte Binaries unter anderem für Windows, Linux, macOS bereit. Auch ein vorkompiliertes Bundle der WebAssembly-Umsetzung mit sqlite3.wasm und den JavaSript-APIs ist dort zu finden.

(rme)