多用途NoSQL-OrientDB
2021-06-22 17:06:08 阿炯

本站赞助商链接,请多关照。 OrientDB 是一个开源的多模型 NoSQL 数据库,支持原生图形、文档全文、响应性、地理空间和面向对象等概念。它使用 Java 编写,运行速度非常快:在普通硬件上,每秒可存储 22万记录。对于文档数据库,它还支持 ACID 事务处理。在ApacheV2协议下授权使用。



没有昂贵的运行时 JOINs,连接可作为记录之间的持久指针进行管理,可以在几毫秒内遍历数千条记录。

OrientDB 支持 schema-less,schema-full 和 schema-mixed 这三种模式,具有基于用户和角色的强大安全性分析系统,并支持查询语言之间的 SQL。有测试表明orientDB是neo4j的10倍效率,支持分布式扩展,开源社区也比较活跃。

图数据库的相关特点

灵活性
图天生是可扩展的。新增加节点与边对现有的模型对应用程序等没有任何影响。

敏捷性
可以与敏捷开发或者测试驱动开发模式保持一致。大型软件开发,业务模型不可能在开发初期就完美地确定下来。随着需求的变化,业务模型在后期可能会与当初设计大相径庭,而图数据库则拥抱变化。


特性
OrientDB是用Java语言实现的,运行在JVM之上。
Multi-Model:OrientDB支持多种模型:Key/Value, Object, Document, and Graph。
Multi-Master Replication:OrientDB集群部署时每个点都是Master,每个Master上都有完整的数据。一旦一个Master上的数据发生变更,会将发生变更的数据同步通知其它Master。
Extended SQL: OrientDB支持大部分标准的SQL,同时在标准的SQL之上扩展了部分功能以方便图的操作。
Easy Integration:使用teleporter可以很容易地将数据从RDBMS迁移到OrientDB上。
OOP:OrientDB定义数据结构的Class符合OOP(Object-oriented programming)的理念,支持继承和多态的特性。
Document-Graph


数据模型
OrientDB支持多种模型:Key/Value, Object, Document, and Graph
Key/Value
Object
Document
Graph

OrientDB的一些基本概念

Classes : 类比关系型数据库系统中的Table与传统文档数据库的collections。这个概念来自于OOPObject-oriented programming的理念。class用于定义数据结构的模型。
Record:record是OrientDB中最小的加载和存储的单位。record有四种类型:Document、RecordBytesBLOB、Vertex、Edge。
Document:是OrientDB中最灵活的record。Document支持schema-less、schemal-full、schema-mixed,即可以在定义数据结构的时候指定属性及约定条件,也可以不指定。它通过create class语法来定义一个数据结构。
Vertex:在OrientDB的graph模型下,每个结点叫作Vertex,每个Vertex也是一个Document。
Edge:在OrientDB的graph模型下,连接两个Vertex的边叫作Edge。Edge是有向性的而且仅能连接两个Vertex。
Clusters : 用于存储record。每个数据库最多有32767个cluster。每个class都必须至少有一个对应的cluster。默认情况下OrientDB会自动为每个class创建与当前cpu核数相同的cluster,其中有一个默认的cluster。
Cluster Selection:当新增加一条reocrd时OrientDB会根据cluster section为这条记录选择一个cluster。cluster section有四条类型:detault、round-robin、balanced、local。
Record ID :每个record都有一个record id。record id的格式如下:
#<cluster-id>:<cluster-position>。
Relationships:OrientDB中不使用join,它通过在每个reocrd中定义一个关系类型的属性来维护关系。这个关系属性存储的实际是record id,就像定义一个指针在内存中将两个record联系起来。
Inheritance & Polymorphic:OrientDB支持面向对象的继承和多态特性。


最新版本:3.2


官方主页:http://www.orientdb.org/