OrientDB对多模型的支持,提供了很多方式来接触和了解它的基础概念。从文档数据库的API中可以很清晰的了解这些概念。和其他数据库管理系统一样,OrientDB使用Record作为存储的单元。有很多种类型的记录,在文档数据库API中,记录都是Document 类型。文档是有键值对组成,也叫属性和字段,属于一个类。

来自于面向对象的概念,是一个数据模型的类型允许你对类的记录定义约束规则。和传统文档数据库的集合,以及关系数据库的表类似。

更多关于类的信息,参考Wikipedia.

To list all the configured classes on your system, use the CLASSES command in the console:

orientdb> CLASSES

CLASSES:
-------------------+------------+----------+-----------+
 NAME              | SUPERCLASS |CLUSTERS  | RECORDS   |
-------------------+------------+----------+-----------+
 AbstractPerson    |            | -1       |         0 |
 Account           |            | 11       |      1126 |
 Actor             |            | 91       |         3 |
 Address           |            | 19       |       166 |
 Animal            |            | 17       |         0 |
 ....              | ....       | ....     |      .... |
 Whiz              |            | 14       |      1001 |
-------------------+------------+----------+-----------+
 TOTAL                                           22775 |
-------------------------------------------------------+

使用Classes

在你的应用中使用类之前,需要了解如何创建和配置类。OrientDB中的类和关系数据库中的表类似,但是类不同的是可以无模式,全模式或者混合。类可以从其他类继承,创建类的树。每个类都有自己的簇(如果不指定,也会默认创建)。

更多信息,参考.

使用CREATE CLASS命令来创建类:

orientdb> CREATE CLASS Student

Class created successfully. Total classes in database now: 92

上面的命令创建了Student类。在执行CREATE CLASS时没有定义簇,OrientDB会创建一个默认簇student来存储该类的记录。这是,类还没有记录,也没有属性。使用CLASSES可以看到。

给类增加属性

上面提到,OrientDB允许无模式的类,也就是说允许类没有属性。然而,如果你想定义索引或者约束,属性是必须的。和关系数据库相比,如果类和表对应,那么属性就和列对应。

在类Student添加属性, 使用CREATE PROPERTY命令:

orientdb> CREATE PROPERTY Student.name STRING

Property created successfully with id=1


orientdb> CREATE PROPERTY Student.surname STRING

Property created successfully with id=2


orientdb> CREATE PROPERTY Student.birthDate DATE

Property created successfully with id=3

显示类的属性

你可以使用INFO CLASS命令来查看一个类所属的簇,属性和约束,例如:

orientdb> INFO CLASS Student

Class................: Student
Default cluster......: student (id=96)
Supported cluster ids: [96]
Properties:
-----------+--------+--------------+-----------+----------+----------+-----+-----+
 NAME      | TYPE   | LINKED TYPE/ | MANDATORY | READONLY | NOT NULL | MIN | MAX |
           |        | CLASS        |           |          |          |     |     |
-----------+--------+--------------+-----------+----------+----------+-----+-----+
 birthDate | DATE   | null         | false     | false    | false    |     |     |
 name      | STRING | null         | false     | false    | false    |     |     |
 surname   | STRING | null         | false     | false    | false    |     |     |
-----------+--------+--------------+-----------+----------+----------+-----+-----+

给属性增加约束

约束就是限制属性的取值。例如,类型,最大最小值,是否必须或者是否可为NULL。

使用ALTER PROPERTY来添加约束:

orientdb> ALTER PROPERTY Student.name MIN 3

Property updated successfully

上述命令给Studentname属性增加了约束,插入的记录,name属性至少3个字符。

查看类的记录

OrientDB中类包含和定义记录。通过BROWSE CLASS命令可以查看类的所有记录,DISPLAY RECORD命令可以查看特定记录。举例如下:

orientdb> INFO CLASS OUser

CLASS 'OUser'

Super classes........: [OIdentity]
Default cluster......: ouser (id=5)
Supported cluster ids: [5]
Cluster selection....: round-robin
Oversize.............: 0.0

PROPERTIES
----------+---------+--------------+-----------+----------+----------+-----+-----+
 NAME     | TYPE    | LINKED TYPE/ | MANDATORY | READONLY | NOT NULL | MIN | MAX |
          |         | CLASS        |           |          |          |     |     |
----------+---------+--------------+-----------+----------+----------+-----+-----+
 password | STRING  | null         | true      | false    | true     |     |     |
 roles    | LINKSET | ORole        | false     | false    | false    |     |     |
 name     | STRING  | null         | true      | false    | true     |     |     |
 status   | STRING  | null         | true      | false    | true     |     |     |
----------+---------+--------------+-----------+----------+----------+-----+-----+

INDEXES (1 altogether)
-------------------------------+----------------+
 NAME                          | PROPERTIES     |
-------------------------------+----------------+
 OUser.name                    | name           |
-------------------------------+----------------+

OrientDB自带一些默认的类,用来配置和管理系统的数据。(O开头的类) 。类OUser定义了数据库的用户。

查看OUser类的记录,运行BROWSE CLASS:

orientdb> BROWSE CLASS OUser

---+------+-------+--------+-----------------------------------+--------+-------+
 # | @RID | @Class| name   | password                          | status | roles |
---+------+-------+--------+-----------------------------------+--------+-------+
 0 | #5:0 | OUser | admin  | {SHA-256}8C6976E5B5410415BDE90... | ACTIVE | [1]   |
 1 | #5:1 | OUser | reader | {SHA-256}3D0941964AA3EBDCB00EF... | ACTIVE | [1]   |
 2 | #5:2 | OUser | writer | {SHA-256}B93006774CBDD4B299389... | ACTIVE | [1]   |
---+------+-------+--------+-----------------------------------+--------+-------+
这个例子中,列举了数据库的所有用户。默认的用户设置不安全,提高生产环境的账户安全,参考安全.

运行BROWSE CLASS, 第一例显示的是标示数,可以用来查看特定记录的详细信息,例如,显示类OUser第一条记录, 执行DISPLAY RECORD命令:

orientdb> DISPLAY RECORD 0

------------------------------------------------------------------------------+
 Document - @class: OUser                      @rid: #5:0      @version: 1    |
----------+-------------------------------------------------------------------+
     Name | Value                                                             |
----------+-------------------------------------------------------------------+
     name | admin                                                             |
 password | {SHA-256}8C6976E5B5410415BDE908BD4DEE15DFB167A9C873F8A81F6F2AB... |
   status | ACTIVE                                                            |
    roles | [#4:0=#4:0]                                                       |
----------+-------------------------------------------------------------------+

牢记,这条命令依赖于上条命令BROWSE CLASS。你可以继续显示其他记录,但是不能显示其他类的记录,除非先执行[BROWSE CLASS]。