初识图数据库

2020-04-07  本文已影响0人  dohooo

什么是图?

graphDB

在计算机科学中,一个图就是一些顶点的集合,这些顶点通过一系列边结对(连接)。顶点用圆圈表示,边就是这些圆圈之间的连线。顶点之间通过边连接。

图有各种形状和大小。边可以有权重(weight),即每一条边会被分配一个正数或者负数值。考虑一个代表航线的图。各个城市就是顶点,航线就是边。那么边的权重可以是飞行时间,或者机票价格。

graphDB

有了这样一张假设的航线图。从旧金山到莫斯科最便宜的路线是到纽约转机。

边可以是有方向的。在上面提到的例子中,
边是没有方向的。例如,如果小明认识小红,那么小红也就认识小明。相反,有方向的边意味着是单方面的关系。
继续前面航班的例子,从旧金山到阿拉斯加有向边意味着从旧金山到阿拉斯加有航班,但是从阿拉斯加到旧金山没有。

graphDB

什么是图数据库?

  1. 首先,图数据库不是存储图像的数据库,那个是 Image 数据库。图数据库和传统的关系数据库比较,就是图和表的差别。图数据库是用点和边来表达数据之间的关系,是更自然的存储方式,更专注于对象之间的关联。传统的关系型数据库,可能是在记录交易的场景更有优势,在应用发展的某一个阶段更容易让人学习和使用。现在,我们讲社交关系是一种图,我们买东西、交易是一种图,资金是一种图,包括现在的知识也是一种图,图数据库是在知识图谱底层的一个基础设施,它把数据用图、用点和边的方式存储起来。

图数据库的应用有哪些优点?

  1. 使用图(或者网)的方式来表达现实世界的关系很直接、自然,易于建模。比如某人喜欢看某电影,就可以建立一条边连接这个人和这部电影,这条边就叫做“喜欢”边,同时这个人还可以有其它边,比如“朋友”边、“同学”边等,同样这个电影也可以有其它边,比如“导演”边、“主演”边等,这样就构建了自然的关系网。

  2. 图数据库可以很高效的插入大量数据。图数据库面向的应用领域数据量可能都比较大,比如知识图谱、社交关系、风控关系等,总数据量级别一般在亿或十亿以上,有的甚至达到百亿边。mysql不做分表分库的情况下插入百万数据基本就慢到不行,图数据库基本能胜任亿级以上的数据。

  3. 图数据库可以很高效的查询关联数据。传统关系型数据库不擅长做关联查询,特别是多层关联(比如查我的好友的好友有哪些人),因为一般来说都需要做表连接,表连接是一个很昂贵的操作,涉及到大量的IO操作及内存消耗。图数据库对关联查询一般都进行针对性的优化,比如存储模型上、数据结构、查询算法等,防止局部数据的查询引发全部数据的读取。

  4. 图数据库提供了专业的分析算法、工具。不少图数据库还提供了数据批量导入工具,提供了可视化的图显示界面,使得数据的分析结果更加直观展示出来。(这个在很多此类型数据库的视图界面都有体现,后面会拿arangoDB举例)

与传统关系型数据库相比,图数据库有哪些优势?

  1. 可以很自然的表达现实世界中的实体及其关联关系(对应图的顶点及边)

  2. 灵活的数据模型可以适应不断变化的业务需求

  3. 灵活的图查询语言,轻松实现复杂关系网络的分析

  4. 关系型数据库在遍历关系网络并抽取信息的能力非常弱,图数据库则为此而生

  5. 关系型数据库在数据规模庞大时很难做多层关联关系分析(Join操作往往消耗过长时间而失败),图数据库则天然把关联数据连接在一起,无需耗时耗内存的Join操作,可以保持常数级时间复杂度。

ArangoDB

上一篇下一篇

猜你喜欢

热点阅读