我有多个来自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实现。 还有其他任何模拟方法吗?
感谢, 马特
答案 0 :(得分:2)
经验法则 - 根据查询对表进行建模。如果需要,可以在许多C *表中写入数据,以便能够从单个读取数据,每个查询一个。
有一个很好的课程