#mongodb #apache-kafka-connect #debezium
#mongodb #apache-kafka-connect #debezium
Вопрос:
При чтении раздела kafka, который содержит множество событий CDC, созданных с помощью Kafka-Connect
using debezium
, а источник данных находится в коллекции mongodb TTL
, я увидел, что некоторые события CDC имеют значение null, они находятся между событиями удаления. что это на самом деле означает?
Насколько я понимаю, все события CDC должны иметь структуру событий CDC, даже события удаления, почему существуют события с нулевым значением?
null,
{
"after": null,
"patch": null,
"source": {
"version": "0.9.3.Final",
"connector": "mongodb",
"name": "test",
"rs": "rs1",
"ns": "testestest",
"sec": 1555060472,
"ord": 297,
"h": 1196279425766381600,
"initsync": false
},
"op": "d",
"ts_ms": 1555060472177
},
null,
{
"after": null,
"patch": null,
"source": {
"version": "0.9.3.Final",
"connector": "mongodb",
"name": "test",
"rs": "rs1",
"ns": "testestest",
"sec": 1555060472,
"ord": 298,
"h": -2199232943406075600,
"initsync": false
},
"op": "d",
"ts_ms": 1555060472177
}
Я использую https://debezium.io/docs/connectors/mongodb / без сглаживания какого-либо события и используйте конфигурацию следующим образом:
{
"connector.class": "io.debezium.connector.mongodb.MongoDbConnector",
"mongodb.hosts": "live.xxx.xxx:27019",
"mongodb.name": "testmongodb",
"collection.whitelist": "testest",
"tasks.max": 4,
"snapshot.mode": "never",
"poll.interval.ms": 15000
}
Ответ №1:
Это так называемые события tombstone, используемые для правильного уплотнения удаленных событий — см. https://kafka.apache.org/documentation/#compaction
Сжатие также позволяет удалять. Сообщение с ключом и нулевой полезной нагрузкой будет рассматриваться как удаление из журнала. Этот маркер удаления приведет к удалению любого предыдущего сообщения с этим ключом (как и любое новое сообщение с этим ключом), но маркеры удаления являются особыми в том смысле, что они сами будут удалены из журнала через некоторое время, чтобы освободить место. Момент времени, в который удаления больше не сохраняются, отмечен как «точка хранения удаления» на приведенной выше диаграмме.