【问题标题】:Graph Database Design Methodologies图数据库设计方法
【发布时间】:2012-05-31 23:19:56
【问题描述】:

我想将图形数据库用于 Web 应用程序(涉及用户、帖子、评论、投票、答案、文档和文档合并的网络以及用户和文档的其他一些传递关系)。所以我开始问自己是否有类似图形数据库的设计方法,即类似于为关系数据库推荐的设计原则(如那些范式)?

示例问题(出现的许多问题):

  • 创建一个顶级节点用户,在数据库中的任何用户节点上都有关系(“存在”)是个好主意吗?
  • 建立版本管理(即创建关系(类似于“关注”))指向文档/帖子的更新版本是否是一个好主意,以追溯这种关系意味着观察文档经历的更改.
  • 等等……

那么,我们需要一本图形数据库设计指南吗?

【问题讨论】:

    标签: database design-patterns graph neo4j graph-databases


    【解决方案1】:

    Gremlin 用户组 (http://tinkerpop.com/) 和 Neo4j 用户组 (https://groups.google.com/forum/?fromgroups#!forum/neo4j) 是讨论图数据库建模的好地方。

    您可以创建诸如“用户”之类的超级节点,但使用索引并使用 key=element_type、value="user"、id=user_node_id 为每个用户创建索引条目可能会更好、性能更高。

    “关注”关系通常用于 Facebook 和 Twitter 上的人/朋友,因此我不会将其用于版本控制。您可以在 Neo4j 中构建一个版本控制系统,为每个条目添加时间戳并使用最后写入获胜算法,还有其他数据库系统(如 Datomic)内置了此功能。

    有关 Bulbs/Python (http://bulbflow.com) 中的示例博客模型,请参阅灯泡模型 (https://github.com/espeed/lightbulb/blob/master/lightbulb/model.py)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-08-23
      • 2010-11-21
      • 1970-01-01
      • 1970-01-01
      • 2015-05-26
      • 1970-01-01
      • 2012-09-10
      相关资源
      最近更新 更多