Zum Inhalt springen

Ein Postgres-Warehouse verbinden

Diese Anleitung führt Sie durch das End-to-End-Verbinden einer PostgreSQL-Datenbank mit Saiku Cloud. Fünf Minuten, wenn Ihr Warehouse bereits öffentlich ist; zehn, wenn Sie eine Read-only-Rolle einrichten müssen.

Plan-Auswirkung: Jeder Saiku-Cloud-Plan (Starter, Team, Business) unterstützt Postgres-BYOC.

Was Sie brauchen

  • Eine PostgreSQL 12+-Instanz, die von einer öffentlichen IPv4-Adresse erreichbar ist. Cloud-gehostete Saiku-Cloud-Kunden auf Starter/Team/Business brauchen dies — Enterprise-Kunden mit einem privaten VPC-Peering-Setup (siehe PrivateLink zu Kunden-Postgres) erhalten stattdessen private-Netzwerk-Erreichbarkeit.
  • Admin-Zugriff auf Ihr Warehouse, damit Sie eine Read-only-Rolle erstellen können (oder die Anmeldedaten einer bestehenden Read-only-Rolle).
  • Fünf Minuten.

Schritt 1 — Unsere Egress-IP auf die Allowlist setzen

Die Queries von Saiku Cloud an Ihr Warehouse stammen alle von einer einzigen statischen IP:

87.99.153.244

Fügen Sie diese zur Firewall / Security Group / Netzwerk-Allowlist Ihres Warehouses hinzu, bevor Sie die Verbindung testen. Der Connection-Wizard zeigt dieselbe IP zum Zeitpunkt des Testens an, sodass Sie sie auch von dort kopieren können — aber es im Voraus zu tun, vermeidet den HOST_UNREACHABLE-Fehler, den Sie sonst beim ersten Test sehen würden.

Häufige Allowlist-Orte:

  • AWS RDS: VPC-Security-Group Inbound Rule → Port 5432 → Source 87.99.153.244/32.
  • Google Cloud SQL: Connectivity → Authorized networks → 87.99.153.244/32 hinzufügen.
  • Azure Postgres: Networking → Firewall rules → Regel hinzufügen, die 87.99.153.244 bis 87.99.153.244 erlaubt.
  • Selbstgehostet: pg_hba.conf-Host-Eintrag, plus die Firewall davor (UFW, iptables, Cloud-Provider-Edge).

Die IP ist stabil — sie übersteht Neustarts und Image-Rebuilds. Wir verpflichten uns zu mindestens 30 Tagen Vorlauf vor jeder Rotation. Vollständige Policy: siehe unsere Verpflichtung zur Egress-IP-Stabilität.

Schritt 2 — Eine Read-only-Rolle in Postgres erstellen

Saiku Cloud liest immer nur von Ihrem Warehouse — schreibt niemals, ändert niemals Schemas, erstellt niemals Objekte. Die Least-Privilege-Form ist eine dedizierte Read-only-Rolle:

-- Als Postgres-Superuser (oder beliebiger Benutzer mit CREATEROLE):
CREATE ROLE saiku_read LOGIN PASSWORD 'pick-something-strong-here';
-- Zugriff auf die Schemas + Tabellen gewähren, die Saiku sehen soll.
-- Passen Sie 'public' an das Schema/die Schemas an, in denen Ihre Daten leben.
GRANT USAGE ON SCHEMA public TO saiku_read;
GRANT SELECT ON ALL TABLES IN SCHEMA public TO saiku_read;
GRANT SELECT ON ALL SEQUENCES IN SCHEMA public TO saiku_read;
-- Zukünftige Tabellen, die in diesem Schema erstellt werden, sollen ebenfalls lesbar sein.
ALTER DEFAULT PRIVILEGES IN SCHEMA public
GRANT SELECT ON TABLES TO saiku_read;

Wenn Ihre Daten über mehrere Schemas verteilt sind, wiederholen Sie die GRANT USAGE- + GRANT SELECT-Blöcke für jedes.

Schritt 3 — Die JDBC-URL bauen

Die Form:

jdbc:postgresql://<host>:<port>/<database>?sslmode=require

Konkrete Beispiele:

  • AWS RDS: jdbc:postgresql://mydb.abc123.us-east-1.rds.amazonaws.com:5432/sales?sslmode=require
  • Google Cloud SQL: jdbc:postgresql://1.2.3.4:5432/sales?sslmode=require (verwenden Sie die Public IP aus der Cloud-SQL-Konsole)
  • Azure Postgres: jdbc:postgresql://mydb.postgres.database.azure.com:5432/sales?sslmode=require
  • Selbstgehostet: jdbc:postgresql://db.yourcompany.com:5432/sales?sslmode=require

Schlüsselparameter:

  • sslmode=require wird für jedes über das öffentliche Internet erreichbare Warehouse dringend empfohlen. Die meisten managed Postgres-Services erzwingen SSL ohnehin; require lässt den Client den Klartext-Fallback ablehnen.
  • sslmode=verify-full ist strenger — es verifiziert zusätzlich, dass der Hostname des Server-Zertifikats passt. Verwenden Sie es, wenn das CA-Root Ihres Warehouses in unserem Trust Store ist (die meisten managed Services verwenden Let’s Encrypt oder eine bekannte CA, sodass dies out of the box funktioniert).
  • Überspringen Sie ?currentSchema=foo und ähnliche Treiber-Tweaks, es sei denn, Sie haben einen spezifischen Grund; Saiku fragt durchgehend mit vollqualifizierten schema.table-Verweisen ab.

Schritt 4 — Verbinden über den Saiku-Cloud-Wizard

  1. Melden Sie sich bei https://cloud.saiku.bi/ an.

  2. Navigieren Sie zu Verbindungen in der linken Seitenleiste.

  3. Klicken Sie unter 1. Warehouse-Typ wählen auf das Postgres-Kachel.

  4. Füllen Sie aus:

    • JDBC-URL — die URL aus Schritt 3.
    • Benutzernamesaiku_read (oder wie Sie die Rolle in Schritt 2 benannt haben).
    • Passwort — das Passwort aus Schritt 2.
  5. Klicken Sie auf Verbindung testen.

Wenn alles korrekt verdrahtet ist, sehen Sie einen grünen Ergebnis-Banner: ✓ Connection successful plus die erkannte Postgres-Version. Weiter zu Schritt 5.

Wenn Sie einen roten Ergebnis-Banner sehen, siehe Fehlerbehebung unten für die Fehler-Triage-Matrix.

Schritt 5 — Die Verbindung speichern

Nach einem erfolgreichen Test rendert der Wizard einen Abschnitt 3. Verbindung speichern. Füllen Sie aus:

  • Passwort (zum Speichern erneut eingeben) — dasselbe Passwort, mit dem Sie getestet haben. Wir speichern das Passwort des Test-Formulars nicht, um zu vermeiden, ein Credential durch den Page-State zurückzureichen.
  • Label — ein menschenlesbarer Name wie Production warehouse oder Marketing analytics. Wird in der Verbindungsliste + im Cube-Designer angezeigt.

Klicken Sie auf Verbindung speichern. Wir leiten Sie zum Schema-Designer weiter, wo Sie entweder einen Cube über den KI-Inferenz-Flow vorschlagen oder eine Mondrian-Schema-XML hochladen können.

Fehlerbehebung

✗ Connection failed (HOST_UNREACHABLE) oder (TIMEOUT)

Wir konnten den Host auf dem angegebenen Port nicht erreichen. Häufigste Ursachen:

  1. Firewall / Allowlist — Schritt 1 wurde nicht gemacht oder nicht für die richtige IP. Bestätigen Sie, dass 87.99.153.244/32 in der Allowlist Ihres Warehouses ist + dass sie angewandt wurde (manche Firewalls erfordern einen Restart / Re-Apply).
  2. DNS — der Hostname in der JDBC-URL löst nicht auf oder löst auf eine private IP auf. Verifizieren Sie von Ihrem Laptop: nslookup <host>. Wir verweigern aus SSRF-Schutz-Gründen die Verbindung zu RFC1918- / Loopback- / Link-Local-Adressen — HOST_DENIED (nicht HOST_UNREACHABLE) ist in diesem Fall die Oberfläche.
  3. Falscher Port — Postgres ist standardmäßig 5432, aber managed Services verwenden gelegentlich einen Custom-Port (Heroku Postgres verwendet 5432, aber innerhalb eines Tunnels; einige On-Prem-Deployments verwenden 5433+).

✗ Connection failed (AUTH_FAILED)

Benutzername oder Passwort ist falsch. Der Wizard unterscheidet absichtlich nicht zwischen „falscher Benutzer” und „falsches Passwort” — das ist Schutz gegen Credential-Stuffing-Angriffe.

  • Prüfen Sie den Benutzernamen doppelt — Postgres-Rollennamen sind case-sensitiv (saiku_readSaiku_Read).
  • Versuchen Sie von Ihrem Laptop mit psql "<JDBC URL ohne den jdbc:-Präfix>" zu verbinden, um zu bestätigen, dass die Anmeldedaten außerhalb von Saiku funktionieren.
  • Wenn Sie das Passwort kürzlich zurückgesetzt haben, stellen Sie sicher, dass Sie die Änderung in Postgres committet haben (ALTER ROLE saiku_read PASSWORD '...';) und alle Pooler erneut verbunden haben, die möglicherweise den alten Hash cachen.

✗ Connection failed (DATABASE_NOT_FOUND)

Der Host akzeptiert Ihre Anmeldedaten, aber der Datenbankname in der JDBC-URL existiert nicht. Verifizieren Sie den Datenbanknamen — Postgres hat normalerweise sowohl postgres als auch Ihre Anwendungsdatenbank; Sie wollen letztere.

-- Aus psql, als beliebiger Benutzer mit Login:
\l -- Datenbanken auflisten

✗ Connection failed (DIALECT_UNSUPPORTED)

Die URL beginnt nicht mit jdbc:postgresql:. Wenn Sie eine jdbc:postgres:-URL (ohne -ql) eingefügt haben, passt der Dialekt-Resolver nicht — der JDBC-Treiber von Postgres erfordert das postgresql-Token. Verwenden Sie die URL-Formen aus Schritt 3 wörtlich.

Alles andere

Machen Sie einen Screenshot des Wizards mit sichtbarem rotem Ergebnis-Banner (Kind: ...-Zeile insbesondere) und senden Sie ihn an support@saiku.bi. Das Kind-Feld sagt uns, in welcher Fehlerklasse wir uns befinden; der Try this-Hinweis darunter gibt unseren besten Lösungsvorschlag.

Enterprise: privates Netzwerk {#enterprise-privates-netzwerk}

Für Enterprise-Kunden mit einem privaten Netzwerk-Setup wird die Egress-IP-Regel oben durch VPC-Peering oder PrivateLink zu Ihrer Postgres-Instanz ersetzt. Der Flow des Connection-Wizards ist ansonsten identisch — private JDBC-URL einfügen, testen, speichern. Kontaktieren Sie Ihr Account-Team, um das Peering bereitzustellen.

Mit FoodMart ausprobieren

Möchten Sie Saiku Cloud mit diesem Dialekt testen, bevor Sie Ihre eigenen Daten verbinden? Laden Sie den FoodMart-Sample-Datensatz, gepackt für Postgres, herunter:

FoodMart-Sample-Datensatz für Postgres