Nosql 是否使用Kafka流和/或KSQL从数据库中反规范化数据流

Nosql 是否使用Kafka流和/或KSQL从数据库中反规范化数据流,nosql,apache-kafka-streams,denormalization,cdc,ksqldb,Nosql,Apache Kafka Streams,Denormalization,Cdc,Ksqldb,在网上读了很多书之后,我终于找到了这个论坛。我的挑战是在将事务数据写入NoSQL数据库(本例中为Cassandra)之前,先将来自CDC的数据库的事务数据反规范化为Kafka。将事务数据与主表中的查找连接起来的最佳方法是什么?我的问题是每个事务表可能有5到10个查找表 在使用KSQL进行概念验证时,我学会了a)将查找表作为ktable加载,B)重新划分事务流,最后C)执行连接并写入新主题。 按照这种方法,如果我有5个或10个查找表,它们将生成在集群中发送的大量数据。我知道Streams DSL可

在网上读了很多书之后,我终于找到了这个论坛。我的挑战是在将事务数据写入NoSQL数据库(本例中为Cassandra)之前,先将来自CDC的数据库的事务数据反规范化为Kafka。将事务数据与主表中的查找连接起来的最佳方法是什么?我的问题是每个事务表可能有5到10个查找表

在使用KSQL进行概念验证时,我学会了a)将查找表作为ktable加载,B)重新划分事务流,最后C)执行连接并写入新主题。
按照这种方法,如果我有5个或10个查找表,它们将生成在集群中发送的大量数据。我知道Streams DSL可以使用GlobalKTable的概念,但这只在查找表相对较小的情况下起作用,此外,我更喜欢像KSQL这样的高级语言。有更好的方法吗?

您需要的是ksqlDB支持非键联接。因此,您应该对跟踪该功能的问题进行投票:


在此之前,重新划分事务流以匹配查找表的键的方法是唯一可行的解决方案。

您需要的是ksqlDB支持非键联接。因此,您应该对跟踪该功能的问题进行投票:


在此之前,将事务流重新分区以匹配查找表的键的方法是唯一可行的解决方案。

如果您查找的表可能发生更改,您也可能会遇到问题。那么,如何确保要加入的数据是生成CDC数据时出现在这些表中的数据。如果数据的时间戳正确,则Kafka流(以及内部使用Kafka流的KSQL)将确保正确的处理顺序。查找表也将通过CDC来源,因此通常不会出现问题,但实际上没有保证:当事务及时结束时,一个可以在Kafka中传递另一个。如果您查找的表可以更改,您也可能会遇到问题。那么,如何确保要加入的数据是生成CDC数据时出现在这些表中的数据。如果数据的时间戳正确,则Kafka流(以及内部使用Kafka流的KSQL)将确保正确的处理顺序。查寻表也将通过CDC获取,因此一般来说不会有问题,但确实没有保证:当交易及时结束时,一个可以在卡夫卡传递另一个。