图数据库设计方法

时间:2012-05-25 11:05:55

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

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

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

  • 创建一个顶级节点用户,在数据库中的任何用户节点上建立关系(“存在”)是不是一个好主意?
  • 建立版本管理(即创建关系(类似“跟随”之类))是一个好主意,指向文档/帖子的更新版本,以此回归此关系意味着观察文档经历的更改
  • 等...

那么,我们需要图形数据库设计手册吗?

1 个答案:

答案 0 :(得分:5)

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(https://github.com/espeed/lightbulb/blob/master/lightbulb/model.py)中的示例博客模型,请参阅灯泡的模型(http://bulbflow.com)。