Utiliza vistas materializadas actualizables
Claves de ordenación personalizadas sin vistas materializadas actualizables
Elija columnas de la clave de ordenación que no cambien para una fila determinada
tenant_id, id) como clave de ordenación es una buena opción. Estas columnas identifican de forma única cada fila, y tenant_id permanece constante para un id aunque cambien otras columnas. Como la deduplicación por id coincide con la deduplicación por (tenant_id, id), esto ayuda a evitar problemas de deduplicación de datos que podrían surgir si tenant_id cambiara.
Establecer REPLICA IDENTITY en tablas de Postgres con una clave de ordenación personalizada
REPLICA IDENTITY en las tablas para incluir las columnas de la clave de ordenación. Esto es esencial para gestionar los DELETE con precisión.
Si REPLICA IDENTITY no incluye las columnas de la clave de ordenación, Postgres CDC no capturará los valores de las columnas distintas de la clave primaria; esta es una limitación de la decodificación lógica de Postgres. Todas las columnas de la clave de ordenación, aparte de la clave primaria en Postgres, tendrán valores NULL. Esto afecta a la deduplicación, lo que significa que es posible que la versión anterior de la fila no se deduplique con la versión eliminada más reciente (donde _peerdb_is_deleted se establece en 1).
En el ejemplo anterior con owneruserid e id, si la clave primaria aún no incluye owneruserid, necesitas tener un UNIQUE INDEX sobre (owneruserid, id) y establecerlo como REPLICA IDENTITY de la tabla. Esto garantiza que Postgres CDC capture los valores de columna necesarios para una replicación y deduplicación precisas.
A continuación se muestra un ejemplo de cómo hacerlo en la tabla events. Asegúrate de aplicar esto a todas las tablas con claves de ordenación modificadas.