Cassandra是否在多个表中使用相同的值进行哈希处理?

时间:2016-01-21 16:02:00

标签: cassandra cassandra-2.0

我有一个多租户应用程序,其中tenantId将成为每个查询的一部分,所以我将它放入所有表的分区键中。

实施例

CREATE TABLE users {
tenantId text,
user text,
active boolean,
PRIMARY_KEY (tenantId, user)
}

CREATE TABLE roles {
tenantId text,
rolename text,
PRIMARY_KEY (tenantId, rolename)
}

现在,想象一下像这样的100个表......

我的问题是:

Cassandra会不会让房客感到厌烦?' foo'将所有表中的所有数据指向同一节点并使其成为 uber 热点,或者将它均匀地分配到每个表和&集群周围的租户数据是否均匀?

1 个答案:

答案 0 :(得分:5)

简单的答案,令牌值(分区键的散列)是相同的,它不依赖于表名或其他什么。原因是我们在整个集群中使用相同的分区( Murmur3 )。

因此,在您的情况下,是的,如果您的分区键是 tenantId ,则来自一个客户的所有数据将分发到相同的副本,这适用于所有表有这个分区键