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:
- La tabla tiene un índice de árbol B único.
- 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. - Ninguna de las columnas del índice admite valores nulos.
- Todas las columnas del índice están en orden ascendente o todas las columnas del índice están en orden descendente.
- 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
oNOTHING
en REPLICA IDENTITY. Debe establecerse enDEFAULT
. - 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 datosDATE
,TIMESTAMP
oTIMESTAMP WITH TIME ZONE
. Estas columnas se ignoran. - Datastream no admite la replicación de eventos
UPDATE
para las filas que incluyen valoresTOAST
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
oJSONB
con más de 2,950 objetos anidados. Los eventos que contienen esos valoresJSON
oJSONB
no se replican en la base de datos de destino. - Datastream no admite la replicación de filas que incluyen valores
NaN
en columnasNUMERIC (precision, scale)
. Los valores de esas columnas se reemplazan por valores deNULL
. - 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?
- Aprende a configurar una fuente de PostgreSQL para usarla con Datastream.