用一句话概括:一种Nosql数据库,支持文档、Key/Value,文档,图多种模型。
是读取和存储的最小单元。有四种类型:
* 文档(Document)
* 字节流(RecordBytes)
* 顶点(Vertex)
* 边(Edge)
文档是OrientDB中最灵活的记录类型。文档默认有类型,通过约束的模式来定义,但是也可以使用无模式的。
用于加载和存储二进制数据,类似于关系型数据中的BLOB
节点是图形数据中最基本的数据单元,OrientDB中叫做顶点
图形数据库中两个节点的连接叫做弧,OrientDB叫做边
存储数据的地方,可以存储在物理空间和内存空间
当OrientDB产生一条记录时,会自动分配一个唯一的单元标示,叫做Record ID,簇标示和位置组成的。格式如下:
#<cluster>:<position>
类似关系型数据库中表的概念。class概念来自面向对象编程,可以继承。也可以有抽象类(Abstract Class)
customer
Record A -------------> Record B
CLASS=Invoice CLASS=Customer
RID=5:23 RID=10:2
这里, 记录A在属性customer中包含了记录B的引用。 记录相互可以被对方访问,因为有记录ID,文档API中, 边被表示为两个链接,分别存储在对应的顶点中来处理双向连接关系
OrientDB支持以Sql的方式来查询数据,和传统Sql非常类似,有一些细微区别
JOINs(关联查询)
传统SQL
SELECT *
FROM Employee A, City B
WHERE A.city = B.id
AND B.name = 'Rome'
OrientDB Sql
SELECT * FROM Employee WHERE city.name = 'Rome'
DISTINCT
传统Sql
SELECT DISTINCT name FROM City
OrientDB Sql
SELECT DISTINCT(name) FROM City
创建Vertex
CREATE VERTEX [<class>] [CLUSTER <cluster>] [SET <field> = <expression>[,]*]
删除Vertex
CREATE VERTEX [<class>] [CLUSTER <cluster>] [SET <field> = <expression>[,]*]
Select
SELECT [ <Projections> ] [ FROM <Target> [ LET <Assignment>* ] ]
[ WHERE <Condition>* ]
[ GROUP BY <Field>* ]
[ ORDER BY <Fields>* [ ASC|DESC ] * ]
[ UNWIND <Field>* ]
[ SKIP <SkipRecords> ]
[ LIMIT <MaxRecords> ]
[ FETCHPLAN <FetchPlan> ]
[ TIMEOUT <Timeout> [ <STRATEGY> ]
[ LOCK default|record ]
[ PARALLEL ]
[ NOCACHE ]