图数据库是基于图模型的数据库。相比较于关系型数据库,图数据库是真正注重“关系”的数据库。图数据库特点:

  • 支持数据的实时增删查改
  • 保证ACID事务性
  • 提供可视化
  • 高可用、备份恢复

全球知名的数据库流行度排行榜网站DB-Engines数据显示,图数据库的关注度增速远超其他类型的数据库。全球最具权威的IT研究与顾问咨询公司Gartner预测未来全球图处理及图数据库的应用市场都将以每年100%的速度迅猛增长。

知识图谱实战(02):什么是图数据库_数据

数据来源:DB-Engines Ranking per database model category

从图中可知,从2013年1月起至今,图数据库的发展一直属于急速上升的模式。越来越多的人开始关注图数据库。

什么是知识图谱

知识图谱是图数据库最广的应用场景。图数据库具有存储和查询两方面的技术优势。

  • 存储方面:图数据库提供了灵活的设计模式
  • 查询方面:图数据库提供了高效的关联查询

作为图数据库的底层应用,知识图谱可为多种行业提供服务,应用场景涉及电商、金融、法律、医疗、智能家居等多个领域决策系统、推荐系统、智能问答等。

关于知识图谱定义,复旦大学教授肖仰华在其著作《知识图谱》中这么解释:“作为一种知识表示形式,知识图谱是一种大规模语义网络,包括实体、概念及其之间的各种语义关系。

古希腊三杰知识图谱

如下图,柏拉图就是一个实体,他是一个哲学家(概念)

知识图谱实战(02):什么是图数据库_API_02

知识图谱发展与应用

互联网公司知识图谱布局

美团大脑:知识图谱的建模方法及其应用 - 美团技术团队

知识图谱实战(02):什么是图数据库_数据_03

知识图谱已被广泛应用在问答、搜索、推荐等系统,已涉及金融、医疗、电商等商业领域,图谱技术成为“兵家必争”之地。

搜索领域

知识图谱实战(02):什么是图数据库_知识图谱_04

知识图谱实战(02):什么是图数据库_图数据库_05

电商领域

  • 智能客服

通过构建商品类目-商品信息-评论信息-促销优惠信息-支付信息-物流信息等等,这样一张大的图可以帮助我们对用户所提的问题进行解释回答。

知识图谱实战(02):什么是图数据库_数据_06

提供一些设计思路

知识图谱实战(02):什么是图数据库_API_07

O2O领域

  • Query = 乐事黄瓜
  • 实体识别: 乐事{品牌}黄瓜{口味}
  • 用户搜索意图:黄瓜味,实际属于一种薯片,通过知识数据召回更多“薯片”数据
  • 排序: 结合Query和召回的商品进行排序

知识图谱实战(02):什么是图数据库_人工智能_08

图数据库选型比较

各个开源图数据库的活跃程度如图所示

知识图谱实战(02):什么是图数据库_数据_09

摘自:historical trend of graph DBMS popularity

我们对比3个主流开源图数据库:Neo4j、JanusGraph、HugeGraph。

后续我们重点介绍Neo4j的具体使用。

对比点

Neo4j

JanusGraph

HugeGraph

品牌知名度

最高

国际知名度一般,国内知名度高

开源生态

社区版开源,但较多限制,

商业版闭源

开源,兼容Apache Tinkerpop生态,

主要由IBM提供云上服务

开源,兼容Apache Tinkerpop生态,

由百度领头,提供本土化技术与服务

图查询语言

Cypher

Gremlin

Gremlin

适用场景偏向

人工智能、欺诈检测、知识图谱等场景

云服务商、具备技术能力深厚的厂商

互联网大规模数据场景,网络安全、金融风控、广告推荐、知识图谱等

支持数据规模

社区版十亿级

百亿级以上

千亿级以上

大规模数据写入性能

在线导入速度慢,脱机导入速度较快

较慢

在线导入速度快,支持覆盖写

大规模数据查询性能

较快,性能抖动较严重

快,较稳定

功能完善程度

最完善

完善

完善

Feature迭代速度

趋于完善,新功能上线较慢

Fork自Titan,主要提供后端存储的版本兼容适配,基本很少上线新Feature

百度自研,2016年项目启动,开源社区新功能迭代更新快速

开放及可扩展性

无法扩展

可扩展,不过代码复杂导致难度较大,内置支持4种后端存储:HBase、Cassandra、Bigtable、Berkeley

可扩展,插件化机制扩展容易,内置支持6种以上后端存储:RocksDB、Cassandra、HBase、ScyllaDB、MySQL、PostgreSQL等

数据导入工具

支持CSV在线导入,速度在1万/秒内;支持neo4j-import脱机导入,速度在10万/秒级别,只能用于初始化导入

未提供支持

支持在线导入,速度在10万/秒级别,支持格式丰富:CSV、TXT、Json,支持从HDFS导入并兼任其各类压缩格式,支持从传统关系型数据库导入,包括MySQL、Oracle、PostgreSQL、SQL-Server等,支持从消息队列导入

数据备份恢复

支持脱机备份与恢复,需停机状态,

商业版支持在线增量备份与脱机恢复

未提供支持,需要用户手动写程序

支持在线远程备份,支持在线远程恢复

数据增量备份

商业版支持,且支持备份数据加密

不支持

不支持

API与客户端

支持HTTP API,支持Python、Java、Go、C#、JS语言版本的Client

支持HTTP API或WebSocket,支持Java、Python、C#、JS语言版本的Client

支持HTTP RESTful API,原生仅支持Java语言Client;

支持Gremlin API,如果对外暴露Gremlin-Server后可支持Java、Python、C#、JS语言版本的Client

可视化界面

支持,功能丰富

不支持,需要用户集成第三方界面

支持,功能丰富,支持可视化的数据建模、导入、分析等

内置常用图算法

提供安装算法包,提供了丰富的基本图算法,包括路径搜索、相似性、中心性、社区检测、链接预测等类别的算法

不支持

内置提供了基本的图算法,包括路径搜索、协同推荐、中心性、社区发现等类别的算法

支持图计算平台集成

未提供支持

支持Spark GraphX、Giraph等

支持Spark GraphX

基础功能

(属性图的增删该查、持久化存储、元数据、事务、缓存、查询优化、增量更新图)

支持

支持

支持

ACID事务

支持

部分支持,根据后端存储而定,Berkeley后端可完整支持事务,

Cassandra后端支持原子性提交事务,HBase后端仅支持单行原子性理解,可能导致多行数之间据不一致

部分支持,根据后端存储而定,MySQL、PostgreSQL后端可完整支持事务,RocksDB、Cassandra后端支持原子性提交事务,HBase后端仅支持单行原子性;保证最终一致性

Schema约束

商业版支持,包括属性非空、唯一性等约束,同时也支持Schema-Free

支持,同时也支持Schema-Free

支持,包括模式校验、属性非空、唯一性等约束,不允许Schema-Free

属性索引

支持简单索引和复合索引,支持全文索引,依赖第三方Lucene库

支持复合索引和混合索引,复合索引允许精确匹配查询,混合索引支持范围查询、全文检索和空间检索,依赖第三方系统ES或Solr

支持二级索引、范围索引、联合索引、全文索引,允许精确匹配查询、范围查询、全文检索等,均为原生实现不依赖第三方系统,不支持空间检索

图存储类型

本地存储

非本地存储,支持分布式存储

非本地存储,支持分布式存储

图分区

不支持

支持

支持

超级点问题

超级点的邻接边查询慢,十字链表存储结构难以加速部分边的查询

通过Vertex-Centric索引可缓解

通过Vertex-Centric索引可缓解,支持全量获取数据

多图实例

版本4.0支持

支持

支持

主键ID、自定义ID

不支持

不支持主键ID,有限制的支持自定义Long ID,不过会导致数据不一致

支持

顶点或边数据的TTL

不支持

支持,可精细到顶点属性粒度

支持

用户认证与权限控制

商业版支持

支持用户认证

支持用户认证、支持基于用户角色的权限控制

高危查询语句限制

Cypher无关

不支持Gremlin高危语句限制

支持,可限制用户执行高危Gremlin语句,如禁止访问本地文件、退出进程、打开Socket连接等高危操作

运行中语句跟踪

商业版支持,包括:列出正在运行的查询语句、中断正在运行的查询

不支持

同步Gremlin查询不支持跟踪,异步Gremlin查询支持状态跟踪和任务取消

LDAP集成

商业版支持

未提供支持

未提供支持,可扩展插件

高可用HA

商业版支持

未提供支持

商业版支持

监控

商业版支持

支持Metrics监控

支持监控接口