此数据模型是否适用于TitanDB中的基本新闻源?

时间:2016-10-18 17:02:59

标签: graph-databases titan ibm-graph

虽然我没有使用Neo4j,而是使用TitanDB(IBM Graph),但由于我是图形数据库的新手,我现在使用Neo4j文档中建议的模式建模基本新闻源。

http://neo4j.com/docs/snapshot/cypher-cookbook-newsfeed.html

完全阅读完所有文档后,我发现这些数据库的运行方式存在几个主要差异。

在链接中描述的模型中,每个用户posts都存储为vertexes,由edges相互连接,形成一个由每个用户发出的状态更新的长列表user顶点。

虽然根据Neo4j的功能这是有道理的,但我知道TitanDB具有vertex-centric索引功能,详见此处:

http://s3.thinkaurelius.com/docs/titan/1.0.0/indexes.html

现在,我正在尝试确保查询给定用户的Feed是最佳的,对于包含大量用户的大型图表,以及大量永久保留的帖子或状态更新。因此,我希望避免遍历所有用户朋友的所有帖子,然后最终订购和限制它们,只是为了获得用户Feed的前15项。

因此,我不确定Neo4j文档中描述的模型是否真的是与TitanDB一起使用的模型,所以我的问题如下:

  • Neo4j文档中描述的模型是否适用于TitanDB中的快速新闻源检索?
  • 如果是这样,我需要创建哪些索引才能最佳地检索用户Feed?
  • 如果没有,我会更好地将每个post顶点直接连接到发布它的user,并在每个vertex-centric属性上使用time索引posted边缘?

我真的在建立,索引和检索Titan DB中的基本新闻源方面提出了一些一般性建议。提前谢谢。

1 个答案:

答案 0 :(得分:2)

基本架构看起来并不是一种糟糕的方法,但基于这一用例很难做出正确的判断。

解决索引问题的最简单方法可能是对比特进行非规范化 - 将用户ID存储为post顶点上的属性,并在[user, timestamp]对上创建和索引。

以顶点为中心的索引可能对您有所帮助,但在提议的模型中却没有 - 您需要将post建模为边,节点是顶点,这可能会使其他遍历变得相当尴尬。此外,IBM Graph在其当前版本中不支持以顶点为中心的索引。