Transmitir datos de bases de datos PostgreSQL

Esta sección contiene información sobre lo siguiente:

  • El comportamiento de Datastream al gestionar los datos que se extraen de una base de datos de PostgreSQL de origen
  • Versiones de la base de datos PostgreSQL compatibles con Datastream
  • Descripción general de cómo configurar una base de datos PostgreSQL de origen para que se puedan transmitir datos desde ella a un destino
  • Limitaciones conocidas al usar una base de datos PostgreSQL como origen

Comportamiento

La base de datos PostgreSQL de origen se basa en su función de decodificación lógica. La decodificación lógica expone todos los cambios confirmados en la base de datos y permite consumir y procesar estos cambios en un formato fácil de usar mediante un complemento de salida. Datastream usa el complemento pgoutput, que es el complemento de decodificación lógica estándar de PostgreSQL para PostgreSQL 10 y versiones posteriores.

  • Se pueden seleccionar todos los esquemas o esquemas específicos de una fuente de PostgreSQL determinada, así como todas las tablas del esquema o tablas específicas.
  • Todos los datos históricos se replican.
  • Se replican todos los cambios del lenguaje de manipulación de datos (DML), como las inserciones, las actualizaciones y las eliminaciones de las bases de datos y las tablas especificadas.
  • Solo se replican los cambios confirmados.
  • Si define un REPLICA IDENTITY en una tabla, Datastream tratará las columnas especificadas como claves principales.

Versiones

Datastream admite PostgreSQL versión 10 y posteriores.

Datastream admite los siguientes tipos de bases de datos PostgreSQL:

  • PostgreSQL autogestionado
  • Cloud SQL para PostgreSQL
  • AlloyDB for PostgreSQL
  • AlloyDB Omni
  • Amazon RDS para PostgreSQL
  • Amazon Aurora PostgreSQL

Limitaciones conocidas

Estas son algunas de las limitaciones conocidas al usar Datastream con una base de datos PostgreSQL como origen:

  • Las secuencias tienen un límite de 10.000 tablas.
  • No se puede rellenar una tabla que tenga más de 500 millones de filas a menos que se cumplan las siguientes condiciones:
    1. La tabla tiene un índice B-tree único.
    2. El índice no incluye columnas de los siguientes tipos: DOUBLE, FLOAT, MONEY, REAL, JSON, JSONB, BYTEA, TXID, XML, tipos de datos compuestos o tipos de datos geométricos.
    3. Ninguna de las columnas del índice puede tener un valor nulo.
    4. Todas las columnas del índice están en orden ascendente o todas las columnas del índice están en orden descendente.
    5. Todas las columnas del índice se incluyen en el flujo.
  • Las tablas sin claves principales deben tener un REPLICA IDENTITY. De lo contrario, solo se replicarán los eventos INSERT en el destino.
  • Las tablas con claves principales no pueden tener el valor FULL o NOTHING en REPLICA IDENTITY. Debe tener el valor DEFAULT.
  • Datastream no puede replicar desde una instancia de réplica de lectura porque PostgreSQL no admite la decodificación lógica en réplicas de lectura.
  • No todos los cambios en el esquema de origen se pueden detectar automáticamente, por lo que puede que los datos se dañen. Los siguientes cambios en el esquema pueden provocar que los datos se dañen o que no se puedan procesar los eventos posteriores:
    • Eliminar columnas.
    • Añadir columnas en medio de una tabla.
    • Cambiar el tipo de datos de una columna.
    • Reordenar columnas.
    • Eliminar tablas (es relevante si la misma tabla se vuelve a crear con nuevos datos).
  • Datastream no admite columnas de los tipos de datos geometric.
  • Datastream no admite columnas de los tipos de datos range.
  • Datastream no admite matrices de tipos de datos no admitidos, matrices de tipos de datos definidos por el usuario (incluidos ENUM) ni matrices de tipos de datos DATE, TIMESTAMP o TIMESTAMP WITH TIME ZONE. Estas columnas se ignoran.
  • Datastream no admite la replicación de eventos UPDATE en filas que incluyan valores TOAST en columnas que formen parte de la identidad de réplica de la tabla. Estos eventos se descartan.
  • Datastream no admite la replicación de filas que incluyan valores JSON o JSONB con más de 2950 objetos anidados. Los eventos que contengan estos valores JSON o JSONB no se replicarán en la base de datos de destino.
  • Datastream no admite la replicación de filas que incluyan valores NaN en columnas NUMERIC (precision, scale). Los valores de estas columnas se sustituyen por valores NULL.
  • Datastream no admite la replicación de columnas del tipo de datos hstore. Los valores de estas columnas se sustituyen por valores NULL.
  • Datastream no admite la replicación de registros que no sean ASCII de una base de datos de origen codificada en SQL_ASCII. Estos registros se descartan.
  • Datastream no admite la replicación de tablas con políticas de seguridad a nivel de fila (RLS) definidas. Para obtener información sobre cómo eludir esta limitación, consulta Comportamiento y limitaciones de la fuente PostgreSQL.
  • Datastream no captura los cambios realizados en las columnas generadas.
  • Es posible que Datastream deje de funcionar o no registre ningún evento nuevo cuando se realice una actualización de la versión principal de PostgreSQL en la base de datos. Te recomendamos que elimines los slots de replicación antes de la actualización, que actualices la base de datos y que, después, vuelvas a crear los slots de replicación. Si las secuencias fallan, recupéralas especificando el nuevo nombre de la ranura de replicación y realiza un relleno si es necesario que los datos sean coherentes.

Siguientes pasos