20 Punkte von GN⁺ 2025-12-05 | 2 Kommentare | Auf WhatsApp teilen
  • PGlite ist eine schlanke Lösung, mit der sich eine vollständige Postgres-Datenbank lokal in einer WASM-Umgebung ausführen lässt
  • Mit weniger als 3 MB im komprimierten Zustand lässt sie sich auch in Browsern oder Client-Umgebungen einfach betreiben
  • Datenladen, Synchronisierung und Echtzeitabfragen sind integriert und ermöglichen reaktive Datenverarbeitung
  • Unterstützt dynamisches Laden von Erweiterungen einschließlich pgvector, sodass sich verschiedene Erweiterungsmodule nutzen lassen
  • Über database.build auf Basis von Supabase lassen sich mit KI Postgres-Datenbanken erzeugen und bereitstellen, was die Flexibilität webbasierter Datenbankentwicklung erhöht

Überblick

  • PGlite ist eine eingebettete Postgres-Datenbank, die in einer WASM-(WebAssembly-)Umgebung läuft
    • Eine vollständige Postgres-Instanz kann lokal ausgeführt werden
    • Unterstützt reaktive Datenverarbeitung und Echtzeit-Synchronisierung

Hauptmerkmale

  • Leichtgewichtigkeit: Bietet einen vollständigen Postgres-Build mit weniger als 3 MB im Gzip-komprimierten Zustand
    • Kann auch in Browsern oder schlanken Client-Umgebungen ausgeführt werden
  • Erweiterbarkeit: Über einen Mechanismus zum dynamischen Laden von Erweiterungen lassen sich verschiedene Postgres-Erweiterungen hinzufügen
    • Die Erweiterung pgvector wird standardmäßig unterstützt
  • Reaktivität: Enthält integrierte Funktionen für Datenladen, Synchronisierung und Echtzeitabfragen
    • Geeignet für Echtzeit-Datenupdates und den Bau reaktiver Anwendungen

Ausprobieren und Einsatz

  • Auf der Plattform database.build können Postgres-Datenbanken auf Basis von PGlite erstellt und veröffentlicht werden
    • Ein KI-gestütztes Tool von Supabase, mit dem Nutzer ihre Datenbanken direkt selbst erstellen können
  • Eine PGlite-Postgres-Instanz kann direkt im Browser ausgeführt werden
    • Einschließlich pgvector
    • Zusätzliche Erweiterungen lassen sich in einer playground(REPL)-Umgebung ausprobieren

Bedeutung

  • PGlite erweitert die Funktionen von Postgres bis in den Browser und ermöglicht damit clientseitig ausgerichtete Datenbankausführung
  • Durch die Kombination aus Leichtgewichtigkeit, Erweiterbarkeit und Reaktivität gilt es als vielversprechende Datenbanklösung für die Entwicklung von Webanwendungen der nächsten Generation

2 Kommentare

 
qqq7300 2025-12-10

Ich habe diesen Artikel gesehen und testweise PGlite in mein Projekt eingeführt. Für einfache Tests ist es wirklich schnell und gut. Ich bin gespannt, was noch kommt.

 
GN⁺ 2025-12-05
Hacker-News-Kommentare
  • Ich arbeite im PGlite-Team. Freut mich, es wieder auf HN zu sehen
    Die wöchentlichen Downloads haben kürzlich 3 Millionen überschritten und werden bald 4 Millionen erreichen — siehe die npm-Paketseite
    Ursprünglich wurde es gebaut, um in Web-Apps eingebettet zu werden, aber inzwischen wächst die Nutzung in Entwickler-Tools und CLI-Umgebungen explosionsartig. Google Firebase und Prisma betten PGlite jeweils auch in ihre CLIs ein, um Serverprodukte zu emulieren

    • Interessant. Ich frage mich aber, warum ihr es nur für WASM gebaut habt. Normalerweise würde man es erst als Bibliothek aufbauen und dann nach WASM portieren. Vermutlich übersehe ich etwas
    • Danke für die großartige Arbeit. Mich würde interessieren, ob ihr plant, das http-vfs-read-only-Szenario zu unterstützen
      Also das Lesen von Blöcken per Range Request von einer entfernten URL wie bei DuckDB oder sql.js-httpvfs
      Auch unser Labor arbeitet an so einem Projekt, aber das http-vfs-Ökosystem ist noch auf Prototyp-Niveau, daher gibt es kaum optimierte Bibliotheken
      Mich würde auch interessieren, ob das Festplattenzugriffsmuster von PostgreSQL besser zu http-vfs passt als das von SQLite
    • Ich würde gern fragen, ob eine Bibliothek für Flutter geplant ist
    • Ich frage mich, ob PGlite im Speicher-Modus schneller ist als normales Postgres
      Falls ja, wäre es wirklich großartig, wenn es das Netzwerkprotokoll unterstützen würde, damit man es auch in CI-Umgebungen anderer Sprachen als JS nutzen kann
    • Sieht wirklich großartig aus. Ich würde gern wissen, für welche Anwendungsfälle man das konkret gut einsetzen kann
      Ich frage mich, ob das Ziel darin besteht, SQLite oder DuckDB zu ersetzen
  • Ich würde PGlite gern in einer nicht JavaScript-basierten Laufzeitumgebung verwenden
    Zum Beispiel eingebettet in ein Go-CLI mit einer WASM-Laufzeit als Ersatz für SQLite
    In Issue #89 sieht es so aus, als gäbe es Third-Party-Bindings für Rust. Ich frage mich, ob ihr offiziell plant, Bindings für andere Sprachen zu unterstützen

    • Ja, die Kombination PGlite + Go klingt wirklich sehr gut
  • PGlite ist wirklich hervorragend. Ich nutze es für die Entwicklung als PostgreSQL-Server im Browser
    Der Server implementiert das PG-Protokoll, und wenn sich ein Client verbindet, werden die Queries an den Browser weitergeleitet, wo PGlite intern läuft
    Das Ergebnis ist ein vollwertiger PG-Server im Browserdbfor.dev

  • Dieses Projekt ist sehr interessant. Einer der Nachteile von Postgres ist, dass man immer einen Server einrichten muss, und das löst genau dieses Problem
    Ich frage mich, ob es eine Möglichkeit gibt, es als native Bibliothek zu kompilieren. Ein Teil des Codes scheint wiederverwendbar zu sein

    • Ich habe experimentell versucht, es für React Native zu kompilieren. Postgres läuft auf iOS und Android — PR-Link
    • Eine native Bibliothek ist derzeit Teil der Roadmap
    • Dem stimme ich absolut zu. Es wäre großartig, wenn man vom Embedded- in den Netzwerkmodus wechseln könnte, ohne SQL oder Verhalten zu ändern
  • Ich frage mich, was der Unterschied zwischen PGlite und SQLite ist
    Ich habe SQLite hauptsächlich in eingebetteten Umgebungen und auf der Browser-Client-Seite verwendet
    Der Vorteil von SQLite ist seine Einfachheit, aber die vielen Erweiterungen von PGlite sind spannend. Ich würde gern wissen, was die grundlegenden Unterschiede zwischen den beiden Datenbanken sind

    • Meiner Meinung nach liegt der wichtigste Einsatzzweck in Test-/CI-Umgebungen
      Mit SQLite kann man Tests schnell ausführen, aber wenn die tatsächliche Infrastruktur PostgreSQL ist, ist der Nutzen begrenzt
  • Für Unit-Tests nutze ich immer noch TestContainers, um ein Docker-basiertes Postgres laufen zu lassen
    Aber dank solcher Alternativen sind auch Python-Test-Tools wie py-pglite möglich geworden
    Trotzdem habe ich mehr Vertrauen in Ansätze wie pgserver, bei denen man echtes Postgres leichtgewichtig als pip-Paket starten kann
    Meine Meinung bezieht sich nur auf die Perspektive von Unit-Tests

    • Ich frage mich, welche Trade-offs die beiden Ansätze haben. Solche Erfahrungsberichte sind immer hilfreich
  • Unser Team hat beim Aufbau eines neuen internen Dienstes PGlite in die Testumgebung eingeführt
    Wir haben einen Wrapper so aufgebaut, dass bei Tests PGlite und im echten Betrieb eine Postgres-Instanz verwendet wird, und das war sehr erfolgreich
    Besonders mit der .clone()-Funktion kann man DB-Checkpoints erstellen und für jeden Test auf den Anfangszustand zurücksetzen
    Es ist auch sehr einfach geworden, 50 Test-Suites parallel laufen zu lassen

  • Ich nutze es für Tests, und es fühlt sich an wie ein Mittelweg zwischen In-Memory-SQLite und einer vollständigen Postgres-Instanz
    Ich habe lange nach so etwas gesucht, und ich bin zufrieden, weil die Tests schneller geworden sind. Bisher gab es auch kaum Einschränkungen

  • Es gibt auch Doltgres, ein Postgres in Form einer einzelnen ausführbaren Datei
    Man lädt einfach eine einzelne .exe-Datei wie bei Deno herunter und startet sie, dann läuft Postgres sofort — Doltgres-Installationsdokumentation