图数据库初探:揭开神秘面纱

发表时间: 2021-12-16 21:50

1 前言

小伙伴们有听说过"图数据库 - Graph Database" 吗?是用来存储图片的数据库?还是用图片存储数据??(误)如果有被这两句话忽悠到的话,那赶紧进入今天的文章吧~

2 节点和关系

与传统关系型数据库不同,图数据库由节点和关系(节点之间的关系)组成。如下图:

节点与关系

2.1 节点

节点代表一个实体。一个节点与关系型数据库中的一条记录类似。上图中的圆形图案都是节点。其中橙色的节点代表电影实体,蓝色的节点代表的是具体的人。

2.2 关系

两个节点之间的联系就是关系。如上述图中就出现了三种【人-电影】的关系:

  • ACTED_IN - 基努·里维斯、劳伦斯·菲什伯恩、凯莉·安摩丝和雨果·维文等参演
  • DIRECTED - 沃卓斯基姐妹执导
  • PRODUCED - 乔·西佛监制

2.3 关系的方向

在Neo4J中,关系是必须有方向的。对一个节点来说,关系可以有两种方向。指向它的关系,和由它指向其他节点的关系。上图中,所有的关系都是由人指向电影。

2.4 标签

标签是节点或者关系的种类(Type)。如上述图中,定义蓝色节点时,他们的Label是Person;定义橙色节点时,他们的Label是Movie。标签的作用是,当你进行查询时只返回特定某些类型的节点。比如只查询Person节点。

标签

2.5 属性

节点与关系都能添加属性。属性是以name-value对的形式添加的。比如,返回上述图中所有Person的name和born属性。属性使图数据库中的信息变得更加丰富,查询时也可以利用到这些属性,如查询在1970年后出生的人。

属性

3 Why图数据库

大家看了对图数据库的大体介绍,可能觉得这个技术很酷炫,那在具体的业务中,图数据库能带来哪些关系型数据库不能带来的价值呢?以下两方面可以作为参考。

  • 高效的查询数据间的关系,尤其是当关系很复杂时
  • 同时也能较便捷的可视化数据间的关系

当你看到以下这样的查询结果时,是不是很赏心悦目呢?电影与人之间的关系可以一目了然。当然,这只是一小部分数据查询的结果。

结果可视化 - 1

当数据变多时,可视化的结果是这样的。。。

结果可视化 - 2

当然没有人会从这样的可视化结果中获取有价值的信息,那图数据库具体应该如何应用在业务中呢?请期待之后的图数据库实战系列,绝对能让你对这个又新又潮的技术有更具体的认识!希望这次的分享对你有帮助,欢迎在评论区留言讨论!