ArangoDB – 数据模型和建模
ArangoDB – 数据模型和建模
在本章中,我们将重点关注以下主题 –
- 数据库交互
- 数据模型
- 数据检索
ArangoDB 支持基于文档的数据模型以及基于图的数据模型。让我们首先描述基于文档的数据模型。
ArangoDB 的文档非常类似于 JSON 格式。文档中包含零个或多个属性,每个属性都附加一个值。值要么是原子类型,例如数字、布尔值或空值、文字字符串,要么是复合数据类型,例如嵌入的文档/对象或数组。数组或子对象可能由这些数据类型组成,这意味着单个文档可以表示非平凡的数据结构。
进一步在层次结构中,文档被排列成集合,其中可能不包含文档(理论上)或多个文档。人们可以将文档与行进行比较,将集合与表进行比较(这里的表和行是指关系数据库管理系统 – RDBMS 的表和行)。
但是,在 RDBMS 中,定义列是将记录存储到表中并调用这些定义模式的先决条件。然而,作为一个新特性,ArangoDB 是无模式的——没有先验的理由来指定文档将具有哪些属性。
与 RDBMS 不同的是,每个文档都可以以与另一个文档完全不同的方式构建。这些文档可以一起保存在一个集合中。实际上,集合中的文档之间可能存在共同特征,但是数据库系统,即 ArangoDB 本身,不会将您绑定到特定的数据结构。
现在我们将尝试理解 ArangoDB 的[图数据模型],它需要两种集合——第一种是文档集合(在群论语言中称为顶点集合),第二种是边集合。这两种类型之间存在细微差别。Edge 集合也存储文档,但它们的特点是包含两个独特的属性,_from和_to,用于在文档之间创建关系。实际上,一个文档(读取边)链接两个文档(读取顶点),它们都存储在各自的集合中。该架构源自带标签的有向图的图论概念,不包括不仅可以具有标签而且本身可以是类似 JSON 的完整文档的边。
为了计算新数据、删除文档或操作它们,使用查询,根据给定的标准选择或过滤文档。无论是简单的“示例查询”还是复杂的“连接”,查询都使用 AQL – ArangoDB 查询语言进行编码。