Esta secção contém informações sobre:
- O comportamento da forma como o Datastream processa os dados extraídos de uma base de dados PostgreSQL de origem
- As versões da base de dados PostgreSQL suportadas pelo Datastream
- Uma vista geral de como configurar uma base de dados PostgreSQL de origem para que os dados possam ser transmitidos a partir da mesma para um destino
- Limitações conhecidas da utilização da base de dados PostgreSQL como origem
Comportamento
A base de dados PostgreSQL de origem baseia-se na respetiva funcionalidade de descodificação lógica. A descodificação lógica expõe todas as alterações confirmadas na base de dados e permite consumir e processar estas alterações num formato fácil de usar através de um plug-in de saída. O Datastream usa o plug-in pgoutput
, que é o plug-in de descodificação lógica padrão do PostgreSQL para o PostgreSQL 10 e posterior.
- Pode selecionar todos os esquemas ou esquemas específicos de uma determinada origem PostgreSQL, bem como todas as tabelas do esquema ou tabelas específicas.
- Todos os dados do histórico são replicados.
- Todas as alterações da linguagem de manipulação de dados (DML), como inserções, atualizações e eliminações das bases de dados e tabelas especificadas, são replicadas.
- Apenas as alterações confirmadas são replicadas.
- Se definir uma REPLICA IDENTITY numa tabela, o Datastream trata as colunas especificadas como chaves primárias.
Versões
O Datastream suporta o PostgreSQL versão 10 e posteriores.
O Datastream suporta os seguintes tipos de base de dados PostgreSQL:
- PostgreSQL autoalojado
- Cloud SQL para PostgreSQL
- AlloyDB para PostgreSQL
- AlloyDB Omni
- Amazon RDS para PostgreSQL
- Amazon Aurora PostgreSQL
Limitações conhecidas
As limitações conhecidas da utilização do Datastream com uma base de dados PostgreSQL como origem incluem:
- Os streams estão limitados a 10 000 tabelas.
- Não é possível preencher uma tabela com mais de 500 milhões de linhas, a menos que sejam cumpridas as seguintes condições:
- A tabela tem um índice B-tree exclusivo.
- O índice não inclui colunas dos seguintes tipos:
DOUBLE
,FLOAT
,MONEY
,REAL
,JSON
,JSONB
,BYTEA
,TXID
,XML
, tipos de dados compostos ou tipos de dados geométricos. - Nenhuma das colunas do índice é anulável.
- Todas as colunas do índice estão por ordem ascendente ou todas as colunas do índice estão por ordem descendente.
- Todas as colunas do índice estão incluídas no fluxo.
- As tabelas sem chaves primárias têm de ter uma REPLICA IDENTITY. Caso contrário, apenas os eventos
INSERT
são replicados para o destino. - As tabelas com chaves primárias não podem ter o REPLICA IDENTITY definido como
FULL
ouNOTHING
. Tem de ser definido comoDEFAULT
. - O Datastream não pode fazer a replicação a partir de uma instância de réplica de leitura porque o PostgreSQL não suporta a descodificação lógica em réplicas de leitura.
- Nem todas as alterações ao esquema de origem podem ser detetadas automaticamente, caso em que pode ocorrer corrupção de dados. As seguintes alterações ao esquema podem causar corrupção de dados ou falha no processamento dos eventos a jusante:
- Eliminar colunas.
- Adicionar colunas ao meio de uma tabela.
- Alterar o tipo de dados de uma coluna.
- Reordenar colunas.
- Eliminar tabelas (relevante se a mesma tabela for recriada com novos dados adicionados).
- O fluxo de dados não suporta colunas dos tipos de dados
geometric
. - O fluxo de dados não suporta colunas dos tipos de dados
range
. - O fluxo de dados não suporta matrizes de tipos de dados não suportados, matrizes de tipos de dados definidos pelo utilizador (incluindo
ENUM
) nem matrizes de tipos de dadosDATE
,TIMESTAMP
ouTIMESTAMP WITH TIME ZONE
. Essas colunas são ignoradas. - A stream de dados não suporta a replicação de eventos
UPDATE
para linhas que incluem valoresTOAST
em colunas que fazem parte da identidade da réplica da tabela. Esses eventos são rejeitados. - O fluxo de dados não suporta a replicação de linhas que incluem valores
JSON
ouJSONB
com mais de 2950 objetos aninhados. Os eventos que contêm esses valoresJSON
ouJSONB
não são replicados para a base de dados de destino. - O fluxo de dados não suporta a replicação de linhas que incluem valores
NaN
em colunasNUMERIC (precision, scale)
. Os valores nessas colunas são substituídos por valoresNULL
. - O fluxo de dados não suporta a replicação de colunas do tipo de dados hstore. Os valores nessas colunas são substituídos por valores
NULL
. - O Datastream não suporta a replicação de registos não ASCII de uma base de dados de origem codificada em SQL_ASCII. Esses registos são rejeitados.
- O fluxo de dados não suporta a replicação de tabelas com políticas de segurança ao nível das linhas (RLS) definidas. Para obter informações sobre como contornar esta limitação, consulte o artigo Comportamento e limitações da origem do PostgreSQL.
- O fluxo de dados não captura as alterações feitas às colunas geradas.
- A stream de dados pode deixar de funcionar ou não captar novos eventos quando é feita uma atualização da versão principal do PostgreSQL na base de dados. Sugerimos que elimine os slots de replicação antes da atualização, atualize a base de dados e, em seguida, recrie os slots de replicação. Se as streams falharem, recupere a stream especificando o novo nome do espaço de replicação e faça um preenchimento se for necessária a consistência dos dados.
O que se segue?
- Saiba como configurar uma origem do PostgreSQL para utilização com o Datastream.