Orientdb 简明教程

OrientDB - Basic Concepts

OrientDB 的主要功能是对多模型对象的支持,即支持文档、图、键/值和真实对象等不同的模型。它包含一个单独的 API 来支持这四个模型。

Document Model

术语文档模型属于 NoSQL 数据库。这意味着数据存储在文档中,并且一组文档称为 Collection 。从技术上讲,文档表示一组键/值对,或称为字段或属性。

OrientDB 使用类、丛集和链接等概念来存储、分组和分析文档。

下表说明了关系模型、文档模型和 OrientDB 文档模型之间的比较 −

Relational Model

Document Model

OrientDB Document Model

Table

Collection

Class or Cluster

Row

Document

Document

Column

Key/value pair

Document field

Relationship

Not available

Link

Graph Model

图数据结构是一个数据模型,它可以以顶点(节点)的形式存储数据,顶点通过边(弧)相互连接。OrientDB 图数据库的构思源自属性图。顶点和边是图模型的主要组成部分。它们包含属性,这可以使它们看起来类似于文档。

下表显示了图模型、关系数据模型和 OrientDB 图模型之间的比较。

Relational Model

Graph Model

OrientDB Graph Model

Table

Vertex and Edge Class

扩展“V”(表示顶点)和“E”(表示边)的类

Row

Vertex

Vertex

Column

Vertex and Edge property

Vertex and Edge property

Relationship

Edge

Edge

The Key/Value Model

键/值模型表示数据可以以键/值对的形式存储,其中值可以是简单类型和复杂类型。它可以支持文档和图形元素作为值。

下表说明了关系模型、键/值模型和 OrientDB 键/值模型之间的比较。

Relational Model

Key/Value Model

OrientDB Key/Value Model

Table

Bucket

Class or Cluster

Row

Key/Value pair

Document

Column

Not available

文档字段或顶点/边属性

Relationship

Not available

Link

The Object Model

此模型由面向对象编程继承,并且支持类型(子类型扩展超类型)之间的 Inheritance 、类型指的是基础类时的 Polymorphism 以及编程语言中使用的对象来自/至的 Direct binding

下表说明了关系模型、对象模型和 OrientDB 对象模型之间的比较。

Relational Model

Object Model

OrientDB Object Model

Table

Class

Class or Cluster

Row

Object

Document or Vertex

Column

Object property

文档字段或顶点/边属性

Relationship

Pointer

Link

在详细讨论之前,最好了解与 OrientDB 相关的基本术语。以下是一些重要的术语。

Record

可以从数据库加载和存储的最小单位。记录可以存储在四种类型中。

  1. Document

  2. Record Bytes

  3. Vertex

  4. Edge

Record ID

当 OrientDB 生成记录时,数据库服务器会自动为该记录分配一个单元标识符,称为 RecordID (RID)。RID 看起来像 #<cluster>:<position>。 <cluster> 表示集群标识号,<position> 表示集群中记录的绝对位置。

Documents

文档是 OrientDB 中可用的最灵活的记录类型。文档是软类型,由具有定义约束的模式类定义,但你也可以在没有任何模式的情况下插入文档,即它也支持无模式模式。

文档可以通过 JSON 格式轻松地导出和导入。例如,看一看以下 JSON 示例文档。它定义了文档详细信息。

{
   "id"        : "1201",
   "name"      : "Jay",
   "job"       : "Developer",
   "creations" : [
      {
         "name"    : "Amiga",
         "company" : "Commodore Inc."
      },

      {
         "name"    : "Amiga 500",
         "company" : "Commodore Inc."
      }
   ]
}

RecordBytes

记录类型与 RDBMS 中的 BLOB 类型相同。OrientDB 可以加载和存储文档记录类型以及二进制数据。

Vertex

OrientDB 数据库不仅是文档数据库,也是图形数据库。使用顶点和边等新概念以图形的形式存储数据。在图形数据库中,最基本的数据单位是节点,在 OrientDB 中称为顶点。顶点为数据库存储信息。

Edge

存在一种称为边(Edge)的独立记录类型,该类型将一个顶点连接到另一个顶点。边是双向的,并且只能连接两个顶点。OrientDB 中有两种类型的边,一种是常规的,另一种是轻量的。

Class

类是一种数据模型类型和从面向对象编程范例中汲取的概念。基于传统的文档数据库模型,数据以集合的形式存储,而在关系数据库模型中,数据存储在表中。OrientDB 遵循文档 API 以及 OPPS 范例。作为一个概念,OrientDB 中的类与关系数据库中的表的关系最密切,但是(与表不同)类可以是无模式的,全模式的或混合的。类可以继承自其他类,从而创建类的树。每个类都有自己的集群,(如果未定义,则默认创建)。

Cluster

集群是一个重要的概念,用于存储记录、文档或顶点。简单来说,集群是存储一组记录的地方。默认情况下,OrientDB 将为每个类创建一个集群。一个类的所有记录都存储在具有与类同名的同一集群中。您可以在数据库中创建多达 32,767(2^15-1)个集群。

CREATE class 是一条用于创建带有特定名称的集群的命令。创建集群后,您可以通过在创建任何数据模型期间指定名称来使用该集群来保存记录。

Relationships

OrientDB 支持两种类型的关系:引用和嵌入。 Referenced relationships 表示其存储到关系目标对象的直接链接。 Embedded relationships 表示其存储到嵌入记录内的关系。这种关系比引用关系更强。

Database

数据库是访问真实存储的接口。它了解高级概念,例如查询、模式、元数据、索引等。OrientDB 还提供了多个数据库类型。有关这些类型的更多信息,请参阅数据库类型。