0

鉴于列族可以包含具有任意结构的行,我们可以将所有行存储在单个“存储”中(故意避免使用名称“列族/表”)。那么列族的目的是什么?

4

3 回答 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 回答