2016-02-13 71 views
2

我正在设计一个项目,学生将不得不实施他们自己的基于图形的数据库。实现基于图形的数据库

是否有任何确定的资源比较实现基于图的数据库的数据结构?

不幸的是,似乎没有比较或推荐用于这种数据库的数据结构和算法的资源。例如,在典型的RDBMS中,您会希望使用B +树或类似的东西。

我想知道是否有一个很好的,众所周知的方法来实现这样的数据库。

回答

1

经过一些额外的研究,我终于遇到了一本描述Neo4j如何实现的书。

Graph Based数据库中最重要的概念是无索引邻接关系的概念。也就是说,节点的邻接列表需要与节点保持一致;这避免了一旦拥有该节点就必须使用树来搜索邻接列表,从而使得基于图形的数据库更快地处理图形。

此外,重要的是要记住,节点和关系都需要存储信息。

信息存储的方式是通过邻接列表并不奇怪。关系中涉及的两个节点都将存储双重关联的关系。

Physical storage of data in Neo4j reproduced from the book Graph Databases by Ian Robinson et al.

这是我说的,而不是一个双向链表,一些替代的结构来存储邻接表意见都可以使用(选择取决于具体的方案被解决)。例如,如果您希望节点具有大量关系,那么如果某些关系的访问次数比其他关系更频繁,或者邻接关系的某种树形结构是自组织链接列表。