【发布时间】:2017-05-14 13:52:02
【问题描述】:
我是 Cassandra 的新手,所以我阅读了十几篇关于它的文章,因此我了解了基础知识。所有教程都通过 1 或 2 列和时间范围展示了高效的数据检索。如果您有更多条件,我找不到的是如何正确建模您的数据。
我有一个大型事件规范化数据库,有很多列,比如:
- 事件类型
- 时间
- 电子邮件
- 用户年龄
- user_country
- 用户语言
- 等等。
我需要能够按所有列进行查询。所以在 RDBMS 中我会查询:
SELECT email FROM table WHERE time > X AND user_age BETWEEN X AND X AND user_language = 'nl' 等..
我知道我可以为每一列制作一个单独的表格,但我仍然需要合并结果。也许这不是一个坏方法,但我对此表示怀疑,因为没有子查询。
我的问题显然是,如何在 Cassandra 中正确建模这种数据?
非常感谢!
【问题讨论】:
-
所以一个潜在的解决方案是:为每个事件类型创建单独的表。我们有一个“merchant_id”列,我们可以将其用作分区键,我们总是查找一个时间范围和 Merchant_id,所以在一个分区上。我们可以将其余的添加为二级索引吗? eventtype 表 + Mercer_id + time selection 中可能仍有数百万行。
标签: cassandra data-modeling cassandra-2.0 cql3 nosql