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;