在索引到Elasticsearch之前,我正试图解决数据非规范化的问题。现在,我的Postgres 11数据库配置了pgoutput插件,Debezium和Postgresql连接器正在将日志更改流式传输到RabbitMq,然后通过在数据库上进行反向查找并提供给Elasticsearch来聚合这些更改。
尽管这样做还可以,但在应用层聚合数据的查找成本很高,而且需要大量的执行时间(查询已经经过了优化,但它有大约10个联接,这让它变得草率(。
我探索的另一种选择是使用KStream进行数据聚合。我对Apache Kafka的了解很少,所以我来到这里。我的问题是,是否需要使用ApacheKafka作为代理才能使用JavaKStreamsneneneba API,或者它是否可以与任何代理(如RabbitMq(一起使用?我不确定这一点,因为所有的文章都谈到了Apache Kafka特有的Kafka主题和键值对。
如果有更好的方法来解决数据非规范化问题,我也持开放态度。
感谢
卡夫卡牛排仅适用于卡夫卡。非常欢迎您在Debezium和使用任何主题的进程(写入RabbitMQ的Postgres连接器?(之间使用Kafka Streams
您可以使用Spark、Flink或Beam对其他消息队列进行流处理,但Debezium需要Kafka,因此请从相关工具开始。
例如,Spark有一个Elasticsearch编写器库;对其他人不确定。