【技术实现步骤摘要】
一种分布式数据库的操作方法、服务器和存储介质
[0001]本申请涉及数据库
,尤其涉及一种分布式数据库的操作方法、服务器和存储介质。
技术介绍
[0002]默克尔B+树是以B+树作为基础进行改进的树结构,其包含索引节点和数据节点两种不同类型的节点,每个节点都有一个对应的标识。其中,索引节点的子节点列表中存放子节点的最小键和哈希值,数据节点的子节点列表中存放键值对形式的数据。每个节点存放的数据会以数据页的形式存放到服务器的磁盘中,也即每个节点都会对应一个页号,该页号为数据存放的数据页的编号。
[0003]目前,在对基于默克尔B+树的数据库进行某些操作时,会给服务器带来很高的数据传输压力。例如,假设一次性往数据库插入N个键值对,则在最不理想的情况下这N个键值对会落入N个数据节点,并且还会落入N
‑
2N个索引节点,这意味着2N
‑
3N个数据页的读写操作,会导致很高的数据传输压力。
技术实现思路
[0004]有鉴于此,本申请实施例提供了一种分布式数据库的操作方法、服务器和存储介质,能够减少对数据库进行操作时给服务器带来的数据传输压力。
[0005]本申请实施例的第一方面提供了一种应用于主服务器的分布式数据库的操作方法,包括:
[0006]获取待添加至分布式数据库的键值对;其中,所述分布式数据库基于默克尔B+树,所述主服务器与至少一个子服务器连接,每个所述子服务器均存储设定数量的数据页,所述数据页用于存储所述默克尔B+树的数据节点的数据; >[0007]根据所述键值对的第一key,确定所述键值对所需插入的所述默克尔B+树中的第一数据节点;
[0008]将所述键值对和所述第一数据节点对应的第一页号发送至所述至少一个子服务器中的第一子服务器,以指示所述第一子服务器根据所述键值对和所述第一页号,对所述第一数据节点执行键值对合并以及数据节点分裂操作,得到数据节点分裂结果,并将所述数据节点分裂结果返回至所述主服务器;其中,所述第一页号为目标数据页的编号,所述目标数据页存储所述第一数据节点的数据,所述第一子服务器为所述至少一个子服务器中存储所述目标数据页的子服务器;
[0009]在接收到所述数据节点分裂结果后,根据所述数据节点分裂结果执行所述默克尔B+树的索引节点分裂操作,以完成将所述键值对添加至所述分布式数据库的操作。
[0010]在本申请实施例中,设置一个主服务器和至少一个子服务器,考虑到默克尔B+树的数据节点存放数据量大的键值对数据,而索引节点只存放数据量很小的索引信息,故将数据节点的数据划分到各个子服务器处进行存储,其中每个子服务器都设有一定数量的数
据页用于存储相应数据节点的数据。当需要往数据库添加键值对时,主服务器会确定键值对所需插入的数据节点,然后将该数据节点对应的页号和键值对发送到该数据节点的数据所在的子服务器。该子服务器在接收到页号和键值对后,会对该数据节点执行键值对合并以及数据节点分裂操作,并将得到的数据节点分裂结果返回至主服务器。最后,主服务器再根据数据节点分裂结果执行索引节点分裂操作,从而完成往数据库添加键值对的操作。通过这样设置,在对数据库进行操作时能够将主服务器的数据传输压力分摊到各个子服务器,从而减少给每个服务器带来的数据传输压力。
[0011]在本申请实施例的一种实现方式中,所述根据所述键值对的第一key,确定所述键值对所需插入的所述默克尔B+树中的第一数据节点,可以包括:
[0012]根据所述第一key和所述默克尔B+树中各个索引节点的最小键,从所述默克尔B+树的根节点出发依次往下分发所述键值对,直至将所述键值对分发至所述默克尔B+树的叶子索引节点;
[0013]根据所述第一key和所述叶子索引节点的最小键,从与所述叶子索引节点连接的所述默克尔B+树的数据节点中确定所述第一数据节点。
[0014]在本申请实施例的一种实现方式中,所述将所述键值对和所述第一数据节点对应的第一页号发送至所述至少一个子服务器中的第一子服务器,可以包括:
[0015]生成携带所述键值对和所述第一页号的gRPC请求;
[0016]将所述gRPC请求发送至所述第一子服务器。
[0017]在本申请实施例的一种实现方式中,所述操作方法还可以包括:
[0018]当接收到针对第二key的数据查询请求时,根据所述第二key确定所需查询的所述默克尔B+树中的第二数据节点;
[0019]根据所述第二数据节点对应的第二页号以及每个所述子服务器存储的数据页对应的页号范围,从所述至少一个子服务器中确定所述第二数据节点的数据所处的第二子服务器;
[0020]向所述第二子服务器发送携带所述第二key和所述第二页号的键值查询请求,以指示所述第二子服务器从所述第二页号对应的数据页中查找与所述第二key对应的目标键值,并将所述目标键值返回至所述主服务器。
[0021]本申请实施例的第二方面提供了一种应用于第一子服务器的分布式数据库的操作方法,包括:
[0022]接收主服务器发送的第一页号和待添加至分布式数据库的键值对;其中,所述分布式数据库基于默克尔B+树,所述主服务器与至少一个子服务器连接,每个所述子服务器均存储设定数量的数据页,所述数据页用于存储所述默克尔B+树的数据节点的数据,所述第一页号为目标数据页的编号,所述目标数据页存储第一数据节点的数据,所述第一子服务器为所述至少一个子服务器中存储所述目标数据页的子服务器,所述第一数据节点为所述主服务器根据所述键值对的第一key确定的,所述键值对所需插入的所述默克尔B+树中的数据节点;
[0023]根据所述键值对和所述第一页号,对所述第一数据节点执行键值对合并以及数据节点分裂操作,得到数据节点分裂结果;
[0024]将所述数据节点分裂结果返回至所述主服务器,以指示所述主服务器在接收到所
述数据节点分裂结果后,根据所述数据节点分裂结果执行所述默克尔B+树的索引节点分裂操作,以完成将所述键值对添加至所述分布式数据库的操作。
[0025]在本申请实施例的一种实现方式中,所述根据所述键值对和所述第一页号,对所述第一数据节点执行键值对合并以及数据节点分裂操作,得到数据节点分裂结果,可以包括:
[0026]根据所述第一页号将所述键值对分发至所述第一数据节点,并对所述第一数据节点执行键值对合并操作;
[0027]若执行键值对合并操作后的所述第一数据节点的数据量超过设定阈值,则将所述第一数据节点分裂为至少二个新数据节点,使得每个所述新数据节点的数据均能写入一个所述数据页;
[0028]为每个所述新数据节点分配对应的页号,并将每个所述新数据节点的数据分别写入各自页号对应的所述数据页;
[0029]根据各个所述新数据节点的键值、哈希值以及对应的页号,确定所述数据节点分裂结果。
[0030]进一步的,所述第一子服务器记录最小可用页号、可用页号范围以及空闲页号列表;其中,所述最小可用页号等本文档来自技高网...
【技术保护点】
【技术特征摘要】
1.一种分布式数据库的操作方法,应用于主服务器,其特征在于,所述操作方法包括:获取待添加至分布式数据库的键值对;其中,所述分布式数据库基于默克尔B+树,所述主服务器与至少一个子服务器连接,每个所述子服务器均存储设定数量的数据页,所述数据页用于存储所述默克尔B+树的数据节点的数据;根据所述键值对的第一key,确定所述键值对所需插入的所述默克尔B+树中的第一数据节点;将所述键值对和所述第一数据节点对应的第一页号发送至所述至少一个子服务器中的第一子服务器,以指示所述第一子服务器根据所述键值对和所述第一页号,对所述第一数据节点执行键值对合并以及数据节点分裂操作,得到数据节点分裂结果,并将所述数据节点分裂结果返回至所述主服务器;其中,所述第一页号为目标数据页的编号,所述目标数据页存储所述第一数据节点的数据,所述第一子服务器为所述至少一个子服务器中存储所述目标数据页的子服务器;在接收到所述数据节点分裂结果后,根据所述数据节点分裂结果执行所述默克尔B+树的索引节点分裂操作,以完成将所述键值对添加至所述分布式数据库的操作。2.如权利要求1所述的操作方法,其特征在于,所述根据所述键值对的第一key,确定所述键值对所需插入的所述默克尔B+树中的第一数据节点,包括:根据所述第一key和所述默克尔B+树中各个索引节点的最小键,从所述默克尔B+树的根节点出发依次往下分发所述键值对,直至将所述键值对分发至所述默克尔B+树的叶子索引节点;根据所述第一key和所述叶子索引节点的最小键,从与所述叶子索引节点连接的所述默克尔B+树的数据节点中确定所述第一数据节点。3.如权利要求1所述的操作方法,其特征在于,所述将所述键值对和所述第一数据节点对应的第一页号发送至所述至少一个子服务器中的第一子服务器,包括:生成携带所述键值对和所述第一页号的gRPC请求;将所述gRPC请求发送至所述第一子服务器。4.如权利要求1至3任一项所述的操作方法,其特征在于,还包括:当接收到针对第二key的数据查询请求时,根据所述第二key确定所需查询的所述默克尔B+树中的第二数据节点;根据所述第二数据节点对应的第二页号以及每个所述子服务器存储的数据页对应的页号范围,从所述至少一个子服务器中确定所述第二数据节点的数据所处的第二子服务器;向所述第二子服务器发送携带所述第二key和所述第二页号的键值查询请求,以指示所述第二子服务器从所述第二页号对应的数据页中查找与所述第二key对应的目标键值,并将所述目标键值返回至所述主服务器。5.一种分布式数据库的操作方法,应用于第一子服务器,其特征在于,所述操作方法包括:接收主服务器发送的第一页号和待添加至分布式数据库的键值对;其中,所述分布式数据库基于默克尔B+树,所述主服务器与至少一个子服务器连接,每个所述子服务器均存储设定数量的数据页,所述数据页用于存储所述默克尔B+树的数据节点的数据,所述第一
页号为目标数据页的编号,所述目标数据页存储第一数据节点的数据,所述第一子服务器为所述至少一个子服务器中存储所述目标数据页的子服务器,所述第一数据节点为所述主服务器根据所述键值对的第一key确定的,所述键值对所需插入的所述默克尔B+树中的数据节点;根据所述键值对和所述第一页号,对所述第...
【专利技术属性】
技术研发人员:邱炜伟,张珂杰,郑柏川,黄方蕾,胡麦芳,
申请(专利权)人:杭州趣链科技有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。