【发布时间】:2012-08-12 06:49:36
【问题描述】:
当涉及到复合列时,我试图了解 Cassandra 的存储引擎。不幸的是,到目前为止我阅读的文档包含错误,让我有点空白。
首先,术语。
复合列包含完全非规范化的宽行,使用 复合主键。
这似乎具有误导性,因为根据 AFAIK,复合列可以用于复合键,也可以简单地用作键之外的复合列。
1:复合键和列名是如何实现的?我能找到的每个 CQL 示例都只将复合键显示为列,而不是普通的复合列。
假设我们有列 'a'、'b'、'c'、'd' 作为主复合键 + 列 'e'、'f'。我知道 'a' 将是行和分区键。
假设以下数据:
a b c d e f
1a 1b 1c 1d e1 f1
1a 1b 1c 2d e1 f2
1a 1b 1c 2d e2 f3
2a 2b 2c 2d e2 f4
2:这是如何存储在引擎盖下的?我想这里真正的问题是'b'、'c'、'd' 是如何映射出来的,因为根据定义,列不是分层的。
3:我阅读的文档说不应再使用紧凑型存储。但是如果不需要添加非主键列怎么办……那有什么理由不使用呢?
【问题讨论】:
标签: indexing cassandra storage composite-key database-indexes