Neo4j --- 高效率的图遍历操作

为什么图数据库搜索关系速度会很快?

1 Neo4j存储设计

存储管理层的任务是 将属性图编码表示为在磁盘上存储的数据格式.

虽然不同图数据库的具体存储方案各有差异, 但一般认为具有 "无索引邻接" 特性的图数据库才称为 原生图数据库.

1.1 无索引邻接

对于实现了"无索引邻接"的图数据库中, 每个节点 维护着 指向其 邻接节点 直接引用.

==> 这相当于每个节点都可看作是其邻接节点的一个"局部索引" , 用其查找邻接节点比使用"全局索引"更能节省时间. 

==> 这就意味着图导航操作代价与图大小无关, 仅与图遍历范围成正比. 

2 与非原生图数据库的比较

(1) 非原生图数据库中使用全局索引(B+树实现)关联邻接节点.   

搜索 "张三"认识谁? 复杂度为 O(log n)

搜索 谁认识"张三"? 复杂度为 O(nlog n) 

(2) 图数据库: 将图数据的边表示的关系当作数据库的 "一等公民". 

将 "认识"关系作为双向可导航边进行存储的逻辑图, 在其中查找"张三"认识的人, 只需沿着 张三的"认识"  出边导航;

查找认识"张三"的人, 只需沿着张三的"认识" 入边导航. 

两种操作的代价均为 O(1), 即与图数据的规模无关.

在Neo4j数据库中, 属性图的不同部分是被分开存储在不同文件中的. 正是这种将图结构与图上属性分开存储的策略. 

==> 使得neo4j 具有高效率的图遍历操作.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值