基于关系型数据库的知识图谱存储
基于原生图的知识图谱存储
关系型数据库的局限性
因为关系数据库,不善于处理“关系”
图数据库:
Relations Are First-class citizens
在关系数据库中,关系是隐藏表达的。通过外键关联实体,表达两个实体间存在关系。
图数据库,关系是显性描述。 属性,关系,实体是平等的 ,不需要强制关联
图建模的好处
- 自然表达
- 易于扩展:
- 复杂关联表达:易于表达复杂关联关系的查询
- 多跳优化
知识图谱可以将多源,多领域间的相互关系进行关联,实现跨领域的建模和查询
什么时候使用图数据库
原生图数据库的原理【免索引邻接】
什么是免索引邻接(Index-Free Adjacency)?
1. 基础概念:邻接与索引
- 邻接关系:在图结构中(比如社交网络、知识图谱),节点(如用户、文章)之间的连接称为边(如好友关系、引用关系)。邻接关系描述的是“节点直接相连”这一特性。
- 索引的作用:在传统数据库(如关系型数据库)中,要高效查询数据,通常需要建立索引(如 B 树、哈希表)。索引像一本目录,能快速定位数据的位置,但维护索引需要额外的时间和空间成本。
2. 免索引邻接的核心思想
图数据库(如 Neo4j)的免索引邻接通过以下方式优化:
- 直接物理指针:每个节点在存储时,直接保存相邻节点的物理存储地址(如磁盘位置或内存指针)。
- 无需二次查找:当需要遍历相邻节点时,直接通过指针跳转到目标节点,无需通过索引检索。
例如:
- 节点 A 存储了其好友节点 B 和 C 的物理地址。
- 当查询 A 的好友时,直接读取 B 和 C 的地址,无需通过索引表查询。
4. 技术实现(以图数据库为例)
- 节点结构:
节点 A: - 属性:name = "Alice" - 邻接边列表: → 边1:指向节点 B(物理地址 0x1234) → 边2:指向节点 C(物理地址 0x5678)
- 遍历过程:
- 从节点 A 出发,直接通过边中的物理地址访问节点 B 和 C。
- 无需在全局索引中查找
B
和C
的位置。
5. 优势与场景
- 优势:
- 高效多跳查询:例如“朋友的朋友的朋友”,时间复杂度接近 O(n)(n 是路径长度),而关系型数据库可能需要 O(n log m)(m 是数据量)。
- 减少 I/O 操作:直接通过指针访问相邻节点,避免随机磁盘寻址。
- 适用场景:
- 社交网络(查询人际关系)。
- 推荐系统(实时遍历用户-商品关联)。
- 欺诈检测(分析复杂资金流转路径)。
6. 对比:免索引邻接 vs. 传统索引
场景 | 传统数据库(使用索引) | 图数据库(免索引邻接) |
---|---|---|
查询直接好友 | 2 次索引查询(用户→边→用户) | 直接访问相邻节点(无索引) |
查询“三度好友” | 指数级增长的索引查询次数 | 线性遍历,性能稳定 |
数据写入 | 需维护索引,写入成本高 | 仅更新指针,写入高效 |
7. 总结
- 免索引邻接的本质:用空间换时间,通过预存物理地址,将“查找关系”转化为“直接跳转”。
- 为什么重要:它是图数据库处理复杂关联查询时性能远超传统数据库的核心技术之一。
原生图数据的物理存储实现
节点存储
关系存储文件
目的: 为了快速检索几点的上一个关系边,下一个关系边。
图遍历的查询的物理实现
属性数据的存储处理:内联和动态存储
https://neo4j.com/graph-databases-book
总结
- 图结构和查询分析:属性图
- 注重知识的建模,描述结构复杂的关联关系,知识推理: RDF Resource Definition Framework