数据处理方法、装置、电子设备及计算机可读存储介质与流程

文档序号:29788890发布日期:2022-04-23 16:25阅读:99来源:国知局
数据处理方法、装置、电子设备及计算机可读存储介质与流程

1.本技术涉及计算机技术领域,具体而言,本技术涉及一种数据处理方法、装置、电子设备及计算机可读存储介质。


背景技术:

2.分布式数据库由于数据量大小的变化,以及数据访问热点的变化,可能需要在线扩容(例如在线添加节点)、在线缩容(例如在线删除节点)、或者在线负载均衡(例如分布式集群内部数据重新分布),这些操作都涉及到将分布式数据库内部的数据从一个内存数据库(memory database,mdb)节点迁移到另一个内存数据库节点。
3.目前,分布式数据库中节点(即内存数据库节点)a的数据迁移到节点b时,需要停止客户端对a节点中被迁移数据的修改,以保证两节点迁移数据的一致性,即b节点收到的数据与a节点迁移的数据是一致的,可见,现有方案数据迁移过程中,需要停止客户端对正在迁移的数据的修改,影响了客户端业务的正常进行。


技术实现要素:

4.本公开的第一方面提供了一种数据处理方法,包括:
5.接收管理节点发送的数据迁移信息,基于数据迁移信息生成第一事务标识;
6.接收到数据修改请求时,若第一节点所属分布式数据库处于数据迁移状态,则对第一节点中的待迁移数据执行数据修改请求所指示的操作;其中,分布式数据库的状态是基于第一事务标识确定的;
7.将数据修改请求发送至分布式数据库中的第二节点,以便第二节点对待迁移数据执行数据修改请求所指示的操作。
8.可选的,接收到数据修改请求时之后,方法还包括:
9.判断第一事务标识是否大于预设阈值;
10.若第一事务标识大于预设阈值,且数据修改请求中携带的第二事务标识大于第一事务标识,则确定分布式数据库处于数据迁移状态。
11.可选的,判断第一事务标识是否大于预设阈值之后,方法还包括:
12.若第一事务标识不大于预设阈值,则确定分布式数据库中不存在数据迁移事务,对第一节点中的待迁移数据执行数据修改请求所指示的操作;
13.若第一事务标识大于预设阈值,且数据修改请求中携带的第二事务标识小于第一事务标识,则确定分布式数据库中存在数据迁移事务但未进入数据迁移状态,对第一节点中的待迁移数据执行数据修改请求所指示的操作。
14.可选的,接收到数据修改请求包括:
15.接收到分布式数据库中第三节点发送的数据修改请求以及分布式数据库状态信息;
16.方法还包括:
17.基于分布式数据库状态信息,确定分布式数据库处于数据迁移状态。
18.可选的,数据修改请求包括数据删除请求,则第二节点对待迁移数据执行数据修改请求所指示的操作,包括:
19.第二节点执行如下操作:
20.基于数据删除请求中的第一索引搜索第一索引所对应的数据;
21.若搜索到第一索引所对应的数据,则删除第一索引所对应的数据;
22.若未搜索到第一索引所对应的数据,则确定第一索引在第二节点中对应的数据位置,针对数据位置设置占位标识,以便于第一节点将第一索引所对应的数据迁移至数据位置后,第二节点基于占位标识删除第一索引所对应的数据。
23.可选的,数据修改请求包括数据新增请求,则第二节点对待迁移数据执行数据修改请求所指示的操作,包括:
24.第二节点执行如下操作:
25.若第二节点中不存在数据修改请求中的第二索引所对应的数据,则新增第二索引所对应的数据;
26.若第二节点中存在数据修改请求中的第二索引所对应的数据,检测第二索引所对应的数据位置是否设置有占位标识;
27.若未设置有占位标识,则在数据位置插入第二索引所对应的数据;
28.若设置有占位标识,则在数据位置插入第二索引所对应的数据,且向第一节点发送取消迁移第二索引所对应的数据的提示信息删除该占位标识。
29.可选的,数据迁移信息中包括待迁移数据的标识以及第二节点的标识,则接收到数据修改请求之前,方法还包括:
30.基于待迁移数据的标识,确定第一节点中存储的待迁移数据;
31.基于数据迁移指示信息中第二节点的标识,确定数据迁移的目的地节点为第二节点;
32.接收到管理节点发送的数据迁移指令时,基于数据迁移指令将待迁移数据由第一节点迁移至第二节点。
33.可选的,基于数据迁移指令将待迁移数据由第一节点迁移至第二节点之后,方法还包括:
34.修改第一事务标识;
35.若修改后的第一事务标识不大于预设阈值,则确定分布式数据库中处于数据迁移完成状态;
36.若确定不存在客户端访问待迁移数据在第一节点中所对应的原始数据,则删除原始数据。
37.本公开的第二方面提供了一种数据处理装置,包括:
38.第一接收模块,用于接收管理节点发送的数据迁移信息,基于数据迁移信息生成第一事务标识;
39.第二接收模块,用于接收到数据修改请求时,若第一节点所属分布式数据库处于数据迁移状态,则对第一节点中的待迁移数据执行数据修改请求所指示的操作;其中,分布式数据库的状态是基于第一事务标识确定的;
40.发送模块,用于将数据修改请求发送至分布式数据库中的第二节点,以便第二节点对待迁移数据执行数据修改请求所指示的操作。
41.可选的,该装置还包括:
42.判断模块,用于判断第一事务标识是否大于预设阈值;
43.第一确定模块,用于若第一事务标识大于预设阈值,且数据修改请求中携带的第二事务标识大于第一事务标识,则确定分布式数据库处于数据迁移状态。
44.可选的,该装置还包括:
45.第二确定模块,用于若第一事务标识不大于预设阈值,则确定分布式数据库中不存在数据迁移事务,对第一节点中的待迁移数据执行数据修改请求所指示的操作;
46.第三确定模块,用于若第一事务标识大于预设阈值,且数据修改请求中携带的第二事务标识小于第一事务标识,则确定分布式数据库中存在数据迁移事务但未进入数据迁移状态,对第一节点中的待迁移数据执行数据修改请求所指示的操作。
47.可选的,第二接收模块,具体用于:
48.接收到分布式数据库中第三节点发送的数据修改请求以及分布式数据库状态信息;
49.该装置还包括第四确定模块,用于基于分布式数据库状态信息,确定分布式数据库处于数据迁移状态。
50.可选的,数据修改请求包括数据删除请求,则第二节点对待迁移数据执行数据修改请求所指示的操作,包括:
51.第二节点执行如下操作:
52.基于数据删除请求中的第一索引搜索第一索引所对应的数据;
53.若搜索到第一索引所对应的数据,则删除第一索引所对应的数据;
54.若未搜索到第一索引所对应的数据,则确定第一索引在第二节点中对应的数据位置,针对数据位置设置占位标识,以便于第一节点将第一索引所对应的数据迁移至数据位置后,第二节点基于占位标识删除第一索引所对应的数据。
55.可选的,数据修改请求包括数据新增请求,则第二节点对待迁移数据执行数据修改请求所指示的操作,包括:
56.第二节点执行如下操作:
57.若第二节点中不存在数据修改请求中的第二索引所对应的数据,则新增第二索引所对应的数据;
58.若第二节点中存在数据修改请求中的第二索引所对应的数据,检测第二索引所对应的数据位置是否设置有占位标识;
59.若设置有占位标识,则删除该占位标识。
60.可选的,数据迁移信息中包括待迁移数据的标识以及第二节点的标识;该装置还包括:
61.第五确定模块,用于基于待迁移数据的标识,确定第一节点中存储的待迁移数据;
62.第六确定模块,用于基于数据迁移指示信息中第二节点的标识,确定数据迁移的目的地节点为第二节点;
63.数据迁移模块,用于接收到管理节点发送的数据迁移指令时,基于数据迁移指令
将待迁移数据由第一节点迁移至第二节点。
64.可选的,该装置还包括:
65.修改模块,用于修改第一事务标识;
66.第七确定模块,用于若修改后的第一事务标识不大于预设阈值,则确定分布式数据库中处于数据迁移完成状态;
67.第八确定模块,用于若确定不存在客户端访问待迁移数据在第一节点中所对应的原始数据,则删除原始数据。
68.本技术实施例的第三方面,提供了一种电子设备,该电子设备包括存储器和处理器;存储器中存储有计算机程序;处理器用于在运行计算机程序时执行第一方面及其可选的实施方式中任一项的方法。
69.本技术实施例的第四方面,提供了一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该程序被处理器执行时实现第一方面及其可选的实施方式中任一项的方法。
70.本技术提供的技术方案带来的有益效果是:
71.在本实施例中,接收到管理节点发送的数据迁移信息后,可以基于该数据迁移信息生成第一事务标识,则在接收到数据修改请求时,若第一节点所属分布式数据库处于数据迁移状态,即数据修改请求是在分布式数据库处于数据迁移状态时收到的,则可以对第一节点中的待迁移数据执行数据修改请求所指示的操作;其中,分布式数据库的状态是基于第一事务标识确定的,同时,可以将数据修改请求发送至分布式数据库中的第二节点,以便第二节点对待迁移数据执行数据修改请求所指示的操作,这样第一节点和第二节点均可以对待迁移数据执行数据修改请求所指示的操作,数据迁移过程中即使存在数据修改第一节点和第二节点的待迁移数据也是一致的,可见,本技术可以保证数据迁移过程中两节点的待迁移数据的一致性,因此在数据迁移过程中也可以正常处理客户端业务。
附图说明
72.为了更清楚地说明本技术实施例中的技术方案,下面将对本技术实施例描述中所需要使用的附图作简单地介绍。
73.图1为本技术分布式数据中各节点的连接示意图;
74.图2为本技术数据处理方法的一种流程示意图;
75.图3为本技术数据处理方法的另一种流程示意图;
76.图4为本技术数据处理装置的结构示意图;
77.图5为本技术电子设备的结构示意图。
具体实施方式
78.下面详细描述本技术的实施例,实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本技术,而不能解释为对本发明的限制。
79.本技术领域技术人员可以理解,除非特意声明,这里使用的单数形式“一”、“一个”、和“该”也可包括复数形式。应该进一步理解的是,本技术的说明书中使用的措辞“包
括”是指存在特征、整数、步骤、操作、元件和/或组件,但是并不排除存在或添加一个或多个其他特征、整数、步骤、操作、元件、组件和/或它们的组。应该理解,当我们称元件被“连接”或“耦接”到另一元件时,它可以直接连接或耦接到其他元件,或者也可以存在中间元件。此外,这里使用的“连接”或“耦接”可以包括无线连接或无线耦接。这里使用的措辞“和/或”包括一个或更多个相关联的列出项的全部或任一单元和全部组合。
80.为使本技术的目的、技术方案和优点更加清楚,下面将结合附图对本技术实施方式作进一步地详细描述。
81.首先对本技术涉及的几个名词进行介绍和解释:
82.本技术实施例中的管理节点、第一节点、第二节点以及第三节点等均指的是分布式数据库中的mdb节点;管理节点可以管理和监测分布式数据库中其他各节点,管理节点通过向各节点下发指令可以控制各节点执行相应的操作。
83.事务标识可以唯一标识一个事务,分布式数据库中的事务标识是递增的,即某一时刻生成的事务的标识大于该时刻之前时刻所生成的事务的标识。
84.管理节点与各mdb节点的一种可能的连接关系如图1所示,管理节点采样一主多备的高可用集群,存在一个主的管理节点和多个备用的管理节点,管理节点可以监控各mdb节点,mdb节点可以向管理节点上报数据。
85.参照图2,本技术提供了一种数据处理方法,该方法由分布式数据库中的第一节点执行,第一节点指的是进行数据迁移的源节点,数据迁移是将第一节点中的待迁移数据迁移到第二节点,该方法包括:
86.步骤s201、接收管理节点发送的数据迁移信息,基于数据迁移信息生成第一事务标识;
87.管理节点确定数据迁移方案,基于所确定的数据迁移方案生成相应的数据迁移信息,管理节点向各节点均发送数据迁移信息,以便于各节点(包括第一节点)基于该数据迁移信息可以生成各自的第一事务标识。
88.在本实施例,各节点生成第一事务标识后各节点都可以向客户端提供服务,即各节点均可以接收或处理客户端请求,例如可以接收客户端的数据修改请求。各节点生成的第一事务标识可以不同。
89.步骤s202、接收到数据修改请求时,若第一节点所属分布式数据库处于数据迁移状态,则对第一节点中的待迁移数据执行数据修改请求所指示的操作;其中,分布式数据库的状态是基于第一事务标识确定的;
90.如上述,各节点均生成了第一事务标识,各节点均可以向客户端提供服务,则:
91.第一节点接收到数据修改请求包括两种可能的情况:第一种可能的情况是第一节点接收到客户端发送的数据修改请求,即客户端直接访问第一节点,这种情况下分布式数据库的状态是由第一节点基于第一节点所生成的第一事务标识确定的;第二种可能的情况是:第一节点接收到数据修改请求是第一节点接收到其他节点发送的数据修改请求,即客户端访问的是其他节点,其他节点可以将该数据修改请求转发给第一节点,这种情况下分布式数据库的状态是由其他节点基于自己所生成的第一事务标识确定的。
92.针对上述两种情况下收到的数据修改请求,在第一节点确定所属分布式数据库处于数据迁移状态时(若客户端访问的是其他节点,则可以是其他节点确定分布式数据库处
于数据迁移状态后再告知第一节点),则表示数据修改请求为分布式数据处于迁移状态时收到的请求,第一节点可以对第一节点中的待迁移数据执行该数据修改请求所指示的操作。
93.其中,数据修改请求具体包括:数据删除请求、数据新增请求以及数据更新请求,数据更新请求实际上可以拆分为数据删除和数据新增,则各节点针对数据更新请求的处理方式可以参照下述针对数据删除请求和数据新增请求的处理方式。
94.步骤s203、将数据修改请求发送至分布式数据库中的第二节点,以便第二节点对待迁移数据执行数据修改请求所指示的操作。
95.在本实施例中,第一节点可以将数据修改请求发送给分布式数据库中的第二节点,第二节点指的是分布式数据库中进行数据迁移的目的地节点,这样第二节点也可以对该待迁移数据也执行数据修改请求所指示的操作。
96.在本实施例中,第一节点和第二节点均需要对数据修改请求进行处理,即需要对第一节点和第二进行双写,双写是串行的,先由第一节点处理数据修改请求完成后,第一节点发送给第二节点继续处理数据修改请求,对数据修改请求的处理是在同一个事务内部进行的。
97.在本实施例中,接收到管理节点发送的数据迁移信息后,可以基于该数据迁移信息生成第一事务标识,则在接收到数据修改请求时,若第一节点所属分布式数据库处于数据迁移状态,即数据修改请求是在分布式数据库处于数据迁移状态时收到的,则可以对第一节点中的待迁移数据执行数据修改请求所指示的操作;其中,分布式数据库的状态是基于第一事务标识确定的,同时,可以将数据修改请求发送至分布式数据库中的第二节点,以便第二节点对待迁移数据执行数据修改请求所指示的操作,这样第一节点和第二节点均可以对待迁移数据执行数据修改请求所指示的操作,数据迁移过程中即使存在数据修改第一节点和第二节点的待迁移数据也是一致的,可见,本技术可以保证数据迁移过程中两节点的待迁移数据的一致性,因此在数据迁移过程中也可以正常处理客户端业务。
98.进一步的,数据迁移信息中具体包括:
99.数据迁移的源节点(即第一节点)的标识、数据迁移的目的地节点(即第二节点)的标识、第一节点中待迁移数据的信息,待迁移数据的信息具体为:待迁移数据的表名、列名以及索引信息。
100.数据的索引能唯一标识一条数据,其中,如果第一节点中存储的数据采用hash分区,索引信息指的是索引字段的hash值;如果是range分区,索引信息指的是索引字段的起始值和结束值。
101.需要说明的是,针对上述第一节点直接接收客户端发送的数据修改请求的情况,则:
102.步骤s203接收到数据修改请求时之后,该方法还包括:
103.判断第一事务标识是否大于预设阈值;
104.若第一事务标识大于预设阈值,且数据修改请求中携带的第二事务标识大于第一事务标识,则确定分布式数据库处于数据迁移状态。
105.第一节点可以判断第一事务标识是否大于预设阈值,若第一事务标识大于预设阈值时,第一节点可以确定分布式数据库中存在数据迁移事务,若第一事务标识不大于预设
阈值,则第一节点可以确定分布式数据库中不存在数据迁移事务;预设阈值可以设置为0。需要说明的是,各节点收到数据迁移信息后所生成的第一事务标识均是大于预设阈值的,这样各节点均可以向客户端提供服务,
106.若第一事务标识大于预设阈值,且第一节点基于迁移标识确定数据迁移未完成后,第一节点可以比较第一事务标识和数据修改请求中的第二事务标识进一步判断分布式数据库是否处于迁移状态;
107.在本实施例中,第一节点确定数据迁移是否完成可以基于迁移标识确定,迁移标识是可变的,可以基于管理节点发送的指令相应的改变迁移标识,若迁移标识为预设对象,例如迁移标识为ture,则确定数据迁移已完成,迁移标识不是预设对象,则确定数据迁移未完成(例如迁移标识为false)。
108.情况a:若第二事务标识大于第一事务标识,则表示第二事务标识所指示的事务是第一事务标识所指示的事务之后的事务,即数据修改请求是数据迁移事务之后收到的事务,则可以确定分布式数据库处于数据迁移状态,数据修改请求为分布式数据库处于迁移状态时收到的请求。这种情况下,需要对第一节点和第二节点进行双写,第一节点和第二节点均需要对数据修改请求进行处理。
109.可选的,判断第一事务标识是否大于预设阈值之后,该方法还包括:
110.若第一事务标识不大于预设阈值,则确定分布式数据库中不存在数据迁移事务,对第一节点中的待迁移数据执行数据修改请求所指示的操作;
111.若第一事务标识大于预设阈值,且数据修改请求中携带的第二事务标识小于第一事务标识,则确定分布式数据库中存在数据迁移事务但未进入数据迁移状态,对第一节点中的待迁移数据执行数据修改请求所指示的操作。
112.情况b:若第一事务标识不大于预设阈值,则由第一节点对第一节点中的待迁移数据执行数据修改请求所指示的操作即可。
113.情况c:若第一事务标识大于预设阈值,且迁移标识指示数据迁移未完成,则当数据修改请求中携带的第二事务标识小于第一事务标识时,表示第二事务标识所指示的事务是第一事务标识所指示的事务之前的事务,即数据迁移事务需要在数据修改请求处理完之后再处理,则第一节点可以确定分布式数据库中存在数据迁移事务但未进入数据迁移状态,只需要对第一节点中的待迁移数据执行数据修改请求所指示的操作。
114.针对第三节点接收客户端发送的数据修改请求,然后第三节点将该数据修改请求转发给第一节点的情况,则:
115.接收到数据修改请求包括:
116.接收到分布式数据库中第三节点发送的数据修改请求以及分布式数据库状态信息;
117.该方法还包括:
118.基于分布式数据库状态信息,确定分布式数据库处于数据迁移状态。
119.第三节点接收到客户端发送的数据修改请求后,第三节点可以确定分布式数据库状态信息,若第三节点基于分布式数据库状态信息确定该数据修改请求为分布式数据库处于数据迁移状态时收到的请求,则第三节点基于接收到的数据迁移信息中进行数据迁移的源节点即第一节点的标识,将数据修改请求转发给第一节点,同时第三节点也会向第一节
点发送分布式数据库状态信息,这样第一节点基于该分布式数据库状态信息,可以确定分布式数据库处于数据迁移状态,则第一节点可以对数据修改请求进行处理,第一节点处理完成后再将数据修改请求发送给第二节点,以便于第二节点对数据修改请求进行处理。
120.在本实施例中,第三节点为分布式数据库中不同于第一节点和第二节点的mdb节点。
121.在本实施例中,第三节点确定数据修改请求为分布式数据库处于迁移状态时收到的请求的方式可以参照上述第一节点确定数据修改请求为分布式数据库处于数据迁移状态时收到的请求的方式,即先判断第一事务标识是否大于预设阈值,再基于迁移标识确定数据迁移未完成后,判断第二事务标识是否大于第一事务标识,具体此处不再赘述。
122.进一步的,第一节点对待迁移数据执行数据修改请求所指示的操作,具体指的是:
123.若符合情况b和情况c,则待迁移数据全部在第一节点中,由第一节点对待迁移数据执行数据修改请求所指示的操作。
124.若符合情况c,则第一节点中保存有待迁移数据的原始数据,原始数据是静止的,不会因为数据迁移而发生变化,第一节点可以对该原始数据执行数据修改请求所指示的操作。
125.进一步的,步骤s203中第二节点对待迁移数据执行数据修改请求所指示的操作,具体包括:
126.一种可能的情况是:若数据修改请求包括数据删除请求,则第二节点对待迁移数据执行数据修改请求所指示的操作,包括:
127.第二节点执行如下操作:
128.基于数据删除请求中的第一索引搜索第一索引所对应的数据;
129.若搜索到第一索引所对应的数据,则删除第一索引所对应的数据;
130.若未搜索到第一索引所对应的数据,则确定第一索引在第二节点中对应的数据位置,针对数据位置设置占位标识,以便于第一节点将第一索引所对应的数据迁移至数据位置后,第二节点基于占位标识删除第一索引所对应的数据。
131.第二节点基于数据删除请求中的第一索引搜索第一索引所对应的数据,若第二节点搜索到了第一索引所对应的数据,则表示第一索引所对应的数据已迁移到了第二节点,则第二节点可以直接删除第一索引所对应的数据。
132.若第二节点未搜索到第一索引所对应的数据,则表示第一索引所对应的数据还没有迁移到了第二节点,则第二节点可以确定第一索引在该第二节点的数据列表中对应的数据位置,第二节点针对该数据位置设置占位标识,这样在第一节点将第一索引所对应的数据迁移到第二节点中的该数据位置后,第二节点可以基于预先设置的占位标识删除该第一索引所对应的数据。
133.本实施的一种可能的场景是:第一节点将数据1至100迁移到第二节点的过程中接收到了数据删除请求,数据删除请求指示删除数据50,则第一节点基于该数据删除请求删除原始数据中的数据50,最终第一节点中的待迁移数据变为1至49以及51至100,第二节点搜索数据列表中是否存在数据50,若存在,则删除数据50,若不存在,则先在数据50的数据位置设置占位符,等待数据50由第一节点迁移至第二节点后,删除数据50,最终第二节点收到的待迁移数据为1至49以及51至100,保证了两节点数据迁移过程中数据的一致性,从而
本技术的方案可以在数据迁移过程中处理客户端的请求。
134.可见,本技术通过第一节点和第二节点均处理客户端的数据删除请求,保证了两节点数据迁移过程中待迁移数据的一致性,实现了数据迁移过程中客户端请求的正常处理,避免了对客户端业务的影响。
135.另一种可能的情况是:若数据修改请求包括数据新增请求,则第二节点对待迁移数据执行数据修改请求所指示的操作,具体包括:
136.第二节点执行如下操作:
137.若第二节点中不存在数据修改请求中的第二索引所对应的数据,则新增第二索引所对应的数据;
138.若第二节点中存在数据修改请求中的第二索引所对应的数据,检测第二索引所对应的数据位置是否设置有占位标识;
139.若设置有占位标识,则删除该占位标识。
140.在本实施例中,第二节点检测第二节点的数据列表中是否存在数据修改请求中的第二索引所对应的数据,若不存在数据新增请求中的第二索引所对应的数据,则在第二节点的数据列表中插入该第二索引所对应的数据。第二节点不存在数据新增请求中的第二索引所对应的数据可能的原因是:待迁移数据中不包括第二索引所对应的数据;或待迁移数据中包括该数据但是第一节点还未将该数据迁移到第二节点,这种情况下第二节点还可以向第一节点发送取消迁移第二索引所对应的数据的提示信息。
141.若第二节点中存在数据新增请求中的第二索引所对应的数据,则第二节点进一步判断第二索引的索引位置是否存在占位标识;
142.若不存在占位标识,则可能的情况是:第一节点已基于数据新增请求新增了数据,第二节点还没有来得及基于数据新增请求新增该数据,第一节点就将该数据迁移到了第二节点,则双写时就会发现第二节点的数据列表中已存在该数据,此时第二节点就不需要再新增该数据了。
143.若存在占位标识,则可能的情况是:第一索引对应的数据与第二索引对应的数据为同一数据,第二节点先对第一索引对应的数据执行了删除操作,但由于第一节点还未将第一索引对应的数据迁移至第二节点,第二节点先在第一索引对应的数据位置设置了占位标识,第一节点将该第一索引对应的数据迁移到第二节点后,还没有删除第一索引对应的数据,第二节点现在又对该第二索引对应的数据执行新增操作,则此时第二节点不会再新增或删除该数据,第二节点删除该占位标识即可。
144.可选的,数据迁移信息中包括待迁移数据的标识以及第二节点的标识,则步骤s202接收到数据修改请求之前,该方法还包括:
145.基于待迁移数据的标识,确定第一节点中存储的待迁移数据;
146.基于数据迁移指示信息中第二节点的标识,确定数据迁移的目的地节点为第二节点;
147.接收到管理节点发送的数据迁移指令时,基于数据迁移指令将待迁移数据由第一节点迁移至第二节点。
148.第一节点可以基于数据迁移信息中第一节点的标识,确定进行数据迁移的源节点为第一节点,基于数据迁移信息中第二节点的标识,确定数据迁移的目的地节点为第二节
点,基于数据迁移信息中待迁移数据的表名、列名以及索引信息等可以确定出第一节点中的待迁移数据,当第一节点接收到管理节点发送的数据迁移指令后,第一节点将待迁移数据由第一节点迁移至第二节点,第一节点所属分布式数据库进入数据迁移状态。
149.数据迁移的具体过程是:第一节点根据索引查找数据,将数据发送给第二节点,第二节点将该数据插入到第二节点数据列表中对应的数据位置。可以设置每次迁移固定数量的数据行,或者固定大小的数据块。
150.可选的,基于数据迁移指令将待迁移数据由第一节点迁移至第二节点之后,该方法还包括:
151.修改第一事务标识;
152.若修改后的第一事务标识不大于预设阈值,则确定分布式数据库中处于数据迁移完成状态;
153.若确定不存在客户端访问待迁移数据在第一节点中所对应的原始数据,则删除原始数据。
154.在本实施例中,管理节点可以控制第一节点修改第一事务标识,从而第一节点可以基于修改后的第一事务标识,确定分布式数据库处于迁移完成状态,例如当修改后的第一事务标识不大于预设阈值,则确定分布式数据库处于迁移完成状态,在确定数据迁移完成后,第一节点可以检测针对待迁移数据的访问是否已全部结束,如果不存在客户端访问该待迁移数据的原始数据,则删除该原始数据。
155.综上,参照图3,本技术的技术方案实际上可以包括如下步骤:
156.步骤s1:管理节点生成数据迁移信息;
157.步骤s2:管理节点向各节点发送数据迁移信息,以便于各节点基于数据迁移信息生成第一事务标识。
158.步骤s1和s2的具体实现方式参照上述实施例的相关描述。
159.需要说明的是,各节点生成第一事务标识后,各节点可以将该第一事务标识设置为各节点的元数据信息中的事务标识。
160.同时各节点基于数据迁移信息,配置各节点的元数据信息中其他信息,具体包括:数据迁移的源节点、目的地节点、待迁移数据的信息以及迁移标识,待迁移数据的信息以及迁移标识的相关解释参考上述实施例。
161.各节点可以设置第一事务标识为trx_id_migration_begin,各节点开启线程获取当前活跃事务列表,当某一节点活跃的最小事务号大于trx_id_migration_begin时,该节点通知管理节点此时当前节点中没有小于trx_id_migration_begin的事务,即数据迁移开始之前的事务已全部处理完成,当管理节点收到所有节点的通知后控制数据迁移流程进入下一步。
162.需要说明的是,任一节点获取事务标识与该节点配置对应元数据信息需保证原子性。
163.步骤s3:管理节点向第一节点发送数据迁移指令,以便于第一节点基于数据迁移指令开始进行数据迁移。
164.步骤s4:第一节点若接收到客户端的数据修改请求,若第一事务标识大于预设阈值,且迁移标识为false,且第二数据修改请求中的第二事务标识大于第一事务标识,则确
定分布式数据库处于数据迁移状态,第一节点对数据修改请求进行处理,同时将数据修改请求发送给第二节点,以便于第二节点也对数据修改请求进行处理。
165.步骤s3和s4的具体实现方式参照上述实施例的相关描述。
166.步骤s5:第一节点向管理节点发送数据迁移已完成通知;
167.需要说明的是,迁移完成后第一节点通知管理节点,若迁移超时管理节点会主动去第一节点上询问,管理节点收到迁移完成通知后控制数据迁移流程进入下一步。
168.步骤s6、管理节点控制各节点修改第一事务标识,以确定各节点的最小事务标识均大于修改后的第一事务标识;
169.管理节点通知各节点修改元数据信息中的第一事务标识为trx_id_migration_end,将迁移标记置为true。
170.各节点开启线程获取当前活跃事务列表最小事务号,当最小事务号大于trx_id_migration_end时,表示数据已经迁移完成,数据迁移的目的地节点已经可能提供正确的数据,各节点通知管理节点最小事务号大于trx_id_migration_end,便于管理节点控制数据迁移流程进入下一步。
171.步骤s7:管理节点确定各节点针对待迁移数据的原始数据的访问已全部结束。
172.管理节点通知各节点修改第一节点的元数据信息,具体为:将第一事务标识修改为不大于预设阈值(指示不存在数据迁移,即分布式数据库处于数据迁移完成状态),将迁移记置为false,将第二节点作为数据迁移的源节点;此时第一事务标识不大于预设阈值,且迁移标识为false,可以识别出迁移完成后的重置。
173.各节点申请一个新的事务号,不需要记录在第一节点的元数据信息里,并开启新线程获取当前活跃事务列表最小事务标识,当最小事务标识大于新的事务标识时,表示所有访问原始数据的请求都已经结束,各节点通知管理节点,以便于管理节点控制数据迁移流程进入下一步。
174.步骤s8、管理节点通知第一节点删除原始数据和第二节点删除存在占位标识的数据。
175.可以用migration_delete字段指示是否存在占位标识,migration_delete字段为0表示不存在占位标识,migration_delete字段为1表示存在占位标识。
176.管理节点开启事务删除第一节点上的原始数据和第二节点上存在占位标识的行记录。事务成功表示数据迁移完成,若超时管理节点会去对应节点询问。
177.请参照图4,本技术还提供了一种数据处理装置,该装置包括:
178.第一接收模块401,用于接收管理节点发送的数据迁移信息,基于数据迁移信息生成第一事务标识;
179.第二接收模块402,用于接收到数据修改请求时,若第一节点所属分布式数据库处于数据迁移状态,则对第一节点中的待迁移数据执行数据修改请求所指示的操作;其中,分布式数据库的状态是基于第一事务标识确定的;
180.发送模块403,用于将数据修改请求发送至分布式数据库中的第二节点,以便第二节点对待迁移数据执行数据修改请求所指示的操作。
181.可选的,该装置还包括:
182.判断模块,用于判断第一事务标识是否大于预设阈值;
183.第一确定模块,用于若第一事务标识大于预设阈值,且数据修改请求中携带的第二事务标识大于第一事务标识,则确定分布式数据库处于数据迁移状态。
184.可选的,判断模块在判断第一事务标识是否大于预设阈值之后,该装置还包括:
185.第二确定模块,用于若第一事务标识不大于预设阈值,则确定分布式数据库中不存在数据迁移事务,对第一节点中的待迁移数据执行数据修改请求所指示的操作;
186.第三确定模块,用于若第一事务标识大于预设阈值,且数据修改请求中携带的第二事务标识小于第一事务标识,则确定分布式数据库中存在数据迁移事务但未进入数据迁移状态,对第一节点中的待迁移数据执行数据修改请求所指示的操作。
187.可选的,第二接收模块402,具体用于:
188.接收到分布式数据库中第三节点发送的数据修改请求以及分布式数据库状态信息;
189.该装置还包括第四确定模块,用于:
190.基于分布式数据库状态信息,确定分布式数据库处于数据迁移状态。
191.可选的,数据修改请求包括数据删除请求,则第二节点对待迁移数据执行数据修改请求所指示的操作,包括:
192.第二节点执行如下操作:
193.基于数据删除请求中的第一索引搜索第一索引所对应的数据;
194.若搜索到第一索引所对应的数据,则删除第一索引所对应的数据;
195.若未搜索到第一索引所对应的数据,则确定第一索引在第二节点中对应的数据位置,针对数据位置设置占位标识,以便于第一节点将第一索引所对应的数据迁移至数据位置后,第二节点基于占位标识删除第一索引所对应的数据。
196.可选的,数据修改请求包括数据新增请求,则第二节点对待迁移数据执行数据修改请求所指示的操作,包括:
197.第二节点执行如下操作:
198.若第二节点中不存在数据修改请求中的第二索引所对应的数据,则新增第二索引所对应的数据;
199.若第二节点中存在数据修改请求中的第二索引所对应的数据,检测第二索引所对应的数据位置是否设置有占位标识;
200.若设置有占位标识,则删除该占位标识。
201.可选的,数据迁移信息中包括待迁移数据的标识以及第二节点的标识,该装置还包括:
202.第五确定模块,用于基于待迁移数据的标识,确定第一节点中存储的待迁移数据;
203.第六确定模块,用于基于数据迁移指示信息中第二节点的标识,确定数据迁移的目的地节点为第二节点;
204.数据迁移模块,用于接收到管理节点发送的数据迁移指令时,基于数据迁移指令将待迁移数据由第一节点迁移至第二节点。
205.可选的,该装置还包括:
206.修改模块,用于修改第一事务标识;
207.第七确定模块,用于若修改后的第一事务标识不大于预设阈值,则确定分布式数
据库中处于数据迁移完成状态;
208.第八确定模块,用于若确定不存在客户端访问待迁移数据在第一节点中所对应的原始数据,则删除原始数据。
209.本实施例的数据处理装置可执行本技术上述任一实施例所示的数据处理方法,其实现原理相类似,此处不再赘述。
210.在一个可选实施例中提供了一种电子设备,如图5所示,图5所示的电子设备4000包括:处理器4001和存储器4003。其中,处理器4001和存储器4003相连,如通过总线4002相连。可选地,电子设备4000还可以包括收发器4004。需要说明的是,实际应用中收发器4004不限于一个,该电子设备4000的结构并不构成对本技术实施例的限定。
211.处理器4001可以是cpu(central processing unit,中央处理器),通用处理器,dsp(digital signal processor,数据信号处理器),asic(application specific integrated circuit,专用集成电路),fpga(field programmable gate array,现场可编程门阵列)或者其他可编程逻辑器件、晶体管逻辑器件、硬件部件或者其任意组合。其可以实现或执行结合本技术公开内容所描述的各种示例性的逻辑方框,模块和电路。处理器4001也可以是实现计算功能的组合,例如包含一个或多个微处理器组合,dsp和微处理器的组合等。
212.总线4002可包括一通路,在上述组件之间传送信息。总线4002可以是pci(peripheral component interconnect,外设部件互连标准)总线或eisa(extended industry standard architecture,扩展工业标准结构)总线等。总线4002可以分为地址总线、数据总线、控制总线等。为便于表示,图5中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
213.存储器4003可以是rom(read only memory,只读存储器)或可存储静态信息和指令的其他类型的静态存储设备,ram(random access memory,随机存取存储器)或者可存储信息和指令的其他类型的动态存储设备,也可以是eeprom(electrically erasable programmable read only memory,电可擦可编程只读存储器)、cd-rom(compact disc read only memory,只读光盘)或其他光盘存储、光碟存储(包括压缩光碟、激光碟、光碟、数字通用光碟、蓝光光碟等)、磁盘存储介质或者其他磁存储设备、或者能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。
214.存储器4003用于存储执行本技术方案的应用程序代码,并由处理器4001来控制执行。处理器4001用于执行存储器4003中存储的应用程序代码,以实现前述任一方法实施例所示的内容。
215.应该理解的是,虽然附图的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,其可以以其他的顺序执行。而且,附图的流程图中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,其执行顺序也不必然是依次进行,而是可以与其他步骤或者其他步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
216.以上仅是本发明的部分实施方式,应当指出,对于本技术领域的普通技术人员来
说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1