什么是图形数据库?
图数据库是使用图形模型来表示和存储数据的数据库。
图数据库模型是关系模型的替代品。
在关系数据库中,数据使用具有预定义模式的刚性结构存储在表中。
在图形数据库中,没有这样的预定义模式。相反,任何模式都只是已输入数据的反映。随着输入更多不同的数据,模式会相应地增长。
图数据库是什么样的?
这是一个简单的图形数据库的示例。
一个简单的图形数据库示例。
蓝色和绿色的圆圈是_节点_。箭头代表 关系。
您可以立即看到汤姆汉克斯与所有这些电影(即绿色圆圈)的关系是他在其中扮演过角色。但他也导演过他演过的电影,所以他与那部电影有两种关系。
实际上,这不是完整的数据库。它只是从Neo4j图形数据库管理系统提供的示例电影数据库中查询的结果。
图数据库是否使用 SQL?
大多数图形数据库管理系统都是 NoSQL 系统,也就是说,它们要么不支持 SQL,要么支持,但也支持其他查询语言。
NoSQL 最初的意思是“非 SQL”,但有时会扩展为“不仅仅是 SQL”。
在大多数情况下,SQL 对图形架构没有意义。图数据库的结构通常与 SQL 设计的关系模型有很大不同。
许多图形数据库管理系统使用自己专有的查询语言。
上一个示例中的图形是从以下查询生成的:
$ MATCH (tom:Person {name: “Tom Hanks”})-[:ACTED_IN]->(tomHanksMovies) 返回 tom,tomHanksMovies
该代码是用 Cypher 编写的——Neo4j 的专有查询语言。
一些图形数据库系统支持其他语言,例如 JavaScript、JSON、XQuery、SPARQL 等
图形数据库管理系统 (GDBMS)
图形数据库是使用专为图形数据库设计的数据库管理系统 ( DBMS ) 创建和管理的。这些可以称为图形数据库管理系统 (GDBMS) 或图形 DBMS。
一些 GDBMS 使用关系存储引擎,而 NoSQL 系统通常为其存储引擎使用完全不同的架构,例如键值存储或面向文档的数据库。
许多 NoSQL 数据库系统使用 标签_或_属性 来定义节点之间的关系。这有助于返回大量相关数据,而无需使用跨多个表的连接,就像使用 SQL 使用关系模型所需要的那样。
图 DBMS 示例
这是使用 Neo4j 图形数据库管理系统的一些查询结果的另一个示例。这次显示用户界面。
Neo4j 图数据库中的查询结果示例。结果显示了节点(蓝色和绿色圆圈)和它们之间的关系(箭头)。
图数据库中数据的图形表示与常用关系数据库模型中呈现的表格结构形成对比。
关系 DBMS 示例
只是为了比较,这里有一个MySQL (_关系_DBMS)中的查询示例。请注意,结果以表格格式显示(与图形模型使用的节点和箭头相反)。
MySQL Workbench 中的查询。查询结果以表格格式提供。
图数据库的好处
与其他类型的数据库,尤其是关系数据库相比,图数据库有很多好处。
表现
与关系数据库相比,图数据库具有重大的性能优势,尤其是在涉及跨相关数据的大型查询时。
关系数据库应用程序通常具有连接许多表的查询——可能是 20、30 或更多。像这样的查询可能会运行得非常缓慢,尤其是当越来越多的记录输入到数据库中时。递归查询可能是一个特殊的问题,尤其是当它们运行很多级别时。
在许多情况下,如果将相同的数据存储在图形数据库中,查询会更简单,运行速度也会更快。这是因为,在图形数据库上,查询被本地化到图形的一部分。这意味着每个查询的执行时间仅与为满足该查询而遍历的图部分的大小成正比,而不是与整个图的大小成正比。
当然,这一切都取决于数据。图模型不一定是所有情况的理想模型。有些数据更适合关系数据库的表格结构。然而,图模型非常适合查询大型关联数据集。
灵活性
因为不需要定义集合模式,所以您可以完全灵活地控制数据库的增长方式。
使用关系模型,您需要在创建数据库之前详细规划需求。您需要尝试预见业务需求的任何潜在变化,并尝试构建一个满足所有可能的未来场景的解决方案。这并不总是可能的。如果业务需求显着增长/变化,数据库的结构也可能需要显着变化。它甚至可能必须完全重做。
使用图模型,随着业务的增长,您始终可以向任何现有数据库添加新类型的关系、新节点和新子图,而不会干扰现有查询和应用程序功能。
开发和维护
软件开发已经发展到以增量和迭代方式发布更新的标准做法。这与通常需要数月甚至数年的主要发布周期形成对比。
图数据库非常适合这种增量/迭代发布实践,因为在应用程序发生任何更改之前不需要进行底层结构更改。
图形数据库可以用来做什么?
图形数据库可用于各种应用程序。图数据库的一些流行用途包括:
- 社交网络
- 实时产品推荐
- 网络图
- 欺诈识别
- 访问管理
- 基于图形的数字资产搜索
- 主数据管理
图数据库示例
图数据库的示例包括 Neo4j、 Blazegraph和 OrientDB。
查看超过 40 个图形 DBMS的列表。


