在cassandra数据库中,我有视频和标签,每个视频可以有多个标签。
使用下面的结构,我可以得到视频有一个特定的标签:
CREATE TABLE VIDEOS_BY_TAG (
tag text,
video_id uuid,
added_date timestamp,
primary key ((tag), added_date, video_id)
) WITH CLUSTERING ORDER BY (added_date desc, video_id asc);
但是我怎么能让视频有多个特定的标签呢?例如,get视频有三个恐怖,浪漫和有趣的标签在Cassandra?
1条答案
按热度按时间mbzjlibv1#
您可以简单地在查询中使用in子句。
每个标记/子句可以命中不同的节点,但为特定标记返回的所有记录将来自单个节点。这是非常好的少量。请记住,您不希望使用包含50个标记的in子句的查询淹没系统,因为这可能会由于跨节点结果而导致一些争用。
如果这是代码,则更好的方法是简单地触发多个查询,每个标记一个查询,具体取决于执行的方式。这样会更好,因为每个协调器都可以从与所提供的标记相关的特定节点运行。v、 由于in子句,使单个协调器命中多个节点。
希望这是有道理的。