我有一个多租户应用程序,其中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 热点,或者将它均匀地分配到每个表和&集群周围的租户数据是否均匀?
答案 0 :(得分:5)
简单的答案,令牌值(分区键的散列)是相同的,它不依赖于表名或其他什么。原因是我们在整个集群中使用相同的分区( Murmur3 )。
因此,在您的情况下,是的,如果您的分区键是 tenantId ,则来自一个客户的所有数据将分发到相同的副本,这适用于所有表有这个分区键