Cassandra CQL对包含否定的支持

Cassandra CQL对包含否定的支持,cassandra,cql,cql3,Cassandra,Cql,Cql3,Cassandra对集合支持包含: CREATE TABLE contacts ( id int PRIMARY KEY, firstName text, lastName text, phones map<text, text>, emails set<text> ); CREATE INDEX ON contacts (firstName); CREATE INDEX ON contacts (keys(phones)); //

Cassandra对集合支持
包含

CREATE TABLE contacts (
    id int PRIMARY KEY,
    firstName text,
    lastName text,
    phones map<text, text>,
    emails set<text>
);
CREATE INDEX ON contacts (firstName);
CREATE INDEX ON contacts (keys(phones)); // Using the keys function to index the map keys
CREATE INDEX ON contacts (emails);

如果要检查是否缺少元素,例如:
不包含
,该解决方案是什么?我在CQL文档中找不到这样的功能,有什么解决方案吗?

没有Cassandra不支持这样的功能。我猜您已经阅读了以下文章:

您必须获取整个集合并从应用程序中筛选它

Cassandra也不支持“不为空”运算符,也不支持“不等于”运算符

这些限制是因为C*如何存储数据,以及它如何快速查找行和扫描列。C*将数据存储在键值对(映射的映射)中。它可以通过索引键快速获取数据。通过跳转到数据所在的位置,C*可以非常快速地找到特定项。如果为集合编制索引:

集合和列表可以索引通过索引集合列找到的所有值。映射可以索引映射键、映射值或映射条目

要支持“not-feature”,C*必须获取集合中的所有行或项,并过滤掉所有结果,以获得效率不高的结果。所以C*不支持这个。如果需要,您可以在应用程序中处理它,了解所有事实和注意事项

**注意:使用C*索引有其自身的性能影响。确保您了解所有注意事项和用例

关于使用辅助索引的所有注意事项都适用于索引集合



->C*如何存储集合

SELECT * FROM contacts WHERE emails CONTAINS 'Benjamin@oops.com';