在Cassandra中持久保存联接表数据的最佳方法

时间:2018-10-05 04:07:36

标签: cassandra apache-kafka

在一种情况下,我在10个表的顶部创建了一个联接。当在数据库中完成连接时,这非常有用。现在,这些表通过Kafka主题(1:1-table:topic映射)流传输数据。当新消息进入主题时,我需要创建/更新联接。到目前为止,我已经决定将这些数据存储在像Cassandra这样的NoSQL DB中,并随着事件的继续更新连接的记录。这是我的问题:

  1. 有没有办法在Kafka本身中做到这一点?
  2. 如果不在卡夫卡,这样做的最佳方法是什么?
  3. 留在Cassandra中的解决方案是否提供了更好的选择?

请注意:我读到Cassandra不是联接的正确解决方案。如果不是卡桑德拉,推荐什么?请不要以主观的方式来质疑这个问题,因为至少如果没有其他人,我希望也能从中获得见识。

1 个答案:

答案 0 :(得分:1)

  

有没有办法在Kafka本身中做到这一点?

是的,使用Kafka Streams或KSQL。

正如贾斯汀·卡梅隆(Justin Cameron)所指出的,联接仅限于2向联接,因此您需要“菊花链式”转换。每个人都会写回暂存的Kafka主题,最终的合并结果也将是Kafka主题。在这里,您可以使用Kafka Connect(Apache Kafka的一部分)将其流式传输到Cassandra。

免责声明:我为开源KSQL项目背后的公司Confluent工作。