Benchmarking RocksDB performance in Kafka Streams

Hey everyone,
I’m Brian from Speedb (we’re a RocksDB-based RocksDB replacement), and I’m just getting started with exploring Kafka Streams and want to of course determine how Speedb performs in comparison to RocksDB by creating benchmarks, etc. Does anyone have any guidance or advice in use cases or benchmarks you’ve used in evaluating strain on the storage engine?

Internally at Confluent, we have a benchmark suite, and basically test the different DSL operators. As they use RocksDB quite differently (ie, access patterns), the performance profile is quite different. (We also run the same benchmark for the in-memory stores.)

  • StreamsBuilder.table() // just test materialization
  • non-windowed aggregation
  • windowed aggregations (for all window types, including different window sizes)
  • all joins (stream-stream (also different window sizes), PK/FK table-table, stream-table)
  • emit-final (RocksDB) and suppress() (in-memory)

You also want to change the key-space (ie, number of unique keys) and maybe message size.

(Of course, we also benchmark stateless, but I guess that’s less interesting to you.)

1 Like