【发布时间】:2015-09-19 05:47:59
【问题描述】:
作为新手,面对 Cassandra 数据模型的数据建模问题。我们计划将 Cassandra 用于报告目的。在报告中,我们需要通过多个参数过滤数据。假设我们有一个列族
Create table cf_data
(
Date varchar,
Attribute1 varchar,
Attribute2 varchar,
Attribute3 varchar,
Attribute4 varchar,
Attribute5 varchar,
Attribute6 varchar,
Primary Key(Date)
)
我们需要支持像这样的查询
Select * from cf_date where date = '2015-02-02' and Attribute1 in ('asdf','assf','asdf') and Attribute1 in ('wewer','werwe') and Attribute2 in ('sdfsd','werwe') and Attribute3 in ('weryewu','ghjghjh')
我知道我们在查询列族时需要遵守主键限制。 Cassandra 内部存储的工作原理类似于
SortedMap<String,SortedMap<Key,Value>>
NoSQL 的工作原理是按照访问模式存储非规范化数据。如果我需要满足上述查询,我应该如何对列族进行建模。在报表 UI 中,用户可以从 Attribute1、Attribute2、Attribute3.... 等下拉列表中选择值。一种选择是在 Cassandra 节点上使用 Spark 来支持 SQL 查询,但它比 Cassandra 期望的列族模型更好。
任何指针??
【问题讨论】:
-
您存储的数据的性质是什么?
-
这是金融时间序列数据。证券交易所交易信息被保存,所以我们可以说它是时间序列数据。大多数计算是根据历史数据和当前数据执行的。所有的计算都不能提前进行。一些计算是根据用户的输入实时执行的。
-
我可以提供一些插入示例,以便我可以向您推荐新结构
标签: apache-spark cassandra nosql