无需将动态列族中的所有数据复制到静态列族中。
那么如何??让我用一个例子来解释一下,假设你有一个下面提到的 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
所以基本上,如果你有一列的值总是你知道的,并且它被索引。然后,您可以轻松过滤其余动态列,将它们与索引始终为正的列聚合在一起。