Cassandra中分区和列族之间的主要区别是什么

时间:2016-03-25 09:38:39

标签: cassandra cql nosql

我无法弄清楚在实施Apache Cassandra时,分区和族列的概念是否相同!?似乎Cassandra不再是列族数据库,而更像是表格分区数据库。有人可以解释一下。我跟着这个paper work

2 个答案:

答案 0 :(得分:2)

同样的事情,只是从不同的角度来看。

表是列族的二维视图。基本上,cassandra将数据保存为行格式,如下所示:

RowKey: Alaska
(name=David:Fronta, value=, timestamp=11223344...)
(name=John:Cannon, value=, timestamp=123455...)

以上是Cassandra实际收集数据的示例,在表格视图中它将是这样的:

country | first_name | last_name
Alaska  | David      | Fronta
Alaska  | John       | Cannon

列族中的RowKey是表中的分区键,如果你有聚类列,它将保持为col1:col2:...

Cassandra仍然以行格式保存数据,每行(行格式)是分区(在表格视图中)。

所以" Cassandra中分区和列族之间的主要区别是什么?"

答案是"它的调用方式以及它的显示方式"。

答案 1 :(得分:1)

没有

一个名为Table的列家族(因为CQL接管了thrift),是一个将保存在Cassandra集群中所有节点上的表。

如何在节点上分解表的数据是分区器的工作,因此分区机制与表的概念无关,因为从外部你不应该知道你的数据是否被保存在节点1或节点2或节点3 ...

最后,为整个群集定义分区程序。这部分地定义了诸如行是否将被排序之类的事情(这不是一个好主意,因为那样在给定节点上保存的行数将不会很好地平衡。)

有关其他信息,您可能需要在此页面上搜索“分区”一词:

http://wiki.apache.org/cassandra/Operations