【发布时间】:2016-08-24 18:44:02
【问题描述】:
以 cassandra 的音乐专辑为例,
(a)
artist K
id C
title
album
这是超级专栏的设计吗?列由 (id) 索引,(title, album) 存储为子列?
如果模型看起来像这样,
(b)
artist K
id C
title C
album
那么就变成了复合柱设计?用(id|title) 索引的列,每列只存储(album)?
我的理解正确吗?我正在设计一个时间序列数据库,有 50 个传感器共享相同的时间戳,我将把它们放在一个宽行中,比如
(c)
location K
device K
year K
month K
day K
timestamp C
sensor1
sensor2
....
sensor50
如果我只在给定的时间范围内查询 sensor1,是否意味着 cassandra 将连续扫描所有 50 个传感器并选择我唯一需要的一个?
也许我应该使用架构
(d)
location K
device K
year K
month K
day K
sensorname C
timestamp C
value
分区大小和读取性能有什么区别?
【问题讨论】:
-
也许 (a) 和 (b) 都是复合列架构?
-
你在哪里找到的例子?永远不要再使用超级列。看起来您正在尝试构建一个已被有效弃用的节俭应用程序。看看 CQL,它是您构建应用程序的方式docs.datastax.com/en/cql/3.1/cql/cql_intro_c.html
-
示例来自于行星 cassandra 的在线教程。它不是特定应用程序的代码,而是一种设计模式,其中 K 表示分区键,C 表示集群键。我知道不建议使用超级列。但是我对它们是否已经退出感到困惑?文档非常混乱,没有指定 CQL 版本,也没有明确描述磁盘上的数据顺序。
标签: model cassandra time-series