如何在Cassandra中将多个数据源连接在一起

时间:2014-03-05 18:46:51

标签: join cassandra datasource modeling

我有多个来自RDBMS的数据源需要被推送到Cassandra作为公共数据层;这些数据源中的每一个都有不同的字段,并且它们之间没有共同的全局ID。相反,全局唯一ID由多个字段的组合构成。 如何在Cassandra中对此进行建模以填充数据?

如果我创建一个包含所有字段的C *表:

  

创建表T(datasrc1_uid uuid,datasrc1_field1 text,   datasrc1_field2 text,..,datasrc2_uid uuid,datasrc2_field1 text,   datasrc2_field2 text,PRIMARY KEY(datasrc1_uid,datasrc2_uid);

要在T中插入/更新,我必须同时打开与datasrc1和datasrc2的连接,并在应用层中实质上构造/连接。 否则,我可以为每个数据源创建单独的表(并且有两个以上,这只是一个示例!):

  

创建表DS1(datasrc1_uid uuid,datasrc1_field1 text,..     PRIMARY KEY(datasrc1_uid,datasrc1_field1,..);   创建表DS2(datasrc2_uid uuid,datasrc2_field1 text,..     PRIMARY KEY(datasrc2_uid,datasrc2_field1,..);

然后再次加入应用程序层(并使用BATCH语句保持插入/更新原子),这很难,因为这些必须一步一步而不是单个Join语句,将一些数据保存在内存中,通过DS1 / DS2之间的简单连接,这可以通过RDBMS实现。 还有其他任何模拟方法吗?

感谢, 马特

1 个答案:

答案 0 :(得分:2)

经验法则 - 根据查询对表进行建模。如果需要,可以在许多C *表中写入数据,以便能够从单个读取数据,每个查询一个。

https://datastaxacademy.elogiclearning.com/

有一个很好的课程