Cassandra 的散列是否跨多个表具有相同的值?

Is Cassandra's hash for same value across multiple tables?

我有一个多租户应用程序,其中 tenantId 是每个查询的一部分,因此我将它放入所有 table 的分区键中。

示例:

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

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

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

我的问题是:

Cassandra 会散列 tenantId 'foo' 以将来自所有 table 的所有数据指向同一节点并使其成为 uber 热点还是会均匀分布每个 table 和集群周围的租户数据?

简单的回答,令牌值(分区键的散列)是相同的,它不依赖于 table 名称或其他任何东西。原因是我们在整个集群中使用相同的分区(Mu​​rmur3)。

所以在你的情况下,是的,如果你的分区键是 tenantId,来自一个客户的所有数据都将分发到相同的副本,这适用于 所有 tables 具有此分区键