为什么使用图数据库

299 阅读1分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第30天,点击查看活动详情

一.什么是图数据库

  • 关键词:存储图结构数据,NoSQL
  • Neo4j的基本要素(构造单元):结点,关系,属性

1.png

2.png

二.为什么使用图数据库

最大优势:查询的高性能 举例说明: RDBMS-MySQL VS. Graph DB-Neo4j 在关系型数据库中的社交网络关系数据存储

3.png

4.png

查询某个用户的朋友的朋友:使用一次inner join操作 比如查询2的朋友的朋友:

select * from t_user_friend uf1 inner join t_user_friend uf2 on uf1.user_1 = uf2.user_2 where uf1.user_2 = 2;

5.png

一般要做去重操作。可以得知2的朋友1的朋友是4。 如果要查询某个用户的朋友的朋友的朋友,即3度关系

select distinct * from t_user_friend uf1 inner join t_user_friend uf2 on uf1.user_1 = uf2.user_2
inner join t_user_friend uf3 on uf2.user_1 = uf3.user_2  
where uf1.user_2 = 2;

6.png

也就是说,在大量复杂的数据条件下,想要查询更深的关系,必须要使用更多的join操作,而大量的 join操作严重影响关系型数据库的性能。

图数据库正好擅长多对多的关系,不用表,列,外键,直接将用户存储为结点,以用户之间的关系来 组织这些结点,查询的时候直接使用图遍历的算法,非常高效。