Transmite datos desde bases de datos de PostgreSQL

En esta sección, se incluye información sobre lo siguiente:

  • El comportamiento de Datastream en relación con el manejo de los datos que se extraen de una base de datos de PostgreSQL de origen
  • Las versiones de la base de datos de PostgreSQL que Datastream admite
  • Una descripción general de cómo configurar una base de datos de PostgreSQL de origen para que los datos se puedan transmitir a un destino
  • Limitaciones conocidas para usar la base de datos de PostgreSQL como fuente

Comportamiento

La base de datos de PostgreSQL de origen depende de su función de decodificación lógica. La decodificación lógica expone todos los cambios asignados a la base de datos y permite consumirlos y procesarlos en un formato fácil de usar con 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 los esquemas específicos de una fuente de PostgreSQL determinada, así como todas las tablas del esquema o tablas específicas.
  • Se replican todos los datos históricos.
  • Se replican todos los cambios del lenguaje de manipulación de datos (DML), como las inserciones, las actualizaciones y los borrados de las bases de datos y las tablas especificadas.
  • Solo se replican los cambios confirmados.
  • Si defines un REPLICA IDENTITY en una tabla, Datastream trata las columnas especificadas como claves primarias.
  • Datastream envía mensajes de latido periódicamente a la base de datos, lo que agrega mensajes de decodificación lógica (op='m') que avanzan el archivo WAL. Datastream suele requerir estos mensajes para garantizar la actividad y calcular la actualización. Debes tenerlos en cuenta si otras configuraciones de replicación leen desde la misma base de datos, ya que deberían poder leer y omitir estos mensajes.

Versiones

Datastream admite la versión 10 y versiones posteriores de PostgreSQL.

Datastream admite los siguientes tipos de bases de datos de PostgreSQL:

  • PostgreSQL autoalojado
  • Cloud SQL para PostgreSQL
  • AlloyDB para PostgreSQL
  • AlloyDB Omni
  • Amazon RDS para PostgreSQL
  • Amazon Aurora PostgreSQL

Limitaciones conocidas

Entre las limitaciones conocidas para usar Datastream con una base de datos de PostgreSQL como fuente, se incluyen las siguientes:

  • Las transmisiones se limitan a 10,000 tablas.
  • No se puede completar 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 de árbol B ú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 admite valores nulos.
    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 la transmisión.
  • Las tablas sin claves primarias deben tener una REPLICA IDENTITY. De lo contrario, solo se replicarán los eventos de INSERT en el destino.
  • Las tablas con claves primarias no pueden tener el valor FULL o NOTHING en REPLICA IDENTITY. Debe establecerse en DEFAULT.
  • Datastream no puede replicar datos desde una instancia de réplica de lectura porque PostgreSQL no admite la decodificación lógica en las réplicas de lectura.
  • No todos los cambios en el esquema de origen se pueden detectar automáticamente, en cuyo caso pueden ocurrir daños en los datos. Los siguientes cambios de esquema pueden causar daños en los datos o que no se puedan procesar los eventos en etapas posteriores:
    • Se descartan columnas.
    • Agregar columnas en medio de una tabla
    • Cambiar el tipo de datos de una columna
    • Reordenar las columnas
    • Borrar tablas (relevante si luego se vuelve a crear la misma tabla con datos nuevos)
  • Datastream no admite columnas de los tipos de datos geometric.
  • Datastream no admite columnas de los tipos de datos range.
  • Datastream no admite arrays de tipos de datos no admitidos, arrays de tipos de datos definidos por el usuario (incluido ENUM) ni arrays de tipos de datos DATE, TIMESTAMP o TIMESTAMP WITH TIME ZONE. Estas columnas se ignoran.
  • Datastream no admite la replicación de eventos UPDATE para las filas que incluyen valores TOAST en las columnas que forman parte de la identidad de réplica de la tabla. Estos eventos se descartan.
  • Datastream no admite la replicación de filas que incluyen valores JSON o JSONB con más de 2,950 objetos anidados. Los eventos que contienen esos valores JSON o JSONB no se replican en la base de datos de destino.
  • Datastream no admite la replicación de filas que incluyen valores NaN en columnas NUMERIC (precision, scale). Los valores de esas columnas se reemplazan por valores de NULL.
  • Datastream no admite la replicación de columnas del tipo de datos hstore. Los valores de esas columnas se reemplazan por valores de NULL.
  • Datastream no admite la replicación de registros que no son ASCII desde una base de datos de origen codificada como SQL_ASCII. Estos registros se descartan.
  • Datastream no admite la replicación de tablas con políticas de seguridad a nivel de la fila (RLS) definidas. Para obtener información sobre cómo evitar esta limitación, consulta Comportamiento y limitaciones de la fuente de PostgreSQL.
  • Datastream no captura los cambios realizados en las columnas generadas.
  • Es posible que Datastream deje de funcionar o no capture eventos nuevos cuando se realice una actualización de la versión principal de PostgreSQL en la base de datos. Te sugerimos que descartes las ranuras de replicación antes de la actualización, luego actualices la base de datos y, por último, vuelvas a crear las ranuras de replicación. Si las transmisiones fallan, especifica el nuevo nombre de la ranura de replicación para recuperarlas y realiza un reabastecimiento si se requiere coherencia de los datos.

¿Qué sigue?