鉴于列族可以包含具有任意结构的行,我们可以将所有行存储在单个“存储”中(故意避免使用名称“列族/表”)。那么列族的目的是什么?
问问题
114 次
3 回答
1
最简单的原因在名称本身“列族”中显而易见。列族将一堆相关的列组合在一起。您可以将其视为包含相关列的命名空间。
例如,列“名称”本身缺乏上下文,可以由 ColumnFamilies 提供,如“员工”或“城市”。或者每个列都需要自己携带所有上下文,而没有相关列的概念。
于 2013-01-18T22:54:09.157 回答
1
原子性
在 Cassandra 1.1 及更低版本中,您拥有的唯一原子保证是写入同一行(即使用相同的键)将是原子的。
因此,您要非常仔细地考虑您想要在列中包含什么,以及这些列应该在哪一行,以便您的应用程序在写入失败时能够正常运行。
于 2013-01-20T20:44:32.860 回答
0
原因:
- 为一行中的列设置不同的排序顺序。比较器在列族创建时指定,之后无法更改。因此,如果您有哪些列必须按字母或数字排序的行,您必须创建不同的列族。
- 自定义可以在每个列族基础上设置的存储选项。例如缓存或行、压缩、过期列的删除等。每个列族的存储选项可以在这里找到
- 不能在同一列族中混合计数器和非计数器列
- 如其他答案中所述,由于逻辑内聚 - 列表示由行 ID 标识的某些实体的属性。
于 2013-07-20T21:51:30.860 回答