第20章 图数据库
第20章 图数据库
一、什么时候用
使用图数据库的理由:
- 比如存储一个好友的关系,如果用mysql存储的话,在查找一个人好友的好友的好友需要经过多次连接操作,这种在复杂的查询的情况下,mysql的查询的效率就非常低。但是用图数据库,就可以直接用一个图来存储好友的关系,根据图找到一个用户的关系网,代价比mysql低得多,适合距离在一定范围的好友,非常时候做用户推荐。
- 即便是MongoDB那样的数据库,在那种关系比较复杂的关系存储的时候,查询的代价非常大。比如查询谁买的东西有哪些很容易,但是反过来查询就很困难。所以选择图数据就很好
二、运行
- 运行可以以单独运行,就像我们的数据库单独作为一个进程跑
- 运行也可以用嵌入,也就是说比如和Tomcat服务器嵌入,一起作为一个进程运行
- 运行也可以集群化部署,但是在一个图比较大的时候,会重复的存储一些边缘的节点。每个机器存储图的一个部分,然后最终构成一个完整的大图
三、存储原理
- 节点的存储占用15byte:第一个位是一个标志位,是否有关联的边是否正在使用,然后(偏移量1)是存储下一个边的ID关系,然后存储下一个属性的id,然后存储labels,最后存储其他的内容
- 边的存储占用34byte,第一个位是一个标志位,存储是否正在使用;之后存储这个关系的起始节点是谁,终止节点是谁、关系的类型;然后存储第一个节点(边的起始节点)的前一个关系是谁,后一个关系是谁,第二个节点的前一个关系是谁,后一个关系是谁,后面就是保留字段
- 点和边单独存储,基本上存储的都是双向链表
四、图数据概论
- 利用边特征敏感,发现一些洗钱或者非法的用户
- 用户分类、异常行为检测
- 图神经网络:GCN、GAT(关注节点的属性)