database - 实现基于图的数据库

标签 database nosql

我正在设计一个项目,学生必须在其中实现他们自己的基于图形的数据库。

是否有任何权威资源可以比较用于实现基于图形的数据库的数据结构?

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

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

最佳答案

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

基于图的数据库中最重要的概念是无索引邻接的概念。即该节点的邻接表需要与该节点保持一致;这避免了在拥有节点后必须使用树搜索邻接列表,从而使基于图的数据库能够更快地处理图。

此外,请务必记住,节点和关系都需要存储信息。

信息存储的方式是通过邻接表,这并不奇怪。关系涉及的两个节点都会存储关系的双向链接。

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

我认为可以使用一些替代结构来存储邻接列表,而不是双向链表(选择取决于要处理的场景)。例如,如果某些关系比其他关系更频繁地访问,则使用自组织链表;如果您期望节点具有大量关系,则使用某种邻接树结构。

关于database - 实现基于图的数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35374944/

相关文章:

node.js - Mongoose 填充不填充嵌套数组数据

database - NoSQL 开发人员必读资源

php - 在 php 中连接到数据库的最佳方法是什么?

java - 使用 Hibernate ORM 和 OGM 结合 SQL 和 NOSQL 数据库

mysql - 大型不常访问数据集的数据库解决方案

mysql - 从同一张表中查找相似数据

mysql - 为通用对象实现数据库结构

sql-server - sp_tables 调用花费更多时间导致阻塞

sql - 理解自然连接的困难

php - 为动态搜索引擎php添加过滤器