Transmita dados de bases de dados PostgreSQL

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:
    1. A tabela tem um índice B-tree exclusivo.
    2. 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.
    3. Nenhuma das colunas do índice é anulável.
    4. Todas as colunas do índice estão por ordem ascendente ou todas as colunas do índice estão por ordem descendente.
    5. 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 ou NOTHING. Tem de ser definido como DEFAULT.
  • 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 dados DATE, TIMESTAMP ou TIMESTAMP 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 valores TOAST 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 ou JSONB com mais de 2950 objetos aninhados. Os eventos que contêm esses valores JSON ou JSONB 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 colunas NUMERIC (precision, scale). Os valores nessas colunas são substituídos por valores NULL.
  • 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?