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