图数据库入门指南
如果你看过犯罪真人秀,你一定知道将各种关系串联起来的力量。总有那么一幕,我们会看到墙上挂满了主要嫌疑犯,还有各种报纸文章将他们联系在一起。
想象一下,把这块板子拿来,然后给它添加一个数学引擎,这样它就可以快速查询各种关系。这就是图数据库的本质。
在本文中,我们将讨论以下主题:
- 什么是图数据库?
- 图数据库选型需要考虑的因素
- 图数据库与关系数据库
- 图数据库的组成部分
- 图数据库示例和用例
1. 什么是图数据库?
图数据库是一种专用的单一用途平台,是针对连接数据优化的数据存储,用于创建和处理具有关联性和上下文性质的数据。图形本身包含节点、边和属性,这些元素组合在一起,使用户能够以关系数据库无法实现的方式表示和存储数据。
它们将信息存储在图形模型中,这意味着可以根据数据点与其他数据点的连接来查询数据点。这使得运行在传统数据库中速度极慢的复杂查询变得更容易,并且更容易从不同信息之间的联系中获取见解。
图数据库系统的主要概念是关系。关系被定义为一等公民——这意味着您可以用所有其他元素执行的所有操作都可以通过关系完成。数据在图形中相互关联,以存储节点和边的集合,其中边表示节点之间的关系。
关系允许将系统内的数据直接链接在一起。在图数据库中查询关系很快,因为它们以不变的方式存储。您还可以将它们可视化,这使得它们非常适合从高度互联的数据中获取见解。
图数据库中的关系表示社交网络
2. 图数据库需要考虑的因素
2.1 原生图数据库与多模型图数据库
对图数据库进行分类的一种方法是根据其原生或多模型格式。
原生图数据库是“图优先”的。换句话说,它们仅支持图模型。根据 Gartner 的《 2022 年图数据库管理市场指南》 ,原生选项“可能更适用于涉及实时计算、机器学习甚至具有数十亿个节点和边的图形的标准查询的资源密集型处理”。
多模型数据库将图形与其他两种 NoSQL 数据模型( 文档 和 键值存储) 相结合。这种“全能”的方法可以提供更大的灵活性,而无需承担多个供应商的风险和复杂性。
2.2 RDF 与属性图
对图数据库进行分类的另一种方法是根据其数据结构。图数据库广泛地将信息存储在以下一个或两个底层数据模型中:
- 属性图 ——将信息存储为节点(实体)、边(实体之间的连接)和属性,描述节点和边
- RDF 图 - 使用不带属性的主谓宾模型存储信息(例如“银行账户” - “有” - “警告标志”)
RDF-star 的引入(RDF 的扩展,允许嵌套三元组)使得这种区别变得不那么重要,但每个选项都有自己的优势。
Neo4j 的这篇博文 进行了全面的总结。
2.3 交易性、分析性、还是两者兼而有之……?
第三种分类是从事务或分析的角度考虑用例。缩写 OLAP(在线分析处理)和 OLTP(在线事务处理)可能与其他数据库模型相似。它们也适用于图表。
- OLTP 最适合用于欺诈检测、身份和访问管理或供应链 - 数据不断变化,信息实时添加、删除和修改的用例。在这里,写入数据库的性能非常重要。
- OLAP 更适合对更广泛但更静态的数据集进行复杂分析,例如商业智能和知识图谱分析。在这些场景中,能够发出复杂查询至关重要。
这两个类别正在迅速融合,大多数供应商都能够同时处理这两个类别,但不同的选择会偏向其中一种。例如,Amazon Neptune 的功能更适合 OLTP,而 Neo4j 则适用于 OLAP 用例。
2.4 图数据库可扩展性
图数据库的可扩展性是一个非常有争议的话题,也是供应商之间竞争的一个领域。
存储和查询小型图相当简单。但是一旦数据超出单个服务器的容量,图就需要分布在多台机器上。考虑到图的内在互连性质,这并不理想——你怎么知道从哪里切分呢?
一种常见的方法是分片。将单个大型数据库进行划分,这样数据存储在多个服务器上,虚拟服务器协调多个分片之间的查询。这样分散负载意味着系统可以满足更多用户的更多请求,而不会降低性能,但对于需要找到数据中最接近明显分片的开发人员来说,这会增加复杂性。
图数据库的可扩展性这篇文章对数据库如何应对扩展挑战进行了全面的概述。
2.5 图数据库性能
搜索 HackerNews,您无疑会找到一篇针对您喜欢的图数据库的基准测试文章,以及解释为什么应该忽略它的评论。
所有数据库基准测试都充满复杂性,如果不考虑特定用例,其实用性就会受到限制。结果将根据以下因素而有所不同:
样本数据的大小和复杂性——小型拓扑数据集不太可能与您的数据集相匹配
查询的复杂性——如果你只需要 5 次,那么 10 跳查询的性能就无关紧要。
数据库设置——所有图形 DBMS 都需要进行一些微调才能获得最佳性能
您使用的硬件和您首选的平台将影响整体性能
有人试图 将图数据库基准测试过程标准化。但唯一重要的基准测试是您自己的基准测试。值得花时间从您自己的用例中导入和查询一些示例数据,并使用对您重要的指标。
2.6 查询语言
富有表现力的图形查询语言是图数据库的一大优势。虽然可以用 SQL 运行图形查询,但这并不简单,尤其是在构建复杂查询以连接来自多个源表的数据时。如果数据以图形形式存储,那么以图形形式进行查询也是合理的。
供应商通常支持多种语言。有些语言(如 SPARQL)适合 RDF 格式,其他语言则与特定数据库相关(如 ArangoDB 的 AQL)。Cypher 是 Neo4j 的查询语言,但其他供应商也支持它。
根据我们的经验,“最佳”图形查询语言取决于个人偏好。Memgraph 的这篇博客文章 很好地概述了最受欢迎的选项。
图形查询语言简化了复杂的遍历查询。此示例使用 KeyLines 图表交互将 Cypher 查询发送到 Neo4j 数据库
2.7 功能
除了上述标准之外,您无疑还会有一份功能清单。
有一些关键的事情,比如它们支持的编程语言、API 和客户端,它们是否符合 ACID (原子性、一致性、隔离性和持久性)原则,以及它们是本地托管还是通过云服务托管。
3. 图数据库与关系数据库:相似之处和不同之处
您可能仍然想知道图数据库与关系数据库有何不同。两者都存储信息并用于表示数据之间的关系,但它们实现此目标的方式各不相同。
我们从六个维度来看图数据库和关系型数据库的差异:
- 数据模型
- 操作性
- 可扩展性
- 性能
- 易用性
- 应用
让我们更深入地探究它们的不同之处。
3.1 数据模型
关系数据库使用数据表将信息结构化为行和列。每列定义数据实体的特定属性,而行则代表单个数据记录。由于数据表具有固定的架构,因此用户必须使用主键和外键定义不同表之间的关系。
相比之下,图数据库使用图结构来构造数据,其中 节点 、 边 和 属性 用于表示数据。也就是说,节点定义对象,边说明节点之间的关系,属性描述节点和边的属性。
3.2 操作
关系数据库利用 SQL 的强大功能来操作数据。SQL 使开发人员能够执行各种查询,并有效地处理具有明确定义表间关系的结构化数据。它尤其擅长过滤、聚合和连接多个表的数据。
图数据库使用遍历算法来查询图形数据模型。遍历算法可以是深度优先或广度优先,这有助于快速发现和检索连接的数据。
3.3 可扩展性
虽然可以水平扩展关系数据库(即使用分片),但这会显著增加数据存储的复杂性,并可能引发一致性等进一步的问题。建议垂直扩展关系数据库。垂直扩展是指升级硬件(例如 CPU、存储、内存等)以增加服务器可以处理的工作负载。对于 MPP 类的关系型数据库,可以水平扩展和垂直扩展。
另一方面,图数据库在水平扩展方面性能非常出色。它们使用分区来实现这一壮举,分区是一种将存储的数据库对象划分为不同服务器上的不同部分的技术。这些分区随后使许多服务器能够并行处理图形查询。
3.4 性能
图数据库通常使用无索引邻接。这意味着每个节点直接引用其相邻节点。因此,访问关系和相关数据仅由内存点查找组成。这本质上意味着它很快。
关系数据库必须扫描不同的表才能识别实体之间的关系。例如,如果您想要连接多个表,数据库系统必须扫描整个数据才能找到关系。这意味着随着数据变大,性能会下降。
3.5 易于使用
关系是图数据库的核心。这使得它们在使用连接数据时非常容易使用,尤其是在执行多跳查询时——查询执行具有多个关系的遍历路径。在关系数据库中,这必须使用 SQL 执行。用 SQL 编写多跳查询并不是一件自然而然的事情。它们可能变得非常复杂,很容易导致难以阅读和维护的批量查询。
3.6 应用
图数据库注重关系,因此非常适合经常观察动态变化和适应性的任务。此类任务包括语义搜索和推荐引擎。
相比之下,关系数据库的刚性使其成为将结构化数据首先很好地放入表中的理想选择。此类数据的示例包括客户数据和交易。
点击图片可查看完整电子表格
4. 图数据库的核心组件
如前所述,图数据库使用户能够以图形形式表示数据。以这种格式建模数据使用的三个重要组件是节点、边和属性。
4.1 节点
对象或实例使用节点表示。从概念上讲,节点相当于关系数据库中的一行,并充当图中的顶点。只需为每个成员应用标签即可对节点进行分组。
4.2 边
图中边的另一个名称是关系。关系始终由起始节点、终止节点、类型和方向组成。它们通过描述父子关系、动作、所有权等来形成数据模式。
4.3 属性
很简单,属性是与节点相关的信息。
5. 图数据库的示例
让我们来看看当今最流行的一些图数据库,帮助我们了解它们的主要特性。
一些流行的图数据库
5.1 Neo4j
Neo4j 是世界领先的图数据库之一,可让用户深入、轻松、快速地发现数十亿个数据连接中的模式和见解。也就是说,Neo4j 是一个使用 Java 开发的高度可扩展的 NoSQL 开源数据库。
主要特点包括:
- 属性图数据模型:实现直观、灵活的数据建模,有助于轻松浏览复杂的数据关系。
- 原生图形处理和存储:优化数据检索和图形遍历,确保快速高效地处理大型数据集和复杂查询。
- 符合原子性、一致性、隔离性和持久性 (ACID) 的事务:保证可靠的数据处理,维护所有交易的数据准确性和可信度。
Cypher 图查询语言
提供一种强大且用户友好的方法来查询图形数据,简化从互连数据中提取有意义的见解的过程。
- 高性能原生 API
确保与数据库的有效交互,这对于需要低延迟和高吞吐量数据库交互的应用程序至关重要。
- Cypher 客户端
促进应用程序无缝执行 Cypher 查询,增强动态和交互式的用户体验。
- 多种编程语言的语言驱动程序
通过提供各种编程语言(包括 C#、Go、Java、JavaScript 和 Python)的驱动程序,提供开发灵活性,确保轻松集成到不同的技术堆栈中。
5.2 Amazon Neptune
使用 Amazon Neptune(一种快速、可靠且完全托管的图数据库服务)可以快速轻松地开发和运行处理密集连接数据的应用程序。专门构建的高性能图数据库引擎是 Neptune 的基础。该引擎旨在以毫秒级延迟查询图形,同时维护数十亿个关系。
主要特点包括:
- 支持开放图 API
通过支持各种开放图 API(如用于属性图的 Gremlin 和 openCypher、用于 RDF 图的 SPARQL)来促进兼容性和灵活性,使开发人员能够使用熟悉的查询语言与数据库进行交互。
- 高安全性
通过实施强大的安全功能、保护数据以及维护数据库中存储的信息的完整性和机密性,确保数据保护和法规遵从性。
- 全面管理
通过管理数据库任务(例如硬件配置、软件修补、设置和配置)简化用户体验,使开发人员能够专注于构建应用程序而不是管理数据库操作。
- 自动备份
通过自动处理备份过程来增强数据持久性并有助于灾难恢复,确保数据不会意外丢失并可在需要时恢复。
5.3 其他图数据库
另外两个流行的选项是 ArangoDB 和 OrientDB。
ArangoDB 是一款免费的开源 NoSQL 图数据库系统。它支持三种数据模型(图形、JSON 文档和键/值),这意味着它是多模型的,具有单个数据库核心和统一的查询语言 ArangoDB 查询语言 (AQL)。该工具主要是一种查询语言,可以在单个查询中组合各种数据访问模式。
OrientDB 是一个用 Java 编写的开源 NoSQL 数据库管理系统。与 ArangoDB 类似,OrientDB 也是一个多模型数据库,支持图形、JSON 文档、键/值和对象模型;但是,关系的管理方式与图数据库中的管理方式相同(即记录之间的直接连接)。该工具具有基于用户和角色的强大安全分析系统,并支持使用 Gremlin 进行查询以及用于图形遍历的扩展 SQL。
6. 图数据库的用例
6.1 社交网络
社交媒体网络自然而然地用图形数据模型来表示。利用图数据库可以简化捕获关系的过程,因为数据不需要从图形转换为表格再转换回来。图形数据模型可以直接用于表示用户及其关系等事物。
6.2 推荐引擎
网络中的朋友、客户兴趣和购买历史等信息类别之间的关系可以存储在图数据库中。然后,可以根据具有相似兴趣或购买历史的其他用户购买的产品向用户推荐产品。在网络中的朋友场景中,您可以使用图数据库来发现具有共同朋友但尚未建立联系的用户,并将他们推荐给彼此。
6.3 欺诈检测
图数据库可用于存储交易、人员和其他相关信息之间的关系,以便用户找到常见模式并构建能够检测欺诈活动的应用程序。例如,它可用于轻松发现指示欺诈的关系模式,例如与单个电子邮件地址关联的多个个人或共享同一 IP 地址但居住在不同物理地址的多个人。
7. 结论
在本指南中,您了解到图数据库是专门的单一用途平台,用于创建和操作具有关联性和上下文性质的数据。您还了解到,尽管关系数据库和图数据库的职责显而易见,即存储数据和表示关系,但它们在实现目标的方式上却大不相同。例如,关系数据库使用 SQL 进行操作,而图数据库使用遍历算法,这使得它们的速度更快,即使对于大型数据集也是如此,并且更适合具有大量互连性的数据。
原文链接:https://www.datacamp.com/blog/what-is-a-graph-database
原文作者:Kurtis Pykes
本文由mdnice多平台发布
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。