类
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
上述命令给Student
的name
属性增加了约束,插入的记录,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
]。