Das Projekt Postgres WASM wurde entwickelt, um eine PostgreSQL-Datenbankumgebung zu schaffen, die im Browser funktioniert. Der zugehörige Code ist unter der MIT-Lizenz offen. Es wird ein Toolset angeboten, um eine funktionierende virtuelle Maschine mit einem abgespeckten Linux-Umfeld, dem PostgreSQL-Server 14.5 und den zugehörigen Utilities (psql, pg_dump) zu erstellen. Die Endgröße der Sammlung beträgt etwa 30 MB.
Der Inhalt der virtuellen Maschine wird mithilfe von Buildroot-Skripten erstellt und im Browser unter Verwendung des Emulators v86 ausgeführt. Zur Interaktion mit den PostgreSQL-Utilities im Browser wird eine Web-Oberfläche bereitgestellt. Um auf die im Browser gestartete Server PostgreSQL über das Netzwerk zuzugreifen und Netzwerk-Anfragen aus der virtuellen Maschine durchzuführen, wird ein Proxy verwendet, der den Datenverkehr über die Websocket-API weiterleitet.
Die Hauptfunktionen von Postgres WASM:
- Speichern und Wiederherstellen des Zustands der Datenbank aus einer Datei oder dem Browser-Speicher auf Basis von IndexedDB.
- Schneller Start aus einer Datei mit dem gespeicherten Zustand der virtuellen Maschine oder ein kompletter Start mit einem Neustart des Emulators.
- Möglichkeit zur Abtrennung virtuellen Maschine von 128 bis 1024 MB RAM.
- Einstellung der Schriftgröße im Webterminal.
- Unterstützung des Datei-Uploads in die virtuelle Umgebung, einschließlich der Möglichkeit, Datenbank-Dumps hochzuladen.
- Unterstützung beim Herunterladen von Dateien aus der virtuellen Umgebung.
- Einrichtung von eingehenden und ausgehenden Netzwerkverbindungen, Erstellung eines Tunnels für das Forwarding von Anfragen an den Netzwerkport 5432.
Zu den möglichen Anwendungsbereichen von Postgres WASM zählen die Erstellung von Demo- und Schulungssystemen, die Organisation von Offline-Datenzugriff, die Analyse von Daten im Offline-Modus, das Testen der Funktionalität und Konfiguration von PostgresSQL, die Einrichtung einer lokalen Entwicklerumgebung sowie die Erstellung von Snapshots eines bestimmten Zustands der DBMS zur Übermittlung an andere Entwickler oder den Support, sowie das Testen der logischen Replikation mit externen DBMS.

Quelle: opennet.ru
