图数据库作为新兴NoSQL数据库的代表,可以分为四种类型。图数据库应用广泛,无论是互联网行业还是传统的金融、地产、医疗等行业,都可以通过图数据库的应用进一步提升企业效率。数易轩致力于图数据库技术服务,为您介绍图数据库的四个分类。

01 图存储和图处理

通常,我们可以根据图数据库底层存储模式和处理方式两个维度对产品进行分类,所以在了解图数据库分类之前,首先解释一下这两个维度的含义。

1 存储方式维度

原生(Native)图存储:数据存储模式专门为存储和处理图而设计优化,可支持各类图算法的快速遍历。

非原生(Non-Native)图存储:采用关系数据库、面向对象数据库或其它通用数据存储策略存储数据,未专门优化存储方式。

2 处理方式维度

原生图处理:采用免索引邻接(index-free adjacency)机制,通过指针专门保存节点之间的指向关系,每个节点都会维护对相邻节点的引用,表现为相邻节点的微索引,而非全局索引,因此图遍历只和搜索图的数量有关,与整体规模无关,是高性能图遍历、查询和写入的关键。

非原生图处理:不采用免索引邻接机制保存节点之间的关系。

02四类图数据库

基于底层存储模式和处理方式两个维度,我们可以将图数据库产品划分为四个分类。

2.1 存储与处理均为原生

针对图的存储和管理特点,这类图数据库的数据结构经过专门的设计和优化;通常采用免索引邻接机制,逻辑上的关联节点在数据库中存在物理的“指针”指向彼此,从而使数据读写和索引性能显著提升。能充分体现图数据库实时处理关系的优越性,可谓之“真”图数据库。这种图数据库也是主流图数据库厂商所采用的技术,代表产品包括Neo4j、OrientDB、TigerGraph等,应用广泛。

2.2 存储原生处理非原生

此种图数据库通常不是采用属性图数据模型,而是采用RDF三元组或者超图格式存储图数据,主要用于学术研究,面向语义分析、机器学习等专门领域。代表产品有AllegroGraph等。

AllegroGraph采用了文档和图技术相结合的混合数据模型,主要用于处理以RDF为中心的语义网应用,在读写和查询RDF三元组数据时具有较高性能。

2.3 存储非原生处理原生

此类图数据库采用HBase、Bigtable、Cassandra、关系型数据库等方式存储图数据,通过在内存中将数据转换为图结构实现图遍历等算法,通常情况下,其多度查询时的性能劣于存储与处理均原生的数据库,大多数开源图数据库均属于此种类型。由于Hadoop技术的流行,采用了Hbase等分布式存储的图数据库的学习成本相对较低,这是其在开源产品中更为常见的一个原因。同时,由于利用了分布式存储方式,其存储容量比较容易实现水平扩展,但由于其图计算引擎本身并没有实现分布式,因此计算性能仍难以通过资源水平扩展实现提升。代表产品有JanusGraph。

JanusGraph源自Titan图数据库,是一种采用Java开发的开源分布式图数据库,支持ACID和最终一致性,可以用于OLTP。JanusGraph使用HBase、 Cassandra、或者Oracle BDB作为数据存储,支持与Apache TinkerPop进行原生集成,采用Gremlin图查询语言作为其标准语法。其模块化架构使得它可以广泛地与各类存储、索引和客户端技术交互操作,例如与Spark、Giraph、Hadoop等大数据平台ETL集成,通过ElasticSearch、Solr、Lucene进行全文检索,可以通过Cytoscape、Graphexp以及TinkerPop的Gephi插件等工具实现图数据可视化等。

2.4 存储与处理均非原生

此类图数据库通常更类似于在应用层面实现了图算法的应用系统,例如FlockDB,是Twitter自研的一类客户关系管理系统,对于其是否属于真正的图数据库尚有争议。其采用MySQL存储数据,仅支持一度关系查询,不对图结构进行遍历。目前版本更新处于停滞状态,应用范围局限于Twitter。

目前,各种图数据库产品百花齐放,也因为数据存储和处理的方式不同,不同类型的图数据库产品特点迥异。所以,在实际工作和研究中,要结合自身实际情况,选择最适合自己的图数据库。

项目实战:

https://www.yunduoketang.com/article/zhibokechengruanjian3.html

https://www.yunduoketang.com/article/dajianweiketang.html

图数据库的类别有哪些?解读:图数据库分类与原理相关推荐

  1. oracle数据库选件,一句话为你解读Oracle数据库选件

    数据库对企业IT系统的重要性不必多言,自面世以来,Oracle数据库就一直作为行业的技术领跑者,携手全球各行各业的客户克服了一个又一个数据挑战.很多IT管理者认同Oracle数据库的领先地位,甚至可以 ...

  2. Neo4j CEO Emil Eifrem 解读图数据平台引领数据库未来十年的发展

    Neo4j CEO Emil Eifrem 解读图数据平台引领数据库未来十年的发展 Neo4j CEO Emil Eifrem 解读图数据平台引领数据库未来十年的发展 Here's the table ...

  3. 计算机三级数据库知识点汇总附思维导图

    目录 第一章:数据库应用系统开发方法 第二章:需求分析 第三章:数据库结构设计 第四章:数据库应用系统功能设计与实施 第五章:UML与数据库应用系统 第六章:高级数据查询 第七章:数据库及数据库对象 ...

  4. 解惑图数据库!你知道什么是图数据库吗?

    简介 为什么需要图数据库? 设想一个场景:在金融的反欺诈场景下,当一个用户小李 请求订单,我们可以设定一个规则: 获取该用户的身份证号.注册手机号.银行预留手机号.银行卡号.紧急联系人等信息 通过这些 ...

  5. PowerDesigner一键导入数据库所有表并画数据模型图

    目录 一.首先导出目标数据库库所有表结构,获取.sql脚本 二.选择PowerDesigner-文件-反向工程-Database 三.选择Mysql 四.选择数据库脚本 五.导入成功 六.使用工具栏进 ...

  6. 数据库设计之概念结构设计---------E-R图详解

    0.试述采用E-R方法进行数据库概念设计的过程. 答:采用E-R方法进行数据库概念设计,可以分成3步进行:首先设计局部E-R模式,然后把各局部E-R模式综合成一个全局的E-R模式,最后对全局E-R模式 ...

  7. 数据库设计之概念结构设计---------E-R图详解(流程和关系)

    0.试述采用E-R方法进行数据库概念设计的过程. 答:采用E-R方法进行数据库概念设计,可以分成3步进行:首先设计局部E-R模式,然后把各局部E-R模式综合成一个全局的E-R模式,最后对全局E-R模式 ...

  8. 数据库设计之概念结构设计---------E-R图详解 (各种各样的实例)

    http://blog.csdn.net/zxq1138634642/article/details/9121363 0.试述采用E-R方法进行数据库概念设计的过程. 答:采用E-R方法进行数据库概念 ...

  9. 当前数据库普遍使用wait-for graph等待图来进行死锁检测

    当前数据库普遍使用wait-for graph等待图来进行死锁检测 较超时机制,这是一种更主动的死锁检测方式,innodb引擎也采用wait-for graph SQL Server也使用wait-f ...

最新文章

  1. android view xml,如何将View添加到XML布局android
  2. C++中父类的虚函数必需要实现吗?
  3. 不同协议的数据包如何处理_【项目申报专员】如何处理各种不同的项目申报工作呢...
  4. 哈佛大学单细胞课程|笔记汇总 (三)
  5. 为什么我不推荐你盲目追求微服务?迟早要吃亏!
  6. spin lock自旋锁
  7. 【webpack】webpack 常用插件集合
  8. 烂泥:Tomcat免安装版与JRE免安装版集成
  9. android 混淆移除log,关于安卓代码混淆和Release版本中去除Debug信息
  10. java.lang.classnotfo_java.lang.ClassNotFoundException
  11. Nginx与tomcat集成
  12. 计算机能力挑战赛_全国高校计算机能力挑战赛(基于tensorflow+python+opencv)!
  13. 【基于遥感解译与GIS技术】土地利用图、植被类型图、植被覆盖度图、土壤侵蚀制图
  14. 怎样用Python识别条形码?
  15. FFT+NNT 深入学习记录 秦皇岛camp 乒乓球
  16. python百度贴吧发帖签到_【Python】某度贴吧签到脚本[云函数专用版](白嫖实现每日自动签到)...
  17. 企业自建私有云-openstack-介绍
  18. ubuntu 串口调试助手
  19. 所以小学把基础的数理逻辑和ZFC集论,基数序数超滤模型论学好,大有裨益…...
  20. 我本可以忍受黑暗,如果我不曾见过太阳。

热门文章

  1. python获取邮件并转为pdf
  2. 搜索框实现模糊查询方法 - js
  3. 思科瑞科创板上市破发:年营收2.22亿 公司市值54亿
  4. panada indexing,selection,assigning
  5. 从vue项目简单了解什么是SSR
  6. tkinter Canvas 实现 鼠标手绘画板 功能
  7. 单人登录-踢下线功能实现
  8. AI-041: Python深度学习3 - 三个Karas实例-3
  9. yml配置文件的文件格式简单介绍
  10. HALCON day1 C# 打开相机