我正在设计一个项目,学生必须在其中实现他们自己的基于图形的数据库。
是否有任何权威资源可以比较用于实现基于图形的数据库的数据结构?
不幸的是,似乎没有资源可以比较或推荐用于此类数据库的数据结构和算法。例如,在典型的 RDBMS 中,您可能希望使用 B+ 树或类似的东西。
我想知道是否有一种好的、众所周知的方法来实现这样的数据库。
最佳答案
经过一些额外的研究,我终于找到了一本描述 Neo4j 如何实现的书。
基于图的数据库中最重要的概念是无索引邻接的概念。即该节点的邻接表需要与该节点保持一致;这避免了在拥有节点后必须使用树搜索邻接列表,从而使基于图的数据库能够更快地处理图。
此外,请务必记住,节点和关系都需要存储信息。
信息存储的方式是通过邻接表,这并不奇怪。关系涉及的两个节点都会存储关系的双向链接。
我认为可以使用一些替代结构来存储邻接列表,而不是双向链表(选择取决于要处理的场景)。例如,如果某些关系比其他关系更频繁地访问,则使用自组织链表;如果您期望节点具有大量关系,则使用某种邻接树结构。
关于database - 实现基于图的数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35374944/