Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Database 图形数据库设计方法_Database_Design Patterns_Graph_Neo4j_Graph Databases - Fatal编程技术网

Database 图形数据库设计方法

Database 图形数据库设计方法,database,design-patterns,graph,neo4j,graph-databases,Database,Design Patterns,Graph,Neo4j,Graph Databases,我想为web应用程序使用图形数据库(涉及用户、帖子、评论、投票、答案、文档和文档合并以及用户和文档上的一些其他可传递关系的web)。因此,我开始问自己,是否有类似于图形数据库的设计方法,也就是说,类似于推荐用于关系数据库的设计原则(比如那些范式) 示例问题(出现的许多问题中): 在数据库中的任何用户节点上创建一个具有关系(“存在”)的顶级用户节点是一个好主意吗 内置版本管理(即创建关系(如“follows”))是不是一个好主意,指向文档/帖子的更新版本,返回此关系意味着查看文档所经历的更改 等

我想为web应用程序使用图形数据库(涉及用户、帖子、评论、投票、答案、文档和文档合并以及用户和文档上的一些其他可传递关系的web)。因此,我开始问自己,是否有类似于图形数据库的设计方法,也就是说,类似于推荐用于关系数据库的设计原则(比如那些范式)

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

  • 在数据库中的任何用户节点上创建一个具有关系(“存在”)的顶级用户节点是一个好主意吗
  • 内置版本管理(即创建关系(如“follows”))是不是一个好主意,指向文档/帖子的更新版本,返回此关系意味着查看文档所经历的更改
  • 等等
那么,我们需要一本图形数据库设计食谱吗?

Gremlin用户组()和Neo4j用户组()是讨论图形数据库建模的好地方

您可以创建超级节点,例如“用户”,但使用索引并为每个用户创建一个索引项(key=element\u type,value=“user”,id=user\u node\u id)可能更好、更高效

“follows”关系通常用于Facebook和Twitter上的人/朋友,所以我不会将其用于版本控制。您可以将版本控制系统构建到Neo4j中,为每个条目添加时间戳,并使用last write wins算法,还有其他数据库系统(如Datomic)也内置了此功能

有关bulls/Python()中的博客模型示例,请参见lightbull的模型()