【问题标题】:Best way to persist join table data in Cassandra在 Cassandra 中持久化连接表数据的最佳方法
【发布时间】:2018-10-05 16:25:29
【问题描述】:

我有一个场景,我在 10 个表上创建了一个联接。当在数据库中完成连接时,这非常有用。现在,这些表是通过 Kafka 主题的流式数据(1:1 - 表:主题映射)。当新消息进入主题时,我需要创建/更新连接。到目前为止,我决定将这些数据存储在像 Cassandra 这样的 NoSQL DB 中,并随着事件的不断发生更新连接的记录。以下是我的问题:

  1. 有没有办法在 Kafka 内部做到这一点?
  2. 如果不在 Kafka 中,最好的方法是什么?
  3. 坚持 Cassandra 的解决方案是否提供了更好的选择?

请注意:我了解到 Cassandra 不是连接的正确解决方案。如果不是 Cassandra,推荐什么?请不要主观地否定这个问题,因为如果不是其他人,至少我也希望从中获得见解。

【问题讨论】:

  • 你想加入流经 10 个独立 Kafka 主题的数据,然后插入到 Cassandra 中?您可以使用Kafka Streams 加入多个主题,但加入 10 个单独的流可能会产生一些重大开销。正如您所提到的,Cassandra 不能进行连接。通常,在为 Cassandra 进行数据建模时,您希望尽可能地去规范化。您将从要创建的查询开始并构建一个表,以便它可以满足该查询而无需任何连接。
  • @JustinCameron - 谢谢你的意见,会调查的。

标签: cassandra apache-kafka


【解决方案1】:

有没有办法在 Kafka 内部做到这一点?

是的,使用 Kafka Streams 或 KSQL。

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

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

【讨论】:

  • 感谢您的回答。我会查看您分享的链接,并会向您提出问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-06-06
  • 2020-04-13
  • 1970-01-01
  • 2016-04-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多