1

Cassandra 是否适合这种情况?

  1. 只有一个表(键/值)。
  2. 超多行,例如 10 万亿行。
  3. 拥有 1000 台服务器的集群
  4. 50%:50% 范围/列表和键获取。(范围/列表的TPS会随着它的增长而增加)

我知道 Cassandra 可以很好地扩展用于繁重的写入和读取查询,因为密钥是由哈希环自然分布的。而且我也知道在分区上会付出最少的努力。

但从他们的白皮书中,我的见解是它只会扩大直接匹配键的查询。并且并没有真正扩大范围/列表查询,因为键索引将像任何其他键一样存储在几个服务器中。而且,单个范围查询也有可能会访问集群中的每台服务器以获取密钥。如果是这种情况,随着我添加更多服务器,范围查询会变慢。

我想知道我的理解是否正确,还想知道范围查询是否随着我添加更多服务器而与键一起线性扩展。

我试图找出我在未来像谷歌规模一样成长时所面临的真正挑战。

4

1 回答 1

1

您是对的,使用哈希分区器 Cassandra 将无法以任何高性能方式满足范围查询。然而,Cassandra 也支持 a ByteOrderedPartitioner,它以词法顺序分配键,可以利用分区键进行快速范围扫描。

这种方法的一个问题是您牺牲了密钥的自动均匀分布。这意味着通过手动重新平衡保持您的密钥空间在节点之间均匀分布的更多操作负担。根据您的情况,此要求的范围可以从简单的烦恼到完全的阻塞(如果插入不是超级频繁,这个成本可能是可以接受的)。

关于ByteOrderedPartitioner的更多信息。

于 2014-04-01T02:56:41.090 回答