暂无图片
暂无图片
暂无图片
暂无图片
暂无图片
bytegraph.docx
15
7页
2次
2025-04-13
10墨值下载
字节跳动的分布式图数据库:

一、
ByteGraph2.0
1
、架构
底层存储依赖于一个分布式

存储,也是一计算与存储分离的架构。一

群由三层组成:执行层(

)、内存

层(

)、基于一个持久化

存储的存储层。
行层计算比如合,

关注

据管
管理。每一层都可以独立扩展持久化存储层存储

产生的所有

对儿(图数据

和元数据)。

存储层可以使用


等,在

中作为一个黑盒存在。

使用

查询语言;提供了


优化器,为了增加


,使

算法逻辑片映

例。
同一个分片上的点进行了分组并通过

打包发送给关联的其他

实例进行进一步处理。
BGE
通过监控心跳,维护一个全局
BGS
实例的视图,并且分布式事务使用
2PC
协议
可以在多个机器上部署各自

,相当于一个缓存层,
!"
每个节点一个
##
,通

算法分片到一个

中,该
##
包括点的邻接表(边树)
$
查询写:

析成将其划,询计
划缓存
优化基于则和价的化:
RBO
主要
Gremlin
开源带优规则
针对字节应用的算子下推、自定义的算子优化;
CBO
本之上对每个点的出入度做
,把代价用方程量化表示
%
执行基于
&
:理

数据
##
逻辑找到应数并下
推部分算子,保证网络开销不会天大,最后合并查询结果
2
、数据存储

也采用属性图模式管理图。
%
中的例子,有两个点类型
'

)和
(
)


*+
schema
',-.
,.
)。
$
)内存中分别以
/&
&
缓存点和边
每个和它属性

对儿

是唯
0
和点型,
1
是点性链,将
他们一起存储在

%
)图
%
'&2

32-'4
。访问点属性

使用
56
请求

存储,并将该

对儿放到
/&
中;一旦点的任何属性被更改,都会通过
56
立即刷到
磁盘
(
边以邻接表形式组织,边的

3
起点
10-
起点
1--4
,汇聚成一个


,再把
&
组织成
-
有自己独立的
72)
,多个
&
形成
一个森林,访问不同的邻接表时不需要做并发管理。
(
所示,

%
种类
型点
&8
9&8
&8
,每个都

对儿存储。和

类似
&8
存储物理边数据。
:
)每种类型额节点都有一个上下边界大小用来平衡读写放大问
;
)最开

层:
&
&
&
索引
&
了上
&
作为
&
<
的中
&
&

&
小于会合成一上下
$"""= """
%

亿

的邻
接表
>
)每个边实例由目标点的
ID
、类型和边属性链表组成
?

一个排序由边性的

默认
'5
入的时间戳
6
排序,也可以负载进行配置或者态调整
@
)通过
72)
功能

:更
72)
久化内存
标记
&

周期性将
&
刷盘
$"
)图
(
中,

维护一个全局
&)
表示包
&

,将


$

72)
)'

0
A&

72)
0
/
&
将最后持久化操作的
0
作为查点。
3
edge-tree
什么
一个
paron
(即一个
edge-tree
定义:一个起
<&
一种边类的一跳所有邻

##
$
等)组成
Btree
,每个

都有独立的
72)
,独立维护自增

。如下图所示
是一个

$
一个起点的同一个边

的所有点是一个存储元,即一个

)一存储形式:点的出度
3&
一个阈值
$
)起点
0&<&
起点
&<&
&<&
作为

)同一个起点,相同

且相同方的所有边组成一个
1
%
)多存储形式(

):点的出度阈值时,如上图
$
)所有边均匀切分成

,并分对应

,所有

组成

数据
9


4
of 7
10墨值下载
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文档的来源(墨天轮),文档链接,文档作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。