Releases: thriving-dev/kafka-streams-cassandra-state-store
Releases · thriving-dev/kafka-streams-cassandra-state-store
0.7.0
Added
- Advanced, optimised, efficient, custom implementation of
ReadOnlyKeyValueStorefor 'Interactive Queries' for 'partitioned' type CassandraKeyValueStore #25- Offered by
CassandraStateStorestatic methods, for an example please check the READMECassandraStateStore#readOnlyPartitionedKeyValueStore(KafkaStreams, String, CqlSession, String, boolean, String, Serde, Serde)CassandraStateStore#readOnlyPartitionedKeyValueStore(KafkaStreams, String, CqlSession, String, boolean, String, Serde, Serde, Function, StreamPartitioner)
- Offered by
- New example 'partitioned-store-restapi' featuring the new
CassandraPartitionedReadOnlyKeyValueStore#25- Implements a REST API with endpoints for all available 'Interactive Query' methods to play with hands-on
Changed
- Integration test is renamed
WordCountGlobalStoreTest->WordCountGlobalKeyValueStoreTest#25- test + assertions added for
ReadOnlyKeyValueStore.all()
- test + assertions added for
Removed
- First impl. of
CassandraStateStore#readOnlyPartitionedKeyValueStore(KafkaStreams, String)was removed and replaced by the more complex methods that return an instance ofCassandraPartitionedReadOnlyKeyValueStore(already mentioned above) #25
0.6.0
0.5.0
Added
- Interface
CassandraStateStore#19 #20- implemented by all the libraries custom StateStore solutions (only
CassandraKeyValueStoreyet) - provides static helper methods to get ReadOnly stores for interactive queries (see docs)
- implemented by all the libraries custom StateStore solutions (only
Changed
- dependency updates, incl. kafka-streams 3.5.0 #22
Reminder: the library itself does not have any transitive dependencies. All dependencies are compileOnly or for tests.
0.4.0
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
approximateNumEntriesis 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
0.3.2
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)
0.3.1
(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
- Covering
Changed / Removed
- Simplified overly complex class name to
GlobalCassandraKeyValueStoreRepository.
0.3.0
Added
approximateNumEntrieswas added usingSELECT COUNT(*)with WARN log & request timeout of 5s
Changed / Removed
keyValueStorenow supportsorg.apache.kafka.streams.state.ReadOnlyKeyValueStore#prefixScan(Object, Serializer)- Implements a solution using
rangeon 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)
- Implements a solution using
- 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
stringKeyValueStorewas 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)
- This removes the special implementation of
Security
- successfully tested the library against 'CQL injection' via
withTableOptions(..)
=> tried to addcompaction = { 'class' : 'LeveledCompactionStrategy' };DROP TABLE xyzwhich fails due to wrong syntax in Cassandra 3.11/4.1 & ScyllaDB 5.1
0.2.0
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
0.1.0
First public release