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 Verwendung der 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 Standard-PostgreSQL-Plug-in für die logische Decodierung für PostgreSQL 10 und höher.

  • Es können alle Schemas oder bestimmte Schemas einer bestimmten PostgreSQL-Quelle sowie alle Tabellen der Schemas oder bestimmte 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 für eine Tabelle eine REPLICA IDENTITY 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, zusammengesetzte Datentypen oder geometrische Datentypen.
    3. Keine der Spalten des Index darf Nullwerte enthalten.
    4. Alle Spalten des Index sind in aufsteigender oder absteigender Reihenfolge sortiert.
    5. Alle Spalten des Index sind im Stream enthalten.
  • Tabellen ohne Primärschlüssel müssen eine REPLIKAIDENTITÄT 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 einfü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 der Datentypen range.
  • Datastream unterstützt keine Arrays mit nicht unterstützten Datentypen, Arrays mit benutzerdefinierten 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 Replikationsidentitä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 keine Replikation von Spalten vom Datentyp hstore. Die Werte in solchen Spalten werden durch NULL-Werte ersetzt.
  • Datastream unterstützt keine SSL/TLS-Verbindungen, für die Clientzertifikate erforderlich sind.
  • Datastream unterstützt keine Replikation von Nicht-ASCII-Einträgen aus einer mit SQL_ASCII codierten Quelldatenbank. Solche Einträge werden verworfen.
  • Datastream unterstützt keine Replikation von Tabellen mit definierten Richtlinien für die Sicherheit auf Zeilenebene. Informationen dazu, wie Sie diese Einschränkung umgehen, finden Sie unter Verhalten und Einschränkungen von PostgreSQL-Quellen.
  • In Datastream werden keine Änderungen an generierten Spalten erfasst.

Nächste Schritte