我无法弄清楚在实施Apache Cassandra时,分区和族列的概念是否相同!?似乎Cassandra不再是列族数据库,而更像是表格分区数据库。有人可以解释一下。我跟着这个paper work
答案 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 ...
最后,为整个群集定义分区程序。这部分地定义了诸如行是否将被排序之类的事情(这不是一个好主意,因为那样在给定节点上保存的行数将不会很好地平衡。)
有关其他信息,您可能需要在此页面上搜索“分区”一词: