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

What is the main difference between partition and column family in Cassandra

我不知道在 Apache Cassandra 的实现中分区和家族列的概念是否相同!? Cassandra 似乎不再是列族数据库,而更像是表格分区数据库。可以请一些解释。我正在关注这个 paper work

没有

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

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

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

有关其他信息,您可能需要在此页面上搜索词 "partition":

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

其实是一样的东西,只是角度不同而已。

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

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

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

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

column family 中的 RowKey 是 table 中的 Partition Key,如果你有集群列,它将保持为 col1:col2:...

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


所以"What is the main difference between partition and column family in Cassandra?"

答案是"just how it's called and how it's displayed"。