【问题标题】:How to join multiple data sources together in Cassandra如何在 Cassandra 中将多个数据源连接在一起
【发布时间】: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


    【解决方案1】:

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

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

    【讨论】:

    • 我同意建模表应该基于查询 - 但我的查询将围绕从所有这些字段连接在一起的数据获取数据..
    • 然后把你需要的所有字段写在一张表里
    • 嗯,这就是问题所在 - 并非所有字段都可以同时使用;所以我可以从 DataSource1 进行插入,这将填充一些字段,但随后我需要以某种方式加入 Datasource2 以填充其他剩余字段..
    猜你喜欢
    • 2018-04-24
    • 2016-04-03
    • 1970-01-01
    • 1970-01-01
    • 2012-01-31
    • 2023-03-16
    • 2018-11-08
    • 1970-01-01
    • 2015-01-10
    相关资源
    最近更新 更多