{"id":19704674,"url":"https://github.com/datastax/cdc-apache-cassandra","last_synced_at":"2026-02-13T12:55:28.332Z","repository":{"id":37933880,"uuid":"360086220","full_name":"datastax/cdc-apache-cassandra","owner":"datastax","description":"Datastax CDC for Apache Cassandra","archived":false,"fork":false,"pushed_at":"2025-02-21T16:49:06.000Z","size":34877,"stargazers_count":38,"open_issues_count":25,"forks_count":22,"subscribers_count":14,"default_branch":"master","last_synced_at":"2025-04-05T17:51:12.019Z","etag":null,"topics":["cassandra","cdc","change-data-capture","datastax","pulsar"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/datastax.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE-HEADER.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-04-21T08:17:11.000Z","updated_at":"2025-02-21T16:49:06.000Z","dependencies_parsed_at":"2024-03-14T20:43:48.837Z","dependency_job_id":"80b8c759-2498-40d7-826f-70698cbf247e","html_url":"https://github.com/datastax/cdc-apache-cassandra","commit_stats":null,"previous_names":[],"tags_count":33,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/datastax%2Fcdc-apache-cassandra","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/datastax%2Fcdc-apache-cassandra/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/datastax%2Fcdc-apache-cassandra/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/datastax%2Fcdc-apache-cassandra/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/datastax","download_url":"https://codeload.github.com/datastax/cdc-apache-cassandra/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":251519190,"owners_count":21602296,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cassandra","cdc","change-data-capture","datastax","pulsar"],"created_at":"2024-11-11T21:24:02.878Z","updated_at":"2026-02-13T12:55:28.318Z","avatar_url":"https://github.com/datastax.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# DataStax CDC for Apache Cassandra\n\n[![CI](https://github.com/datastax/cdc-apache-cassandra/actions/workflows/ci.yaml/badge.svg)](https://github.com/datastax/cdc-apache-cassandra/actions/workflows/ci.yaml)\n![documentation](https://github.com/datastax/cdc-apache-cassandra/actions/workflows/publish.yml/badge.svg)\n![release](https://github.com/datastax/cdc-apache-cassandra/actions/workflows/release.yaml/badge.svg)\n[![GitHub release](https://img.shields.io/github/v/release/datastax/cdc-apache-cassandra.svg)](https://github.com/datastax/cdc-apache-cassandra/releases/latest)\n\nThe DataStax CDC for Apache Cassandra requires:\n\n* DataStax Change Agent for Apache Cassandra, which is an event producer deployed as a JVM agent on each Cassandra data node.\n* DataStax Source Connector for Apache Pulsar, which is source connector deployed in your streaming platform.\n\n![Cassandra-source-connector](./docs/modules/ROOT/assets/images/cassandra-source-connector.png)\n\nSupported streaming platform:\n* Apache Pulsar 2.8.1+\n* IBM Elite Support for Apache Pulsar (formerly DataStax Luna Streaming) 2.8.0.1.1.40+\n\nSupported Cassandra version:\n* Cassandra 3.11+\n* Cassandra 4.0+\n* [DataStax Enterprise (DSE)](https://www.datastax.com/products/datastax-enterprise) 6.8.16+\n\nNote: Only Cassandra 4.0 and DSE 6.8.16+ support the near realtime CDC allowing to replicate data as soon as they are synced on disk.\n\n## Documentation\n\nTo get started, see [QUICKSTART.md](QUICKSTART.md).\n\nFor the complete documentation, see the [CDC for Apache Cassandra documentation](https://docs.datastax.com/en/cdc-for-cassandra/docs/latest/index.html).\n\n## Demo\n\nCassandra data replicated to Elasticsearch:\n\n* Create a Cassandra table with cdc enabled\n* Deploy a Cassandra source and an Elasticsearch sink into Apache Pulsar\n* Writes into Cassandra are replicated to Elasticsearch.\n\n[![asciicast](https://asciinema.org/a/kiEYzHQrPWhJR19nZ7tbqrDIX.png)](https://asciinema.org/a/kiEYzHQrPWhJR19nZ7tbqrDIX?speed=2\u0026theme=tango)\n\n## Monitoring\n\nYou can collect Cassandra/DSE and Pulsar metrics into Prometheus, and build a Grafana dashboard with:\n* The CQL read latency from the Cassandra Source Connector\n* The replication latency from the Cassandra Source Connector (computed from the Cassandra writetime)\n* The CDC disk space used in the cdc_raw directory (for DSE only)\n* The mutation sent throughput from a Cassandra node\n* The pulsar events and data topic rate in\n\n![CDC Dashboard](./docs/modules/ROOT/assets/images/cdc-dashboard.png)\n\n## Limitations\n\n* Does not replay logged batches\n* Does not manage table truncates\n* Does not manage TTLs\n* Does not support range deletes\n* Does not sync data available before starting the CDC agent.\n* CQL column names must not match a [Pulsar primitive type](https://pulsar.apache.org/docs/next/schema-understand/#primitive-type) name (ex: INT32)\n* Does not support primary key only tables (ex: CREATE TABLE t (k int, c int, PRIMARY KEY (k, c)) WITH cdc=true;)\n\n## Supported data types\n\nCassandra supported CQL3 data types (with the associated AVRO type or logical-type):\n\n* text (string), ascii (string)\n* tinyint (int), smallint (int), int (int), bigint (long), double (double), float (float),\n* inet (string)\n* decimal (cql_decimal), varint (cql_varint), duration (cql_duration)\n* blob(bytes)\n* boolean (boolean)\n* timestamp (timestamp-millis), time (time-micros), date (date)\n* uuid, timeuuid (uuid)\n* User Defined Types (record)\n* tuple (record)\n* Collection types:\n  * list (array)\n  * set (array)\n  * map (map)\n\n## Build from the sources\n\n    ./gradlew assemble\n\nNote: Artifacts for DSE agent are excluded by default. To build the `agent-dse4` module, specify the `dse4` property:\n\n    ./gradlew assemble -Pdse4 \n\n## Acknowledgments\n\nApache Cassandra, Apache Pulsar, Cassandra and Pulsar are trademarks of the Apache Software Foundation.\nElasticsearch, is a trademark of Elasticsearch BV, registered in the U.S. and in other countries.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdatastax%2Fcdc-apache-cassandra","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdatastax%2Fcdc-apache-cassandra","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdatastax%2Fcdc-apache-cassandra/lists"}