范围查询T​​PS在Cassandra中是否线性扩展?

时间:2014-03-30 03:36:04

标签: cassandra consistent-hashing

Cassandra适合这种情况吗?

  1. 只有一个表(键/值)。
  2. 超过10万亿的行。
  3. 具有1000台服务器的群集
  4. 50%:50%的范围/列表和密钥提取。 (范围/列表的TPS将随着增长而增加)
  5. 我理解Cassandra可以很好地扩展重写和读取查询,因为密钥是由哈希环自然分配的。我也理解分区的工作量最小。

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

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

    我正试图找出未来我面临的真正挑战,因为它会像谷歌规模一样成长。

1 个答案:

答案 0 :(得分:1)

你是正确的,使用散列分区程序Cassandra将无法以任何高效的方式满足范围查询。然而,Cassandra还支持ByteOrderedPartitioner,它在词法排序中分配密钥,可以通过分区密钥进行快速范围扫描。

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

有关ByteOrderedPartitioner的更多信息。