假设我有这张表
CREATE TABLE mykeyspace.post (
id uuid PRIMARY KEY,
title text,
photos set<frozen <photoIds>>
);
和UDT:
CREATE TYPE mykeyspace.photoIds (
photoId uuid,
details text
);
我如何通过photos
分页,对于给定的帖子photos
,每次代表10 id
?
答案 0 :(得分:3)
不支持对集合进行分页。
请参阅reference manual:
保持集合较小以防止在查询期间出现延迟,因为Cassandra会完整地读取集合。该集合不在内部分页。
如前所述,集合旨在仅存储少量数据。
答案 1 :(得分:1)
我可以为你的桌面帖子提出另一种模式:
CREATE TABLE mykeyspace.post (
id uuid,
title text static,
photo photo,
PRIMARY KEY (id, photo)
);
CREATE TYPE mykeyspace.photo (
id uuid,
details text
);
此架构意味着:
此模式应该可以很好地满足您的目标,直到您通过分区/帖子达到约100.000张照片。 如果您之前从未使用过静态列,可以参考Datastax documentation
驱动程序可以为您进行分页。请参阅Datastax Java驱动程序文档中的Paging Feature。
Cql查询如下所示:
select photo.id, photo.details from post where id=*your_post_id*;
PS:我认为您不应该在架构中使用大写字母。