📅  最后修改于: 2020-11-28 13:10:45             🧑  作者: Mango
在本章中,我们将重点关注以下主题-
ArangoDB支持基于文档的数据模型以及基于图形的数据模型。让我们首先描述基于文档的数据模型。
ArangoDB的文档非常类似于JSON格式。一个文档中包含零个或多个属性,每个属性附带一个值。值可以是原子类型(例如,数字,布尔值或null,字面量字符串),也可以是复合数据类型(例如,嵌入式文档/对象或数组)。数组或子对象可能由这些数据类型组成,这意味着单个文档可以表示非平凡的数据结构。
在层次结构上,文档被排列成集合,这些集合可能不包含任何文档(理论上),也可以包含一个以上的文档。可以将文档与行进行比较,将集合与表进行比较(此处的表和行是指关系数据库管理系统-RDBMS的表和行)。
但是,在RDBMS中,定义列是将记录存储到表中的先决条件,即调用这些定义架构。但是,作为一种新颖的功能,ArangoDB无需架构-没有先验的理由来指定文档将具有哪些属性。
与RDBMS不同,每个文档的结构都可以与另一个文档完全不同。这些文档可以一起保存在一个集合中。实际上,集合中的文档之间可能存在共同的特征,但是数据库系统(即ArangoDB本身)不会将您绑定到特定的数据结构。
现在,我们将尝试了解ArangoDB的[图形数据模型],它需要两种类型的集合-第一种是文档集合(在组理论语言中称为顶点集合),第二种是边缘集合。这两种类型之间存在细微的差异。边缘集合还存储文档,但是它们的特点是包括两个唯一的属性_from和_to用于在文档之间创建关系。实际上,一个文档(读取边)链接两个文档(读取顶点),这两个文档都存储在各自的集合中。该体系结构是从带标签的有向图的图形理论概念派生而来的,它排除了不仅可以具有标签,而且本身可以像文档一样完整的JSON的边。
要计算新鲜数据,删除文档或对其进行操作,将使用查询,查询将根据给定条件选择或过滤文档。无论是简单的“示例查询”还是复杂的“联接”,查询均以AQL-ArangoDB查询语言进行编码。