pg_local_cache lokal ausprobieren

Diese Demo baut pg_local_cache aus Ihrem Checkout in einem separaten PostgreSQL- 16-Server. Sie installiert nicht in einem bestehenden PostgreSQL-Server.

Sie benötigen Git, Docker und Docker Compose mit Unterstützung für up --wait. Das Image wird aus dem Quellcode gebaut.

Datenbank starten

git clone https://github.com/profundium/pg_local_cache.git
cd pg_local_cache
docker compose -f examples/compose.yaml up --build --wait

Die Demo bindet PostgreSQL an 127.0.0.1:55432, hat keinen RESP-Listener und kein dauerhaftes Volume und speichert Daten in containerlokalem tmpfs. Beim Stoppen des Containers werden die Daten verworfen. demo-only ist für diese Loopback-Demo gedacht; verwenden Sie in Produktion eigene Zugangsdaten.

Wenn Port 55432 belegt ist, setzen Sie vor dem Start von Compose PGLC_DEMO_PORT und lassen Sie es beim Ausführen des Node.js-Beispiels gesetzt:

export PGLC_DEMO_PORT=55433

Als Anwendungsrolle lesen

Die Einrichtung erstellt 4.096 Zeilen in public.items. Nur diese Tabelle ist an den Cache angehängt. Die Rolle demo ist kein Superuser.

docker compose -f examples/compose.yaml exec -T postgres \
  psql -X -v ON_ERROR_STOP=1 -U demo -d pglc_demo <<'SQL'
SELECT unnest(local_cache.mget(
  'public.items'::regclass,
  ARRAY[42, 7, 42, NULL, 999999]::bigint[]
));
SELECT unnest(local_cache.mget(
  'public.items'::regclass,
  ARRAY[42, 7, 42, NULL, 999999]::bigint[]
));
SQL

Beide Aufrufe geben dieselben geordneten Zeilen zurück. Die erste und dritte Position beziehen sich auf Zeile 42. Die letzten beiden Positionen sind SQL- NULL: Eine Eingabe ist null, und der Schlüssel 999999 existiert nicht. In psql erscheinen SQL-Nullwerte standardmäßig leer.

Die Funktion gibt text[] zurück. unnest zeigt oben einen Array-Eintrag pro Zeile an.

Prüfen Sie die Zähler als Datenbankadministrator:

docker compose -f examples/compose.yaml exec -T postgres \
  psql -X -v ON_ERROR_STOP=1 -U postgres -d pglc_demo \
  -c 'SELECT local_cache.health();' \
  -c 'SELECT local_cache.stats();'

In dieser frischen Demo sollte local_cache.health() ready: true melden, und wiederholte Lesevorgänge sollten sql_cache_hits erhöhen. Wenn die Trefferzahl bei null bleibt, prüfen Sie sql_cache_misses, sql_cache_fills und sql_cache_bypasses mit dem Invalidation-Leitfaden.

Commit und Rollback prüfen

Mit Node.js 20 oder neuer:

npm --prefix examples/node-postgres ci --ignore-scripts
npm --prefix examples/node-postgres run demo

Der Test öffnet getrennte Lese- und Schreibverbindungen. Er prüft einen warmen Treffer, Eingabereihenfolge, doppelte und fehlende Schlüssel, ein nicht bestätigtes Update, Read-your-writes, Rollback und ein bestätigtes Update. Bei einer fehlgeschlagenen Assertion endet er mit einem Fehlercode.

Siehe den SQL-Rundgang mit zwei Sitzungen oder die Erklärung der Node.js-Abfrage.

Ihre Anwendung verbinden

Als Nächstes vergleichen Sie dieselbe SQL- und RESP-Arbeitslast. Bei Ergebnis- oder Einrichtungsproblemen öffnen Sie einen Workload-Bericht mit Ihrer Umgebung sowie Benchmark-JSON oder Fehlerprotokoll.

Demo entfernen

docker compose -f examples/compose.yaml down

Das lokal gebaute Docker-Image bleibt für einen weiteren Lauf verfügbar. Kein hosteigener PostgreSQL-Dienst muss neu gestartet oder wiederhergestellt werden.

Für eine bestehende Datenbank folgen Sie dem Installationsleitfaden. Dieser Weg hat andere Berechtigungen, Konfigurationen und Neustartanforderungen.

Aktualisiert .