【发布时间】:2014-03-05 18:46:50
【问题描述】:
我有多个来自 RDBMS 的数据源需要推送到 Cassandra 作为公共数据层;这些数据源中的每一个都有不同的字段,并且它们之间没有通用的全局 ID。相反,全局唯一 ID 由多个字段组合而成。 如何在 Cassandra 中建模以填充数据?
如果我创建一个包含所有字段的 C* 表:
创建表T(datasrc1_uid uuid, datasrc1_field1 text, datasrc1_field2 文本,..,datasrc2_uid uuid,datasrc2_field1 文本, datasrc2_field2 文本,主键(datasrc1_uid,datasrc2_uid);
要在 T i 中插入/更新,必须同时打开与 datasrc1 和 datasrc2 的连接,并且本质上是在应用层中构造/加入。 否则,我可以为每个数据源创建单独的表(并且有超过 2 个,这只是一个示例!):
创建表 DS1(datasrc1_uid uuid, datasrc1_field1 text, .. 主键(datasrc1_uid,datasrc1_field1,..); 创建表 DS2(datasrc2_uid uuid, datasrc2_field1 text, .. 主键 (datasrc2_uid, datasrc2_field1, ..);
然后再次在应用层加入(并使用 BATCH 语句来保持插入/更新的原子性),这很难,因为这些必须逐步完成,而不是单个 Join 语句,将一些数据保存在内存中,等等。这在 RDBMS 中可以通过 DS1/DS2 之间的简单连接实现。 还有其他方法来建模吗?
谢谢, 马特
【问题讨论】:
标签: join cassandra datasource modeling