4

我想知道如何在 cassandra 中使用 CDC。我发现这已经从 3.8 版本开始实施( https://issues.apache.org/jira/browse/CASSANDRA-8844)。有没有使用示例?

4

3 回答 3

1

您可以编写自己的CommitLogReader实现,或使用此示例实现。

但是,请注意 CDC 日志不太可靠(因为重复事件和将数据刷新到 CDC 所花费的时间),并且在未来版本中可能会更改格式。

于 2018-07-29T09:58:38.667 回答
1

我在 ScyllaDB 工作,它与 Cassandra 兼容并且还支持 CDC - 这更易于使用。

您可以指定是否仅获取 delta、pre=image、post-image。数据存储在系统生成的表中,可以通过 CQL 访问和读取。

像这样:

  • 无需在 cassandra 节点上编写和部署代码来使用提交日志(也无需刷新来获取它们)
  • 重复数据删除是解决方案固有的。

您可以在https://docs.scylladb.com/using-scylla/cdc/中阅读更多内容

于 2021-01-19T09:43:59.493 回答
1

1. 在 cassandra.yaml 上启用 CDC

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 flush到磁盘后可以访问CDC中的行数据$CASSANDRA_HOME/data/cdc_raw

在此文件夹中 cassandra 存储CommitLogSegments。您可以查看此链接Read CommitLogSegments

阅读更多:https ://github.com/apache/cassandra/blob/8b3a60b9a7dbeeecc06bace617279612ec7092d/doc/source/operating/cdc.rst

于 2017-04-29T05:59:57.910 回答