kafka-streams-cassandra-state-store

'Drop-in' Kafka Streams State Store implementation that persists data to Apache Cassandra / ScyllaDB

APACHE-2.0 License

Stars
20

Bot releases are hidden (Show)

kafka-streams-cassandra-state-store - 0.8.6 Latest Release

Published by hartmut-co-uk 4 months ago

What's Changed

Full Changelog: https://github.com/thriving-dev/kafka-streams-cassandra-state-store/compare/0.8.5...0.8.6

kafka-streams-cassandra-state-store - 0.8.5

Published by hartmut-co-uk 4 months ago

What's Changed

Full Changelog: https://github.com/thriving-dev/kafka-streams-cassandra-state-store/compare/0.8.4...0.8.5

kafka-streams-cassandra-state-store - 0.8.4

Published by hartmut-co-uk 9 months ago

What's Changed

Full Changelog: https://github.com/thriving-dev/kafka-streams-cassandra-state-store/compare/0.8.3...0.8.4

kafka-streams-cassandra-state-store - 0.8.3

Published by hartmut-co-uk 10 months ago

What's Changed

Full Changelog: https://github.com/thriving-dev/kafka-streams-cassandra-state-store/compare/0.8.2...0.8.3

kafka-streams-cassandra-state-store - 0.8.2

Published by hartmut-co-uk 12 months ago

What's Changed

Full Changelog: https://github.com/thriving-dev/kafka-streams-cassandra-state-store/compare/0.8.1...0.8.2

kafka-streams-cassandra-state-store - 0.8.1

Published by hartmut-co-uk 12 months ago

What's Changed

New Contributors

Full Changelog: https://github.com/thriving-dev/kafka-streams-cassandra-state-store/compare/0.8.0...0.8.1

kafka-streams-cassandra-state-store - 0.8.0

Published by hartmut-co-uk about 1 year ago

Added

  • feat: Implement VersionedKeyValueStore<K, V> #21
kafka-streams-cassandra-state-store - 0.7.3

Published by hartmut-co-uk about 1 year ago

Added

  • Ops: GitHub action step to trigger a publication to Sonatype OSS for main branch and tags
  • Ops: New GitHub action for triggering 'gradle release' from repo with automatic semver
kafka-streams-cassandra-state-store - 0.7.2

Published by hartmut-co-uk about 1 year ago

Polishing & Cleanup

  • chore: example/*-restapi enable datastax-java-driver RequestLogger
  • chore: example/partitioned-store-restapi use ScyllaDB
  • chore: example/partitioned-store-restapi fix main class + application.id
  • chore: polishing, more javadoc+comments, validateIsRunningOrRebalancing()
kafka-streams-cassandra-state-store - 0.7.1

Published by hartmut-co-uk about 1 year ago

Changed

  • Class is renamed to be more explicit (CassandraReadOnlyKeyValueStore -> CassandraPartitionedReadOnlyKeyValueStore)
kafka-streams-cassandra-state-store - 0.7.0

Published by hartmut-co-uk about 1 year ago

Added

Changed

Removed

kafka-streams-cassandra-state-store - 0.6.0

Published by hartmut-co-uk over 1 year ago

Changed

kafka-streams-cassandra-state-store - 0.5.0

Published by hartmut-co-uk over 1 year ago

Added

Changed

kafka-streams-cassandra-state-store - 0.4.0

Published by hartmut-co-uk over 1 year ago

Added

  • feat: Add builder config option - opt-in to enable count for approximateNumEntries #10
  • feat: Add builder config option - allow setting execution profiles (for DDL; DML) #11
  • feat: Add builder config option - opt-out to avoid tables to be auto-created #9
  • feat: add Quarkus examples app as GraalVM native image #7

Changed

  • store size via approximateNumEntries is now by default disabled - opt-in option has been added to builder - ref #10

Fixed

  • bug: cassandra concurrent schema updates (initial concurrent table auto-creation) #12
  • small fix: example 'processor-api-all-range-prefix-count' not runnable

Other

  • documentation improved
kafka-streams-cassandra-state-store - 0.3.2

Published by hartmut-co-uk over 1 year ago

Changed

  • fix: small refactoring to allow better reuse of AbstractCassandraKeyValueStoreRepository

Changed (documentation only)

  • feat: improve documentation for recommended kafka streams config
  • feat: add documentation on 'Cassandra table partitioning' (avoiding large partitions)
kafka-streams-cassandra-state-store - 0.3.1

Published by hartmut-co-uk over 1 year ago

(Added)

  • Adds a first set of integration tests with testcontainers
    • Covering
      • WordCountTest testing the kafka streams 'Hello world!' app to work with CassandraKeyValueStore
      • WordCountInteractiveQueriesTest testing interactive queries incl. methods all, range, prefixScan, approximateNumEntries
      • WordCountGlobalStoreTest testing CassandraStores.globalKeyValueStore() and store access via interactive queries
    • Using
      • Cassandra 4.1
      • Redpanda

Changed / Removed

  • Simplified overly complex class name to GlobalCassandraKeyValueStoreRepository.
kafka-streams-cassandra-state-store - 0.3.0

Published by hartmut-co-uk over 1 year ago

Added

  • approximateNumEntries was added using SELECT COUNT(*) with WARN log & request timeout of 5s

Changed / Removed

  • keyValueStore now supports org.apache.kafka.streams.state.ReadOnlyKeyValueStore#prefixScan(Object, Serializer)
    • Implements a solution using range on BLOB type key using ((Bytes) from).increment(), identically to RocksDB + InMemory KV Stores
    • The solution now works for all CQL databases, replacing the ScyllaDB specific solution (see right below)
  • adapts, enhances example 'processor-api-all-range-prefix-count' (previously 'processor-api-prefixscan')
    • added additional description to example README
    • added/fixed JavaDoc for WordCountProcessor
    • now also runs approximateNumEntries

Removed

  • stringKeyValueStore was removed with all belonging code (PartitionedStringKeyScyllaKeyValueStoreRepository, ...)
    • This removes the special implementation of org.apache.kafka.streams.state.ReadOnlyKeyValueStore#prefixScan(Object, Serializer) for ScyllaDB backed stores with String keys.
      (The implementation was based on ScyllaDB LIKE operator query on TEXT type clustering key)
    • This is longer required since replaced with generic solution implemented for keyValueStore (see right above)

Security

  • successfully tested the library against 'CQL injection' via withTableOptions(..)
    => tried to add compaction = { 'class' : 'LeveledCompactionStrategy' };DROP TABLE xyz which fails due to wrong syntax in Cassandra 3.11/4.1 & ScyllaDB 5.1
kafka-streams-cassandra-state-store - 0.2.0

Published by hartmut-co-uk over 1 year ago

Added

  • feat: implements StateStore.query
  • improved javadoc
  • adds documentation on
    • store types + operations
    • builder & options
    • link to examples
    • known limitations
    • cassandra specifics

Fixed

  • for any bug fixes
kafka-streams-cassandra-state-store - 0.1.0

Published by hartmut-co-uk almost 2 years ago

First public release