PostgreSQL-Quelldatenbank

Dieser Abschnitt enthält Informationen über:

  • Die Art und Weise, wie Datastream Daten verarbeitet, die aus einer PostgreSQL-Quelldatenbank abgerufen werden
  • Die von Datastream unterstützten Versionen der PostgreSQL-Datenbank
  • Übersicht über das Einrichten einer PostgreSQL-Quelldatenbank, damit Daten aus ihr an ein Ziel gestreamt werden können
  • Bekannte Einschränkungen bei der Verwendung der PostgreSQL-Datenbank als Quelle

Verhalten

Die PostgreSQL-Quelldatenbank stützt sich auf ihre Funktion zur logischen Decodierung. Die logische Decodierung macht alle Änderungen sichtbar, die per Commit an die Datenbank übergeben wurden, und ermöglicht die Übernahme und Verarbeitung dieser Änderungen in einem nutzerfreundlichen Format mithilfe eines Ausgabe-Plug-ins. Datastream verwendet das pgoutput-Plug-in, das Standard-PostgreSQL-Decodierungs-Plug-in für PostgreSQL 10 und höher.

  • Alle Schemas oder bestimmte Schemas aus einer bestimmten PostgreSQL-Quelle sowie alle Tabellen aus dem Schema oder bestimmten Tabellen können ausgewählt werden.
  • Alle historischen Daten werden repliziert.
  • Alle Änderungen an der Datenbearbeitungssprache (Data Manipulation Language, DML), z. B. 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 10 und höher.

Datastream unterstützt die folgenden PostgreSQL-Datenbanktypen:

  • 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 der Verwendung von Datastream mit einer PostgreSQL-Datenbank als Quelle sind:

  • Streams sind auf 10.000 Tabellen beschränkt.
  • Für eine Tabelle mit mehr als 500 Millionen Zeilen kann nur ein Backfill ausgeführt werden, wenn die folgenden Bedingungen erfüllt sind:
    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 darf Nullwerte enthalten.
    4. Alle Spalten des Index sind in aufsteigender Reihenfolge oder alle Spalten des Index sind in absteigender Reihenfolge.
    5. Alle Spalten des Index sind in den Stream enthalten.
  • Tabellen ohne Primärschlüssel müssen eine REPLICA-IDENTITÄT haben. Andernfalls werden nur INSERT-Ereignisse in das Ziel repliziert.
  • Datastream kann nicht aus einer Lesereplikatinstanz replizieren, 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 werden verworfen.
    • Spalten in der Mitte einer Tabelle hinzufügen
    • Datentyp einer Spalte ändern.
    • Spalten neu anordnen.
    • Löschen von Tabellen (relevant, wenn dieselbe Tabelle dann mit neu hinzugefügten Daten neu erstellt wird)
  • Datastream unterstützt keine Spalten mit den geometric-Datentypen.
  • Datastream unterstützt keine Spalten mit den range-Datentypen.
  • Datastream unterstützt keine Arrays mit nicht unterstützten Datentypen, Arrays mit benutzerdefinierten Datentypen (einschließlich ENUM) oder Arrays mit DATE-, TIMESTAMP- oder TIMESTAMP WITH TIME ZONE-Datentypen. 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 nicht die Replikation von Zeilen, die JSON- oder JSONB-Werte mit mehr als 2.950 verschachtelten Objekten enthalten. Ereignisse, die solche JSON- oder JSONB-Werte enthalten, werden nicht in die Zieldatenbank repliziert.
  • Datastream unterstützt nicht die 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 die Replikation von Spalten des Datentyps hstore nicht. 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 nicht die Replikation von Nicht-ASCII-Einträgen aus einer SQL_ASCII-codierten Quelldatenbank. Solche Datensätze werden verworfen.
  • Datastream unterstützt nicht die Replikation von Tabellen mit definierten RLS-Richtlinien (Row Level Security). Informationen dazu, wie Sie diese Einschränkung umgehen können, finden Sie unter Verhalten und Einschränkungen von PostgreSQL-Quellen.
  • Datastream erfasst keine Änderungen an generierten Spalten.