ArangoDB - 数据模型与建模



在本章中,我们将重点介绍以下主题:

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

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

ArangoDB 的文档非常类似于 JSON 格式。一个文档包含零个或多个属性,每个属性都附加一个值。值可以是原子类型,例如数字、布尔值或空值、文字字符串,也可以是复合数据类型,例如嵌入式文档/对象或数组。数组或子对象可以包含这些数据类型,这意味着单个文档可以表示非平凡的数据结构。

在层次结构中,文档被组织成集合,这些集合可以不包含文档(理论上)或包含多个文档。可以将文档比作行,将集合比作表(这里的表和行指的是关系数据库管理系统 - RDBMS 的表和行)。

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

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

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

要计算新的数据、删除文档或操作它们,可以使用查询,这些查询根据给定的条件选择或过滤文档。无论是像“示例查询”一样简单,还是像“连接”一样复杂,查询都用 AQL - ArangoDB 查询语言编写。

广告

© . All rights reserved.