12

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

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

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

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

4

1 回答 1

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

于 2012-05-29T01:00:01.637 回答