Use views materializadas atualizáveis
Chaves de ordenação personalizadas sem views materializadas atualizáveis
Escolha colunas da chave de ordenação que não mudem para uma mesma linha
tenant_id, id) como chave de ordenação é uma boa escolha. Essas colunas identificam cada linha de forma única, e tenant_id permanece constante para um id, mesmo que outras colunas mudem. Como a desduplicação por id está alinhada com a desduplicação por (tenant_id, id), isso ajuda a evitar problemas de desduplicação de dados que poderiam surgir se tenant_id viesse a mudar.
Defina a REPLICA IDENTITY em tabelas do Postgres para uma chave de ordenação personalizada
REPLICA IDENTITY das tabelas para incluir as colunas da chave de ordenação. Isso é essencial para processar DELETEs com precisão.
Se a REPLICA IDENTITY não incluir as colunas da chave de ordenação, o Postgres CDC não capturará os valores de colunas além da chave primária — isso é uma limitação da decodificação lógica do Postgres. Todas as colunas da chave de ordenação, além da chave primária no Postgres, terão valores nulos. Isso afeta a desduplicação, o que significa que a versão anterior da linha pode não ser desduplicada com a versão excluída mais recente (em que _peerdb_is_deleted é definido como 1).
No exemplo acima com owneruserid e id, se a chave primária ainda não incluir owneruserid, você precisará ter um UNIQUE INDEX em (owneruserid, id) e defini-lo como a REPLICA IDENTITY da tabela. Isso garante que o Postgres CDC capture os valores de coluna necessários para uma replicação e desduplicação precisas.
Abaixo está um exemplo de como fazer isso na tabela events. Certifique-se de aplicar isso a todas as tabelas com chaves de ordenação modificadas.