Cassandra是否支持分片?

Chr*_*row 18 sharding cassandra nosql

Apache Cassandra是否支持分片?

道歉这个问题看起来似乎微不足道,但我似乎无法找到答案.我已经读到Cassandra是在GAE的Big Table之后部分模仿的,这个Big Table大规模分片.但是我目前在Cassandra上发现的大多数文档似乎暗示Cassandra不会跨多台机器水平分区数据,而是支持许多重复的机器.这意味着Cassandra非常适合高可用性读取,但如果写入量变得非常高,最终会崩溃.

Mat*_*elf 27

Cassandra跨节点进行分区(因为如果你不能拆分它,你就无法对其进行扩展).Cassandra集群的所有数据都被划分为"环",环上的每个节点负责一个或多个密钥范围.您可以控制分区程序(例如,随机,有序)以及根据您的要求将密钥/列复制到环上的节点数.

这包含了很好的概述. 基础架构

此外,我强烈建议您阅读Dynamo白皮书.虽然Cassandra在很多方面与Dynamo不同,但从概念上讲,它们源于相同的根源.看看:Dynamo白皮书

  • 这取决于您使用的是随机分区程序还是有序分区程序。随机分区器将均匀分布在节点之间,因此范围查询可能需要命中大多数/所有节点才能检索数据......所以可能是 O(n)。使用有序分区器,Cassandra 可以准确确定要查询哪些节点并返回其间环上的所有内容,但这是以均匀数据分布(即 hello 热点)为代价的。有多种方法可以完成范围查询(例如,在行键是列的情况下构建自己的索引)。这本身就值得另一个问题/讨论。 (2认同)