PostgreSQL-Quelldatenbank

Dieser Abschnitt enthält Informationen über:

  • Das Verhalten von Datastream zur Verarbeitung von Daten, die aus einer PostgreSQL-Quelldatenbank abgerufen werden
  • Die von Datastream unterstützten Versionen der PostgreSQL-Datenbank
  • Eine Übersicht über das Einrichten einer PostgreSQL-Quelldatenbank, damit Daten daraus an ein Ziel gestreamt werden können
  • Bekannte Einschränkungen bei der Verwendung einer PostgreSQL-Datenbank als Quelle

Verhalten

Die PostgreSQL-Quelldatenbank verwendet die Funktion logische Decodierung. Die logische Decodierung stellt alle Änderungen bereit, die in der Datenbank verbindlich gemacht wurden, und ermöglicht die Verwendung und Verarbeitung dieser Änderungen in einem nutzerfreundlichen Format mithilfe eines Ausgabe-Plug-ins. Datastream verwendet das pgoutput-Plug-in, das standardmäßige PostgreSQL-Plug-in für die logische Decodierung für PostgreSQL 10 und höher.

  • Es können alle Schemas oder bestimmte Schemas aus einer bestimmten PostgreSQL-Quelle sowie alle Tabellen aus dem Schema oder bestimmten Tabellen ausgewählt werden.
  • Alle Verlaufsdaten werden repliziert.
  • Alle DML-Änderungen (Data Manipulation Language, DML) wie Einfügungen, Aktualisierungen und Löschungen aus den angegebenen Datenbanken und Tabellen werden repliziert.
  • Es werden nur Änderungen repliziert, für die ein Commit durchgeführt wurde.
  • Wenn Sie eine REPLICA IDENTITY für eine Tabelle definieren, behandelt Datastream die angegebenen Spalten als Primärschlüssel.

Versionen

Datastream unterstützt PostgreSQL-Version 10 und höher.

Datastream unterstützt die folgenden Typen von PostgreSQL-Datenbanken:

  • Selbst gehostete PostgreSQL
  • Cloud SQL for PostgreSQL
  • AlloyDB for PostgreSQL
  • AlloyDB Omni
  • Amazon RDS for PostgreSQL
  • Amazon Aurora PostgreSQL

Bekannte Einschränkungen

Bekannte Einschränkungen bei Verwendung von Datastream mit einer PostgreSQL-Datenbank als Quelle:

  • Streams sind auf 10.000 Tabellen beschränkt.
  • Für Tabellen mit mehr als 500 Millionen Zeilen ist kein Backfill möglich, es sei denn, die folgenden Bedingungen sind erfüllt:
    1. Die Tabelle hat einen eindeutigen B-Baum-Index.
    2. Der Index enthält keine Spalten der folgenden Typen: DOUBLE, FLOAT, MONEY, REAL, JSON, JSONB, BYTEA, TXID, XML oder geometrische Datentypen.
    3. Keine der Spalten des Index kann Nullwerte enthalten.
    4. Alle Spalten des Index sind in aufsteigender Reihenfolge oder alle Spalten des Index in absteigender Reihenfolge.
    5. Alle Spalten des Index sind im Stream enthalten.
  • Tabellen ohne Primärschlüssel müssen eine REPLICA IDENTITY haben. Andernfalls werden nur INSERT-Ereignisse an das Ziel repliziert.
  • Datastream kann nicht aus einer Lesereplikate-Instanz repliziert werden, da PostgreSQL die logische Decodierung in Lesereplikaten nicht unterstützt.
  • Nicht alle Änderungen am Quellschema können automatisch erkannt werden. Dies kann zu Datenbeschädigungen führen. Die folgenden Schemaänderungen können zu Datenbeschädigungen oder Fehlern bei der nachgelagerten Verarbeitung der Ereignisse führen:
    • Spalten entfernen
    • Spalten in der Mitte einer Tabelle hinzufügen
    • Datentyp einer Spalte ändern.
    • Spalten neu anordnen
    • Tabellen löschen (relevant, wenn dieselbe Tabelle anschließend mit neuen Daten neu erstellt wird)
  • Datastream unterstützt keine Spalten der Datentypen geometric.
  • Datastream unterstützt keine Spalten mit range-Datentypen.
  • Datastream unterstützt keine Arrays mit nicht unterstützten Datentypen, Arrays mit nutzerdefinierten Datentypen (einschließlich ENUM) oder Arrays mit den Datentypen DATE, TIMESTAMP oder TIMESTAMP WITH TIME ZONE. Solche Spalten werden ignoriert.
  • Datastream unterstützt nicht die Replikation von UPDATE-Ereignissen für Zeilen, die TOAST-Werte in Spalten enthalten, die Teil der Replikatidentität der Tabelle sind. Solche Ereignisse werden verworfen.
  • Datastream unterstützt keine Replikation von Zeilen, die JSON- oder JSONB-Werte mit mehr als 2.950 verschachtelten Objekten enthalten. Ereignisse mit solchen JSON- oder JSONB-Werten werden nicht in die Zieldatenbank repliziert.
  • Datastream unterstützt keine Replikation von Zeilen, die NaN-Werte in NUMERIC (precision, scale)-Spalten enthalten. Die Werte in solchen Spalten werden durch NULL-Werte ersetzt.
  • Datastream unterstützt nicht die Replikation von Spalten des Datentyps hstore. Die Werte in solchen Spalten werden durch NULL-Werte ersetzt.
  • Datastream unterstützt keine SSL/TLS-Verbindungen, für die Clientzertifikate erforderlich sind.
  • Das Replizieren von Nicht-ASCII-Einträgen aus einer SQL_ASCII-codierten Quelldatenbank wird von Datastream nicht unterstützt. Solche Datensätze werden verworfen.
  • Datastream unterstützt nicht das Replizieren von Tabellen mit definierten RLS-Richtlinien (Row-Level Security). Informationen dazu, wie Sie diese Einschränkung umgehen, finden Sie unter Verhalten und Einschränkungen von PostgreSQL-Quellen.
  • Änderungen an generierten Spalten werden in Datastream nicht erfasst.

Nächste Schritte