Я хотел бы знать, как я могу использовать CDC в cassandra. Я обнаружил, что это уже реализовано, начиная с версии 3.8 (https://issues.apache.org/jira/browse/CASSANDRA-8844). Есть примеры использования?
как использовать cassandra cdc (изменить сбор данных)
Ответы (3)
<сильный>1. Включить CDC на cassandra.yaml
cdc_enabled (default: false)
Enable or disable CDC operations node-wide.
<сильный>2. Включение CDC на столе
CREATE TABLE foo (a int, b text, PRIMARY KEY(a)) WITH cdc=true;
// or
ALTER TABLE foo WITH cdc=true;
<сильный>3. После сброса memtable на диск вы можете получить доступ к данным строки CDC в $CASSANDRA_HOME/data/cdc_raw
В этой папке хранится хранилище cassandra CommitLogSegments
. Вы можете проверить эту ссылку Чтение сегментов CommitLog
Вы можете написать собственную реализацию CommitLogReader. , или используйте этот пример реализации.
Однако обратите внимание, что журналы CDC не слишком надежны (из-за повторяющихся событий и времени, необходимого для сброса данных в CDC), и в будущих выпусках формат может измениться.
Я работаю в ScyllaDB, которая совместима с Cassandra и также имеет поддержку CDC — ее проще использовать.
Вы можете указать, хотите ли вы получить только дельту, пре=изображение, пост-изображение. Данные хранятся в таблице, созданной системой, и к ним можно получить доступ и прочитать их через CQL.
Как таковой:
- нет необходимости писать и развертывать код на узлах cassandra для использования журналов коммитов (и нет необходимости сбрасывать их, чтобы получить их)
- Дедупликация является неотъемлемой частью решения.
вы можете прочитать больше в https://docs.scylladb.com/using-scylla/cdc/