我有一项业务要求,需要开窗12小时,并且需要查询流数据。在12小时内,记录量约为1亿条记录。另外,我需要维护所有事件的顺序。 使用Streams API,我构建了一个系统来执行此操作。音量似乎不是问题。真正的问题是企业希望在事件中以及州商店(几乎每个州商店)中进行搜索。搜索不是基于键的,而是基于值中的某些字段。
我尝试了KSQL服务器,并尝试使用2500万条记录的数据集运行简单查询,并且在8小时的窗口内运行查询花费了将近240秒的时间才能完成搜索。 (现在我正在使用单个节点和单个分区。)
我想到的另一种方法是让Elastic Search连接到流和状态存储,然后对它们运行查询,但是我不确定存储每个状态存储的数据是否是一个好的解决方案是否。
我想从社区中获得意见,即查询这种流量并要求响应时间短的最佳方法是什么。
我还是Kafka的新手,并期待提出建议和指导。
答案 0 :(得分:2)
Kafka本身并未针对索引查询或什至不涉及从偏移量开始并在日志中向前读取的任何查询进行优化。查询数据的最佳方法是将其存储到符合查询要求的系统中。
Kafka Streams确实支持交互式查询,但是,正如您所说的那样,如果您需要对字段而非键上的数据建立索引,则最好编写支持辅助索引的系统。