|探索图数据库在数据资产可视化中的应用( 三 )


本文插图

图数据库对于可以在不同场景下发挥作用 , 从企业应用角度 , 业务用户使用角度 , 数据开发者应用角度都发挥着作用 。
图数据库产品
|探索图数据库在数据资产可视化中的应用
本文插图

依据db-engines.com网站对Graph DBMS的排名来看 , 目前主流的图数据库有:Neo4j , Janusgraph , Dgraph , ArangoDB , OrientDB , TigerGraph等 。 下面我们来介绍一下目前图数据库的分类都有哪些 。
图数据库分类

  • 原生数据库:
代表数据库为neo4j、orientdb 。 其原生体现在查点到边或者边到点的时候 , 不需要走原来关系型数据库的B+索引 , 节点本身就有指向索引 , 类似于链表的指针概念
  • 直接在关系型数据库之上构建的图数据库:
代表为AgensGraph , 以及微软的GraphView 。 SparkGraphX也可以基于关系型存储结构进行转化成图结构 , 然后完成图运算
  • 使用外置nosql存储的数据库:
以Titan/JanusGraph为代表 , 以及使用外置的索引生成工具如Elasticsearch , OLAP支持外接Spark等工具 , 以及Cassandra/Hbase等nosql数据库 。
  • 在图计算上基于batch进行优化的新一代图数据库:
如DGraph 。 DGraph的存储结构与cayley同样借鉴了google的论文 , 将每个节点的属性也作为一个节点与主节点产生联系 , 这样更有益于基于batch来设计运算方法 。
Neo4j
Neo4j图数据库 , 它是一个高性能的NOSQL图形数据库 , 它将结构化数据存储在网络上而不是表中 。 它是一个嵌入式的、基于磁盘的、具备完全的事务特性的Java持久化引擎 , 但是它将结构化数据存储在网络(从数学角度叫做图)上而不是表中 。
优势:
可集群 , 使用读/写负载平衡器将请求直接到一个集群
支持事物、锁、页面缓存
遍历下:建立索引通常成本O(log(n)) , 但Neo4J的遍历一个关系的复杂度趋向于O(1)
支持ACID事务 , 它确保实时显示数据的合法性和准确性 。
Cypher语法友好
劣势:
Neo4j没法存储巨大的一张关系图, 因为他不支持分片
因为index-free adjacency , 遍历快但是计算随机两个节点最短路径性能不佳
索引:
index-free adjacency , 擅长遍历图 , 以及计算不存在大量关系的节点的图
ArangoDB
ArangoDB图数据库 , 它是一个原生多模型数据库 , 兼有key/value键/值对、graph图和document文档数据模型 , 提供了涵盖三种数据模型的统一的数据库查询语言 , 并允许在单个查询中混合使用三种模型 。 基于其本地集成多模型特性 , 您可以搭建高性能程序 , 并且这三种数据模型均支持水平扩展 。
优势:
存储空间占用下:采用了元数据模式存储数据;可通过内存提速 , CPU占用率低
支持主从集群
Multi-collection transactions
扩展性好:JavaScript
用JavaScript和ArangoDB构建应用 , Foxx微服务运行在DB内部 , 可快速访问数据 。
AQL功能很强大 , 配置编程远方便于、灵活于Neo4J、OrientDB
Neo4J的Cypher也比较强大 , 清晰 , 但是不利于调整 , 灵活性不够
OrientDB , 类SQL , 查询繁琐 , 调整不便利 , 内置SQL函数接口也不方便
劣势:
插入性能稍低
索引:
自动索引_key属性 , _from和_to属性;保证V和E的查找速度
OrientDB
OrientDB是指兼具文档数据库的灵活性和图形数据库管理链接能力的可深层次扩展的文档-图形数据库管理系统 。
优势:
安装简单 , 功能丰富
OrientDB是兼具文档数据库的灵活性和图形数据库管理链接能力的可深层次扩展的文档-图形数据库管理系统(NoSQL数据库)


推荐阅读