我有一个在 IBM Graph(Cassandra 支持的 TitanDB)中建模的非常基本的新闻提要,如下所示:
我正在尝试编写一个执行以下操作的查询:
- 从顶点开始
USER: John.Smith
- 获取用户的 15 条最新帖子
FRIENDS
以及他自己的帖子。 - 检查是否
USER: John.Smith
喜欢这些帖子中的任何一个,并作为is_liked
每个帖子的简单布尔属性返回。
此查询有几个先决条件:
- 在每个返回的帖子中,
USER
还应返回帖子的属性。对于这个问题,只avatar
需要属性。 - 我需要能够对这些结果进行分页。即,一旦我检索到前 15 个帖子,我就需要能够返回接下来的 15 个,然后是下一个,依此类推。
我让用户朋友和他们的朋友没有问题LATEST_POSTS
:
g.V().hasLabel("USER").has("userid", "John.Smith").both("FRIEND").out("LATEST_POST");
我已经阅读了Tinkerpop文档,但我发现自己仍然迷失了如何开始构建此查询以满足我的要求。
此外,在性能、数据建模、模式或索引建议方面对此方法的任何评论都将非常有帮助。即我是否应该期望这种方法能够大规模实时检索提要?
提前致谢。