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



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

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

创建表T(datasrc1_uid,datasrc1_field2文本。。,datasrc2_uid、datasrc2_field1文本,datasrc2_field2文本,PRIMARY KEY(datasrc1_uid,datasrc2_uid);

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

创建表DS1(datasrc1_uid,datasrc1_field1 text。。PRIMARY KEY(数据rc1_uid,数据rc1_field1,..);创建表DS2(datasrc2_uid,datasrc2_field1文本。。PRIMARY KEY(数据rc2_uid,数据rc2_field1,..);

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

谢谢,马特

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

有一个很好的课程在https://datastaxacademy.elogiclearning.com/

最新更新