当前位置: 首页 > news >正文

3-知识图谱-知识图谱的存储与查询

在这里插入图片描述

基于关系型数据库的知识图谱存储

在这里插入图片描述

基于原生图的知识图谱存储

关系型数据库的局限性

因为关系数据库,不善于处理“关系”

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

图数据库:

Relations Are First-class citizens
在关系数据库中,关系是隐藏表达的。通过外键关联实体,表达两个实体间存在关系。
图数据库,关系是显性描述。 属性,关系,实体是平等的 ,不需要强制关联
在这里插入图片描述

图建模的好处
  1. 自然表达
  2. 易于扩展:
  3. 复杂关联表达:易于表达复杂关联关系的查询
  4. 多跳优化

在这里插入图片描述
知识图谱可以将多源,多领域间的相互关系进行关联,实现跨领域的建模和查询
在这里插入图片描述

什么时候使用图数据库

在这里插入图片描述

原生图数据库的原理【免索引邻接】

什么是免索引邻接(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。
    • 无需在全局索引中查找 BC 的位置。

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
    在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

相关文章:

  • [DeepSeek]二、大模型
  • 元脑服务器可用于DeepSeek部署
  • Java——多态
  • 【Leetcode 每日一题】2595. 奇偶位数
  • 阿里云ECS命名规则解析与规格选型实战指南
  • MySQL中 undolog和redolog区别
  • 《跟李沐学 AI》AlexNet论文逐段精读学习心得 | PyTorch 深度学习实战
  • RabbitMQ 消息队列
  • 蓝桥杯(B组)-每日一题(1093字符逆序)
  • Python 获取当前目录及上级目录
  • 类型系统下的语言分类与类型系统基础
  • 流行多模型对比分析
  • CPU与GPU之区别(The Difference between CPU and GPU)
  • 实战:功率分析仪3u3v测三相原理及接线
  • 金仓KDTS迁移工具启动报错kdts-app-console is already start, Please close it.
  • 【深度学习】手写数字识别任务
  • python读写各种格式文件
  • 中通云的容器化之旅:从单集群到多集群的演进
  • 第2章 深入理解Thread构造函数
  • 苍穹外卖知识点
  • 中国公民在日本被机动车碾压身亡,我使馆发布提醒
  • 比熬夜更伤肝的事,你可能每天都在做
  • 韩国下届大选执政党初选4进2结果揭晓,金文洙、韩东勋胜出
  • 10台核电新机组获核准,上海核电厂商独揽超500亿元订单
  • AI观察|算力饥渴与泡沫
  • 北汽蓝谷一季度净亏损9.5亿元,拟定增募资不超60亿元