这个数据模型对于TitanDB中的基本新闻提要是最优的吗?



虽然我不使用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

现在我正在努力确保查询给定的用户提要是最佳的,对于一个有很多用户的大图形,以及大量永久保存的帖子或状态更新。因此,我希望避免为了获取用户提要的前15个条目而遍历用户所有朋友的所有帖子,然后最终订购并限制它们。

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

  • Neo4j文档中描述的模型对于TitanDB中的快速新闻提要检索是最佳的吗?
  • 如果是这样,我需要创建哪些索引才能以最佳方式检索用户提要?
  • 如果不是,我最好将每个post顶点直接连接到发布它的user,并在每个posted边的time属性上使用vertex-centric索引?

我真的是一些关于建模,索引和检索在泰坦数据库的基本新闻源的一般建议。

基本模式看起来不像一个坏方法,尽管基于这一个用例很难做出一个好的判断。

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

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

相关内容

  • 没有找到相关文章

最新更新