[ https://issues.apache.org/jira/browse/KAFKA-7918?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17238334#comment-17238334 ]
Matthias J. Sax commented on KAFKA-7918: ---------------------------------------- We decided to go with bytes-based in-memory stores, because we wanted to have a "plug-able" hierarchy of state store, ie, to add/remove the caching and/or change logging features. Also note, that for caching, we need to use a byte-based stores to be able to track the size of the cache and obey it. Also, usually people need to serialize data anyway for the writes into the changelog topic. An object-based in-memory store could avoid the deserialization cost on read though if there is no caching layer, but only the changelogging layer. Overall, using byte based in-memory stores seemed to be the better choice. > Streams store cleanup: inline byte-store generic parameters > ----------------------------------------------------------- > > Key: KAFKA-7918 > URL: https://issues.apache.org/jira/browse/KAFKA-7918 > Project: Kafka > Issue Type: Improvement > Components: streams > Reporter: John Roesler > Assignee: A. Sophie Blee-Goldman > Priority: Major > Fix For: 2.3.0 > > > Currently, the fundamental layer of stores in Streams is the "bytes store". > The easiest way to identify this is in > `org.apache.kafka.streams.state.Stores`, all the `StoreBuilder`s require a > `XXBytesStoreSupplier`. > We provide several implementations of these bytes stores, typically an > in-memory one and a persistent one (aka RocksDB). > Inside these bytes stores, the key is always `Bytes` and the value is always > `byte[]` (serialization happens at a higher level). However, the store > implementations are generically typed, just `K` and `V`. > This is good for flexibility, but it makes the code a little harder to > understand. I think that we used to do serialization at a lower level, so the > generics are a hold-over from that. > It would simplify the code if we just inlined the actual k/v types and maybe > even renamed the classes from (e.g.) `InMemoryKeyValueStore<K,V>` to > `InMemoryKeyValueBytesStore`, and so forth. > -- This message was sent by Atlassian Jira (v8.3.4#803005)