本文假设用户已有RDBMS及标准SQL的基础知识。

本文不对OrientDB的下载、安装、使用作说明。具体可参考:http://orientdb.com/getting-started/

主要内容

1、什么是图数据库

2、图数据库的适用场景

3、为什么要使用图数据库

4、OrientDB的特性

5、OrientDB的数据模型

6、OrientDB的一些基本概念

7、OrientDB的查询

1、什么是图数据库

图:一些节点和关联这些节点的联系的集合。

NoSql(Not Only Sql)数据库分为四大类:

key/value                 例如: Redis

column-oriented      例如: Hbase

document                例如: MongoDB

graph                       例如: Neo4j,OrientDB

图数据库是NoSql数据库的一种。

2、图数据库的适用场景

世界上的大部分领域实际上都可以建模成图。

Gartner定义了商业世界的5个图:

社交 、

意向 、

消费 、

兴趣 、

移动。

3、为什么要使用图数据库?

性能

灵活性

图天生是可扩展的。

新增加节点与边对现有的模型,SQL,应用程序等没有任何影响。

敏捷性

可以与敏捷开发或者测试驱动开发模式保持一致。

我们知道现在的大型软件开发,业务模型不可能在开发初期就完美地确定下来。随着需求的变化,业务模型在后期可能会与当初设计大相径庭,而图数据库则拥抱变化。

4、OrientDB的特性

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:如下图API的依赖关系。

5、OrientDB的数据模型

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

Key/Value

Object

Document

Graph

6、OrientDB的一些基本概念

Classes : 类比关系型数据库系统中的Table与传统文档数据库的collections。这个概念来自于OOP(Object-oriented programming)的理念。class用于定义数据结构的模型。

Record:record是OrientDB中最小的加载和存储的单位。record有四种类型:Document、RecordBytes(BLOB)、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支持面向对象的继承和多态特性。

7、OrientDB的SQL

在写图数据库的SQL时,第一步是要确认起始点(这个也是图数据库比较耗时的地方),一旦起始点确认后,我们便可以近乎物理连接的方式查询这个起始点相关联的数据。

基本的SQL:OrientDB支持大部分标准的SQL查询。

例如:SELECT FROM Person WHERE name LIKE 'Luk%'

Traverse:traverse语法可以遍历获取一个record联结的reocrd。它比select使用起来更简单和快速。

例如:RAVERSE out("Friend") FROM #10:1234 WHILE $depth <= 3

Match:match是一种表述力很强的查询语法结构,类比Neo4j的Cypher语法结构。它以一种说明式的方式来查询。

例如:

MATCH {class: Person, as: person, where: (name = 'John' AND surname = 'Doe')}.both('Friend').both('Friend')

{as: friendOfFriend} RETURN person, friendOfFriend

本文转自微信公众号 “GraphDB"

图数据库OrientDB-基础篇相关推荐

  1. SpringBoot图文教程「概念+案例 思维导图」「基础篇上」

    有天上飞的概念,就要有落地的实现 概念+代码实现是本文的特点,教程将涵盖完整的图文教程,代码案例 每个知识点配套自测面试题,学完技术自我测试 本文初学向,所以希望文中所有的代码案例都能敲一遍 大哥大姐 ...

  2. 技术01期:大规模图计算【基础篇】

    导读 图计算就是研究如何高效计算.存储和管理大规模图数据.图是由顶点和边组成的,它可以对事物以及事物之间的关系建模,比如文章是点,文章与文章之间的超链接是边:或者顾客和商品是点,购买或者喜欢是边,购买 ...

  3. java基础入门第二版思维导图,Java 学习--你应该有份思维导图了(基础篇)

    每一门知识,除了理解它的一些原理用法之外,我觉得还有一点比较重要,那就是多整理笔记做总结. 以下是我自己亲自整理的关于 Java 学习的思维导图,分享出来希望能对大家在学习 Java 过程中有所帮助, ...

  4. MySQL数据库笔记-基础篇

    文章目录 MySQL概述 数据库相关概念 小总结 MySQL数据库 版本: 启动与停止 客户端连接 关系型数据库 数据模型 小总结 SQL SQL通用语法 SQL分类 DDL 数据库操作 查询 创建 ...

  5. 图数据库 OrientDB 安装 及 初步使用

    目录 安装 Java 安装OrientDB 命令行操作OrientDB 创建数据库 列出数据库 断开数据库 连接数据库 创建 class 插入记录 查询记录 更新记录 删除记录 删除数据库 玩 Spa ...

  6. Linux环境下的数据库(基础篇上)

    数据库 一.Linux环境下数据库的安装 二.数据库的基础操作 三.数据库中表的操作 一.Linux环境下数据库的安装 需要在 root 用户权限下进行数据库的一系列安装操作 安装 mariadb 服 ...

  7. 数据库--【基础篇】

    一.数据库的相关概念 1.DB:数据库(Database) 即存储数据的"仓库",其本质是一个文件系统.它保存了一系列有组织的数据. 2.DBMS:数据库管理系统(Database ...

  8. 图学java基础篇之IO

    java io体系 如图可以看出,java的io按照包来划分的话可以分为三大块:io.nio.aio,但是从使用角度来看,这三块其实揉杂在一起的,下边我们先来概述下这三块: io:主要包含字符流和字节 ...

  9. 达梦:如何登录数据库(基础篇)

    登录达梦数据库有两种方式,包括使用disql命令行工具登录和DM管理工具登录. 1.disql命令行工具登录         dIsql 是 DM 数据库自带的工具,只要安装了 DM 数据库,就可以在 ...

最新文章

  1. java的初始化顺序
  2. Java进阶学习之Java架构师的学习路线
  3. Android NDK开发入门学习笔记(图文教程,极其详尽)
  4. leetcode-114-二叉树展开为链表*
  5. 前后端分离-从MVC到前后端分离
  6. 使用JSSDK分享页面
  7. [教官] 目标中关村!偶滴工作日记
  8. java操作集合中 concurrentModifyException 异常的原因分析
  9. Sipdroid项目的编译运行
  10. hypermesh 错误 2005
  11. selenium+ocr 破解验证码
  12. catia 快捷键 激活零件_CATIA常用快捷键
  13. 使用 emoji表情 实现自己的 表情库
  14. cocos2dx报错OpenGL error 0x0501
  15. ZCC9628单向全波无刷马达驱动芯片替代AM7228
  16. win10无限重启_win10系统重置教程
  17. WAS下Sanp、heapdump、javacore
  18. 【大话QT之十四】QT实现多语言切换
  19. stm32/esp32/cam智能安防系统远程视频监控物联网远程传输视频图像GSM短信报警
  20. C++:cannot open source file问题

热门文章

  1. 如何提升会议体验感和氛围感?
  2. Linux内核学习之2号进程kthreadd
  3. 在不同操作系统上安装Python的详细教程
  4. linux分区方案为user,Ubuntu 为用户分配磁盘空间Linux 硬盘分区方案
  5. JSP校园运动会管理系统
  6. VUE element-ui之form表单自定义验证11位手机号码(封装验证规则)
  7. Learn Computer Vision-计算机视觉学习
  8. 财险商闭口不提交强险利润
  9. STM32开发GPRS传输的GPS定位器 C#编写服务器转发程序,客户端显示轨迹
  10. C语言指针进阶(2)