Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cassandra/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Database design 需要多个标记的查询的数据建模_Database Design_Cassandra - Fatal编程技术网

Database design 需要多个标记的查询的数据建模

Database design 需要多个标记的查询的数据建模,database-design,cassandra,Database Design,Cassandra,我很难找到一种合适的方法来对需要多个匹配标记的查询进行建模 我有下表: CREATE TABLE IF NOT EXISTS show_by_type (show_id UUID, tags frozen<set<VARCHAR>>, show_type VARCHAR PRIMARY KEY(show_type, tags, show_id)); 我做了一些研究,试图找出数据建模的正确方法,但我无法找到一种不需要允许过滤的方法。此列上已经有一个二级索引,因此仅运行一

我很难找到一种合适的方法来对需要多个匹配标记的查询进行建模

我有下表:

CREATE TABLE IF NOT EXISTS show_by_type (show_id UUID, tags frozen<set<VARCHAR>>, show_type VARCHAR

PRIMARY KEY(show_type, tags, show_id));
我做了一些研究,试图找出数据建模的正确方法,但我无法找到一种不需要允许过滤的方法。此列上已经有一个二级索引,因此仅运行一个索引就可以工作

我查看了上面的链接,但只有当我需要一次查询一个标记时,这才有效


关于如何更改数据模型以允许在查询中匹配集合中的多个值,您有什么想法吗?

在您的情况下,您可以正确地说,您只能通过添加允许筛选来从集合中选择多个值

SELECT * FROM show_by_type where show_type = 'movie'
 AND tags CONTAINS 'Horror' AND tags CONTAINS 'English'
 ALLOW FILTERING;
在集合类型列上添加二级索引可能无法按预期工作,因为对二级索引的查询仅限于等号“=”,并且可能无法为具有不同成员身份的动态列(如集合)编制索引

要直接回答您的最后一个问题,很难看到您如何精确地查询您需要的内容,而这些内容包含在一个集合中。您将不得不考虑添加额外的结构化列,如“语言”、“PrimaLyGyRe”等,并使用该集合来添加仅出现在整个记录集子集中的附加标记。
SELECT * FROM show_by_type where show_type = 'movie'
 AND tags CONTAINS 'Horror' AND tags CONTAINS 'English'
 ALLOW FILTERING;