携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第30天,点击查看活动详情
一.什么是图数据库
- 关键词:存储图结构数据,NoSQL
- Neo4j的基本要素(构造单元):结点,关系,属性
二.为什么使用图数据库
最大优势:查询的高性能 举例说明: RDBMS-MySQL VS. Graph DB-Neo4j 在关系型数据库中的社交网络关系数据存储
查询某个用户的朋友的朋友:使用一次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;
一般要做去重操作。可以得知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;
也就是说,在大量复杂的数据条件下,想要查询更深的关系,必须要使用更多的join操作,而大量的 join操作严重影响关系型数据库的性能。
图数据库正好擅长多对多的关系,不用表,列,外键,直接将用户存储为结点,以用户之间的关系来 组织这些结点,查询的时候直接使用图遍历的算法,非常高效。