第 3 章 利用图形建立数据模型 用图形建立数据模型
本作品已使用人工智能进行翻译。欢迎您提供反馈和意见:translation-feedback@oreilly.com
在前面的章节中,我们介绍了图形数据库与其他 NOSQL 存储和传统关系数据库相比所具有的巨大优势。但既然选择了图形数据库,问题就来了:我们该如何在图形中建模?
本章的重点是图建模。首先,我们回顾了标注属性图模型--最广泛采用的图数据模型--然后概述了本书大部分代码示例所使用的图查询语言:Cypher。尽管目前有多种图查询语言,但 Cypher 是应用最广泛的一种,使其成为事实上的标准。它也很容易学习和理解,特别是对于我们这些来自 SQL 背景的人来说。有了这些基础知识,我们就可以直接进入图建模的一些示例。第一个例子基于系统管理领域,我们比较了关系建模和图建模技术。在第二个例子(莎士比亚文学的生产和消费)中,我们使用图来连接和查询几个不同的领域。在本章的最后,我们探讨了使用图建模时的一些常见误区,并强调了一些良好实践。
模式和目标
在深入研究用图形建模之前,我们先来谈谈一般的模型。建模是一种基于特定需求或目标的抽象活动。我们建模的目的是将不规则领域的特定方面引入一个可以对其进行结构化处理的空间。世界上没有 "真实 "的自然表征,只有许多有目的的选择、抽象和简化,其中一些比另一些对满足特定目标更有用。
图形表示法在这方面也不例外。不过,它们与许多其他数据建模技术的不同之处或许在于逻辑模型和物理模型之间的紧密联系。关系数据管理技术要求我们偏离我们对领域的自然语言表述:首先是将我们的表述诱导为逻辑模型,然后再将其强制为物理模型。这些转换在我们对世界的概念化和数据库对该模型的实例化之间造成了语义上的不协调。有了图数据库,这种差距就会大大缩小。
标签化属性图模型
我们在第 1 章中介绍了标注属性图模型。概括地说,这些是它的显著特点:
-
带标签的属性图由 节点、关系、属性和标签组成。
-
节点包含属性。将节点视为以任意键值对形式存储属性的文档。在 Neo4j 中,键是字符串,值是 Java 字符串和原始数据类型,以及这些类型的数组。
-
节点可以标记一个或多个标签。标签将节点组合在一起,并标明它们在数据集中扮演的角色。
-
关系 连接节点并构造图。关系总是有一个方向、一个名称、一个开始节点和一个结束节点--没有悬而未决的关系。关系的方向和名称共同为节点结构增加了语义清晰度。
-
与节点一样,关系也可以具有属性。为关系添加属性的功能尤其适用于为图算法提供附加元数据、为关系添加附加语义(包括质量和权重)以及在运行时限制查询。
我们只需要这些简单的基元就能创建复杂且语义丰富的模型。到目前为止,我们所有的模型都是图表形式的。图表非常适合在任何技术环境之外描述图形,但在使用数据库时,我们需要其他机制来创建、操作和查询数据。我们需要一种查询语言。 ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access