由于 cassandra 中的复合分区键导致的查询限制?

Query limitations due to composite partition keys in cassandra?

如果我有两个 table 结构,其中一个具有: 设这是 A,

PRIMARY KEY (measureid, statename, reportyear, countyname) 

还有一个,(假设为 B):

PRIMARY KEY ((measureid, statename, reportyear), countyname)

table 结构 B 在 A 上的查询限制是什么? 在哪些具有复合分区键的查询中会出现问题?

在tableA中:

PRIMARY KEY (measureid, statename, reportyear, countyname)

您可以仅使用 measureid 查询 table,它将 return 行 statename。具体来说:

SELECT FROM ... WHERE measureid = ?

或者,您也可以查询:

SELECT FROM ... WHERE measureid = ? AND statename = ?
SELECT FROM ... WHERE measureid = ? AND statename = ? AND reportyear = ?
SELECT FROM ... WHERE measureid = ? AND statename = ? AND reportyear = ? AND countyname = ?

在 table B 中:

PRIMARY KEY ((measureid, statename, reportyear), countyname)

必须指定全部measureidstatenamereportyear才能查询数据。这将 return 一个分区的所有行 :

SELECT FROM ... WHERE measureid = ? AND statename = ? AND reportyear = ?

要检索一个分区一个特定行

SELECT FROM ... WHERE measureid = ? AND statename = ? AND reportyear = ? AND countyname = ?

需要说明的是,您不能使用以下内容查询table B:

SELECT FROM ... WHERE measureid = ?
SELECT FROM ... WHERE measureid = ? AND statename = ?

因为您必须指定分区键的 3 列。我已经在 post https://community.datastax.com/questions/7866/ 中解释了原因。干杯!