【问题标题】:how to use cassandra cdc (change data capture)如何使用 cassandra cdc(变更数据捕获)
【发布时间】:2017-04-27 17:20:15
【问题描述】:

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

【问题讨论】:

    标签: cassandra cdc change-data-capture


    【解决方案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.内存表刷新到磁盘后,您可以访问$CASSANDRA_HOME/data/cdc_raw中的行CDC数据

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

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

    【讨论】:

      【解决方案2】:

      您可以编写自己的CommitLogReader 实现,或使用此sample implementation.

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

      【讨论】:

        【解决方案3】:

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

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

        这样:

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

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-03-07
          • 2020-06-12
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多