笔记列表:
ArangoDB-数据模型和建模
在本章中,我们将重点讨论以下主题−
- 数据库交互
- 数据模型
- 数据检索
ArangoDB支持基于文档的数据模型和基于图形的数据模型。让我们首先描述基于文档的数据模型。
ArangoDB的文档与JSON格式非常相似。文档中包含零个或多个属性,每个属性都附带一个值。值可以是原子类型(如数字、布尔值或null、文字字符串),也可以是复合数据类型(如嵌入的文档/对象或数组)。数组或子对象可能由这些数据类型组成,这意味着单个文档可以表示非平凡的数据结构。
在层次结构中,文档被安排到集合中,集合中可能不包含文档(理论上)或多个文档。可以将文档与行进行比较,将集合与表进行比较(这里的表和行指的是关系数据库管理系统(RDBMS)的表和行)。
但是,在RDBMS中,定义列是将记录存储到表中并调用这些定义模式的先决条件。然而,作为一个新特性,ArangoDB没有模式-没有先验的理由来指定文档将具有哪些属性。
与RDBMS不同的是,每个文档的结构可以完全不同于另一个文档。这些文档可以保存在一个集合中。实际上,集合中的文档之间可能存在共同的特征,但是数据库系统(即ArangoDB本身)不会将您绑定到特定的数据结构。
Now we will try to understand ArangoDB’s [图形数据模型], which requires two kinds of collections — the first is the document collections (known as vertices collections in group-theoretic language), the second is the edge collections. There is a subtle difference between these two types. Edge collections also store documents, but they are characterized by including two unique attributes, _从 and _至 for creating relations between documents. In practice, a document (read edge) links two documents (read vertices), both stored in their respective collections. This architecture is derived from the graph-theoretic concept of a labeled, directed graph, excluding edges that can have not only labels, but can be a complete JSON like document in itself.
要计算新数据、删除文档或对其进行操作,需要使用查询,根据给定的条件选择或过滤文档。查询要么像“示例查询”一样简单,要么像“连接”一样复杂,都是用AQL-ArangoDB查询语言编码的。