ArangoDB - 数据模型和建模


在本章中,我们将重点关注以下主题 -

  • 数据库交互
  • 数据模型
  • 数据检索

ArangoDB 支持基于文档的数据模型以及基于图形的数据模型。让我们首先描述基于文档的数据模型。

ArangoDB 的文档与 JSON 格式非常相似。文档中包含零个或多个属性,每个属性都附加一个值。值可以是Atomics类型(例如数字、布尔值或 null、文字字符串),也可以是复合数据类型(例如嵌入式文档/对象或数组)。数组或子对象可能由这些数据类型组成,这意味着单个文档可以表示重要的数据结构。

在层次结构中,文档被排列成集合,其中可能不包含文档(理论上)或包含多个文档。人们可以将文档与行进行比较,将集合与表进行比较(这里的表和行是指关系数据库管理系统 - RDBMS 中的表和行)。

但是,在 RDBMS 中,定义列是将记录存储到表中的先决条件,这些定义称为模式。然而,作为一项新颖的功能,ArangoDB 是无模式的——没有先验的理由来指定文档将具有哪些属性。

与 RDBMS 不同的是,每个文档的结构方式都可以与另一个文档完全不同。这些文档可以一起保存在一个集合中。实际上,集合中的文档之间可能存在共同特征,但是数据库系统(即 ArangoDB 本身)并不将您绑定到特定的数据结构。

现在我们将尝试理解ArangoDB的[图数据模型],它需要两种集合——第一种是文档集合(在群论语言中称为顶点集合),第二种是边集合。这两种类型之间存在细微的差别。边缘集合也存储文档,但它们的特点是包含两个独特的属性:_from_to,用于创建文档之间的关系。实际上,一个文档(读取边)链接两个文档(读取顶点),两个文档都存储在各自的集合中。该架构源自带标签的有向图的图论概念,不包括不仅可以具有标签,而且本身可以是完整的 JSON 文档的边。

为了计算新数据、删除文档或操作它们,需要使用查询,根据给定的条件选择或过滤文档。无论是简单的“示例查询”还是复杂的“连接”,查询都使用 AQL(ArangoDB 查询语言)进行编码。