无需将动态列族中的所有数据复制到静态列族中。
那怎么办??让我用一个例子来解释你,假设你有一个下面提到的 CF 模式:
CREATE TABLE sample (
KEY text PRIMARY KEY,
flag boolean,
name text
)
注意我已经对flag和name进行了索引。
现在这里有一些 CF 中的数据。
KEY,1 | address,Kolkata | flag,True | id,1 | name,Abhijit
KEY,2 | address,Kolkata | flag,True | id,2 | name,abc
KEY,3 | address,Delhi | flag,True | id,3 | name,xyz
KEY,4 | address,Delhi | flag,True | id,4 | name,pqr
KEY,5 | address,Delhi | col1,Hi | flag,True | id,4 | name,pqr
从数据中您可以了解到address、id和col1都是动态创建的。
现在,如果我查询类似的东西
SELECT * FROM sample WHERE flag =TRUE AND col1='Hi';
注意: col1 未编入索引,但我可以使用该字段进行过滤
输出:
KEY | address | col1 | flag | id | name
-----+---------+------+------+----+------
5 | Delhi | Hi | True | 4 | pqr
另一个查询
SELECT * FROM sample WHERE flag =TRUE AND id>=1 AND id <5 AND address='Delhi';
注意:这里既没有索引 id 也没有索引地址,我仍然得到输出
输出:
KEY,3 | address,Delhi | flag,True | id,3 | name,xyz
KEY,4 | address,Delhi | flag,True | id,4 | name,pqr
KEY,5 | address,Delhi | col1,Hi | flag,True | id,4 | name,pqr
所以基本上,如果你有一列的值总是你知道的,并且它被索引。然后,您可以轻松地过滤其余动态列,将它们与索引的始终为正的列聚合在一起。