CN108319623A - 一种数据重分布方法、装置及数据库集群 - Google Patents
一种数据重分布方法、装置及数据库集群 Download PDFInfo
- Publication number
- CN108319623A CN108319623A CN201710038202.9A CN201710038202A CN108319623A CN 108319623 A CN108319623 A CN 108319623A CN 201710038202 A CN201710038202 A CN 201710038202A CN 108319623 A CN108319623 A CN 108319623A
- Authority
- CN
- China
- Prior art keywords
- node
- affairs
- original table
- data
- tuple
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/466—Transaction processing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/2379—Updates performed during online database operations; commit processing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/2308—Concurrency control
- G06F16/2336—Pessimistic concurrency control approaches, e.g. locking or multiple versions without time stamps
- G06F16/2343—Locking methods, e.g. distributed locking or locking implementation details
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/2365—Ensuring data consistency and integrity
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Software Systems (AREA)
- Computer Security & Cryptography (AREA)
- Computing Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明实施例提供一种数据库集群中的数据重分布方法、装置及数据库集群。该数据库集群包括至少一个第一节点,至少一个第一节点上存储有原始表,该方法包括:启动数据重分布过程,数据重分布过程用于将原始表重分布至至少一个第一节点和第二节点上;数据重分布过程包括:启动第一事务,第一事务在至少一个第一节点和第二节点上创建临时表,并关联原始表和临时表的导入操作,启动第二事务,第二事务根据第一事务的事务标识在原始表中筛选出旧的元组,并将筛选出的旧的元组重分布至临时表中,在第二事务结束后,交换原始表与该临时表的元数据。本发明实施例可以有效提升数据库集群的处理性能。
Description
技术领域
本发明实施例涉及数据库集群技术,尤其涉及一种数据重分布方法、装置和数据库集群。
背景技术
数据库集群是指利用至少两台数据库服务器,构成一个虚拟单一数据逻辑映像,然后像单机数据库***那样,向客户端提供数据服务的分布式数据库。数据库集群主要有两种架构:共享磁盘(Shared Disk)和无共享(Shared Nothing)。其中,在Shared Disk架构的数据库集群中,多个服务器节点共享同一存储介质,每一个节点都可以访问共享存储介质中的全量数据并对外提供服务。而在Shared Nothing架构的数据库集群中,每一个节点都拥有自己的内存和磁盘,节点之间不互相共享内存及磁盘,数据库中的数据分布到多个节点上,节点之间通过网络连接,通常是通过光钎等专用网络。
为了适应不同的业务场景,数据库集群通常具有可伸缩性,即数据库集群所包含的节点可以根据业务需求改变。例如,随着数据规模的增长,为了支持更大规模的数据存储和查询,需要对数据库集群进行扩容,即添加新的节点至集群中并完成数据的搬移。对于Shared Nothing架构的数据库集群,在添加新的节点到数据库集群之后,需要将原有节点上的部分数据重分布到新加入的节点来完成扩容。同样地,如果数据库集群的资源闲置较多,可以对数据库集群进行缩容,即移除部分节点,从而避免资源浪费。在移除数据库集群的节点之前,需要将待移除节点上的数据重分布至其它节点。在数据重分布的过程中,为了保证扩容前后数据的一致性,正在被重分布的表将会被锁定,不能对其进行读写操作,直到此表中的数据的重分布全部完成。
由此可见,现有的数据库集群的数据重分布阶段需要将部分数据锁定以保证数据一致性,而根据数据量的大小,数据重分布的耗时在几小时到几天不等,导致用户长时间无法对正在重分布的数据进行操作,从而对业务造成严重影响。
发明内容
本发明实施例提供一种数据库集群中的数据重分布方法、装置及数据库集群,解决数据库集群在进行数据重分布的过程中,用户长时间无法对正在重分布的数据进行操作的问题。
第一方面,本发明实施例提供一种数据库集群的数据重分布方法,该数据库集群包括至少一个第一节点,该至少一个第一节点上存储有原始表,该方法包括:在该数据库集群新增第二节点之后,启动数据重分布过程,以将该原始表重分布至该至少一个第一节点和该第二节点上;其中,该原始表包括多个元组,一个元组的事务标识为导入该元组的事务的标识;该数据重分布过程具体包括:启动第一事务,所述第一事务用于在该至少一个第一节点和该第二节点上创建临时表,并关联该原始表和该临时表的导入操作,使得该重分布过程中导入的新的元组同时***到该原始表和该临时表中;启动第二事务,该第二事务用于根据该第一事务的事务标识在该原始表中筛选出旧的元组,并将筛选出的旧的元组重分布至该临时表中;该第一事务的事务标识大于该原始表中该旧的元组的事务标识;在该第二事务结束后,交换该原始表与该临时表的元数据。
采用上述方法,可以实现在数据库集群扩容时允许对数据库集群的访问和导入新的元组,有效提升数据库集群的处理性能。
结合第一方面,在一种可能的实现方式中,根据第一事务的事务标识在原始表中筛选出旧的元组,并将筛选出的旧的元组重分布至临时表中,包括:分别获取该原始表中的各个元组的事务标识,其中,事务标识小于第一事务的事务标识的元组为该旧的元组;将该旧的元组重分布至该临时表中。
在另一种可能的实现方式中,该事务标识具体可以是事务快照或者事务ID。
采用上述方法,通过事务标识可以有效区分新的元组和旧的元组,并在新建的临时表中进行数据重分布,从而只需要对原始表扫描一次便可以完成扩容的数据重分布,相对于传统的在线扩容进行新旧数据筛选和删除需要至少扫描两次的方式,可以有效提升数据库集群***处理性能。
结合第一方面,在另一种可能的实现方式中,关联该原始表和该临时表的导入操作,具体可以包括:创建该原始表和该临时表的导入操作的关联规则,该关联规则用于指示将该导入的新的元组同时***该原始表和该临时表中。
在另一种可能的实现方式中,关联该原始表和该临时表的导入操作,具体包括:创建该原始表和该临时表的导入操作的触发器,该触发器用于将该导入的新的元组同时***该原始表和该临时表中。
采用上述实现方式,通过创建关联规则或者创建触发器的方式实现关联所述原始表和所述临时表的导入操作,从而实现数据库集群扩容时允许对数据库集群的访问和导入新的元组,有效提升数据库集群的处理性能过程。
结合第一方面及第一方面的任一种可能的实现方式,在第一方面的另一种可能的实现方式中,交换该原始表与该临时表的元数据,包括:启动第三事务,该第三事务对该原始表和该临时表设置访问排他锁;交换该原始表与该临时表的元数据,并修改该原始表的分布节点信息,修改后的原始表的分布节点信息包括该至少一个第一节点和该第二节点的信息。采用本实现方式,通过三个事务完成数据库集群的扩容的方法,使得数据库集群扩容中的数据重分布过程受事务保护,当中间发生异常时,当前执行的事务回滚,再次执行数据重分布,不会由于上次执行失败而无法重分布,整个过程可重入。
在一种可能的实现方式中,该分布节点信息可以包括该至少一个第一节点和该第二节点的标识。在另一种可能的实现方式中,该分布节点信息可以包括该至少一个第一节点和该第二节点的地址信息,例如IP地址和/或MAC地址。结合第一方面及第一方面的任一种可能的实现方式,在第一方面的另一种可能的实现方式中,该数据重分布方法还可以包括:对所述原始表设置访问共享锁,所述访问共享锁用于在所述重分布过程中允许在所述原始表中导入新的元组。其中,该设置访问共享锁的操作可以由第二事务来实现,也可以由另一个单独的事务的实现。
第二方面,本发明实施例提供一种数据库集群中的数据重分布装置,该装置用于实现上述方法步骤。该装置可以通过硬件实现,也可以通过硬件执行相应的软件实现。所述硬件或软件包括一个或多个与上述功能相对应的模块。
结合第二方面,在第二方面的一种可能的实现方式中,该装置包括处理模块和收发模块;该处理模块通过该收发模块向数据库集群中的节点发送一个或多个指令,以指示数据库集群中的部分或全部节点执行上述任一方面或任一方面的任一可能的实现方式所描述的步骤。
上述第二方面以及上述第二方面的各可能的实施方式所提供的方法,其有益效果可以参见上述第一方面和第一方面的各可能的实施方式所带来的有益效果,在此不再赘述。
又一方面,本发明实施例提供了一种数据库集群,该数据库集群包括至少一个第一节点和上述第二方面所描述的数据重分布装置。
又一方面,本发明实施例提供了一种数据库集群,该数据库集群包括至少一个第一节点和上述第二方面所描述的数据重分布装置。
再一方面,本发明实施例提供了一种计算机存储介质,用于储存为上述数据重分布装置所用的计算机软件指令,其包含用于执行上述方面所设计的程序。
本发明实施例的数据重分布方法、装置及数据库集群,通过在数据库集群进行扩容时,通过在数据库集群新增节点之后,在原始节点和新增节点上创建临时表,并关联原始节点上存储的原始表和重分布过程中的临时表原表的导入操作,使得重分布过程中新导入的数据能够同时***到原始表和临时表中,同时,通过事务快照或事务ID对原表中的新老数据进行隔离,实现在扩容过程中,对正在扩容的表允许数据导入的支持,提高了数据库集群***的在扩容数据重分布的同时,保证业务不中断的处理能力。
附图说明
图1A为本发明实施例的一种应用场景的示意图;
图1B为本发明实施例的另一种应用场景的示意图;
图2为本发明实施例的一种数据库集群扩容中的数据重分布方法的流程图;
图3A为数据重分布初始阶段的示意图;
图3B为数据重分布过程中的示意图;
图3C为数据重分布完成的示意图;
图4为本发明实施例的另一种数据库集群扩容中的数据重分布方法的流程图;
图5A为数据重分布初始阶段的示意图;
图5B为数据重分布过程中的示意图;
图5C为数据重分布完成的示意图;
图6为本发明实施例的一种数据库集群缩容中的数据重分布方法的流程图;
图7为本发明实施例的一种数据库集群中的数据重分布装置的结构示意图;
图8为本发明实施例的一种服务器的结构示意图。
具体实施方式
下面结合附图,对本发明的实施例进行描述。
图1A为本发明实施例的一种应用场景的示意图,如图1A所示,本发明实施例的数据重分布方法具体可以应用于图1A的数据库集群中,图1A所示的为一种典型的SharedNothing(无共享)架构的数据库集群,其包含有至少一个主节点(Master)和若干从节点(Slave),如图1A所示,数据库集群中的每一个节点可以是一台服务器或者运行在通用硬件之上的一台虚拟机,其各自具有属于自己私有的CPU和非易失性存储介质,该存储介质可以具体是内存(Memory)、硬盘、磁盘阵列等,各个节点之间不存在共享资源,各个节点之间通过网络或者其它通信方式交互,具有较高的并行处理和扩容能力。各个节点分别处理各自的数据,将处理后的结构向上层汇总或者在其他节点间流转。举例而言,数据库中的一个表,在存储该表时,会将该表从物理存储介质上进行水平分割,并分配给数据库集群中的多个节点,每个节点可以独立的对存储在与该节点的数据进行处理。本发明实施例的数据重分布方法,可以在数据库集群扩容或缩容过程中进行新的元组的导入,从而有效解决数据库集群在进行扩容或缩容过程中,用户长时间无法对正在重分布的数据进行操作的问题。
其中,执行本发明实施例的数据重分布方法的执行主体可以是如图1A所示的有主节点的数据库集群架构中的主节点,具体的,如图1A所示的有主节点的数据库集群架构,主节点为其他从节点提供与外部进行通信连接服务,即主节点接收到所有指令(消息、事务、订阅等)都会同步发送给与其连接的各个从节点。
而与图1A有主节点的数据库集群不同,还有一种典型的Shared Nothing架构,具体为无主节点的Shared Nothing架构,图1B为本发明实施例的另一种应用场景的示意图,如图1B所示的无主r节点的数据库集群,该数据库集群中的某一节点在提供数据读/写、查询服务的同时,还为该数据库集群架构中的其他节点提供与外部进行通信连接服务,即充当了类似于图1A所描述的主节点的角色。该节点也可以实施本发明实施例的数据库集群的数据重分布方法,从而有效解决数据库集群在进行扩容或缩容过程中,用户长时间无法对正在重分布的数据进行操作的问题。其中,执行本发明实施例的数据重分布方法的执行主体可以是如图1B所示的数据库集群架构中的任一节点。
本申请的说明书和权利要求书及附图中的术语“数据库事务(简称:事务)”,是数据库***中的一个逻辑单位,由一个有限的数据库操作序列构成的,每个事务都有一个唯一的事务标识。数据库集群中的事务通常为分布式事务,分布式事务是指支持事务的节点及事务管理器分别位于不同节点之上。也就是说,事务由一节点启动或触发,以及管理,但事务所包含的操作操作可能分布在其它节点上,即由一个或多个其它的节点来执行。分布式事务需要保证这些操作要么全部成功,要么全部失败,从而保证数据一致性。在数据库***中,数据通常以表的方式存储,元组是表的基本元素,一个表由一个或多个元组构成,这些元组可能是由不同的事务导入或修改的。其中,元组的事务的标识定义为导入该元组的事务的标识。
图2为本发明实施例的一种数据库集群扩容中的数据重分布方法的流程图,数据库集群包括至少一个第一节点,所述至少一个第一节点上存储有原始表,如图2所示,本实施例的方法可以包括:
在所述数据库集群新增第二节点之后,启动数据重分布过程,所述数据重分布过程用于将所述原始表重分布至所述至少一个第一节点和所述第二节点上。其中,所述原始表可以包括多个元组,每个元组的事务标识为导入所述每个元组的事务的标识。其中,第一节点具体指原有节点,第二节点具体指新增节点,即为实现数据库集群扩容而新增加的节点。其中,第二节点的个数可以是一个,也可以是多个,具体可以根据实际需求进行灵活配置。
在数据库集群增加第二节点后,通过下述方法步骤完成数据重分布,实现数据库集群的扩容。
步骤101、启动第一事务,所述第一事务用于在所述至少一个第一节点和所述第二节点上创建临时表,并关联所述原始表和所述临时表的导入操作,使得所述重分布过程中导入的新的元组同时***到所述原始表和所述临时表中。
其中,所述第一事务的事务标识大于所述原始表中旧的元组的事务标识。
其中,关联所述原始表和所述临时表的导入操作用于将重分布过程中导入的新的元组同时***所述原始表和所述临时表中。即实现导入的新的元组的双插。
具体的,在业务场景中,如果当前数据库集群满足不了用户的业务需求,则需要对当前的数据库集群进行扩容,从而在当前数据库集群(至少一个第一节点)的基础上增加服务器和与该服务器连接的存储介质,在数据库集群中增加服务器(第二节点)和与其连接的存储介质后,还需要进行组网配置、信息同步(例如:元数据)等操作,之后便可以使用新增的服务器和与其连接的存储介质,在新的服务器加入数据库集群后,需要在原有节点至少一个第一节点)和新增节点(第二节点)上进行数据重分布,即执行步骤101。其中,创建的临时表分布在至少一个第一节点和第二节点上,即该临时表可由多个子表组成,这多个子表分别位于不同的节点所连接的存储介质中,由各个节点并行对子表进行处理,可以有效提升数据库集群的数据处理效率。
步骤102、启动第二事务,所述第二事务用于根据所述第一事务的事务标识在所述原始表中筛选出旧的元组,并将筛选出的旧的元组重分布至所述临时表中。
具体的,本实施例的数据库集群的扩容方法,在进行扩容时,首先通过步骤101的第一事务在至少一个第一节点和第二节点上创建临时表,并记录创建临时表的事务的事务标识,在完成步骤101之后,本实施例的方法便可以允许导入新的元组,具体的,导入新的元组是在第二事务中进行的,所以新的元组的事务标识与旧的元组的事务标识不同,为了便于数据库集群故障之后可以精确地进行数据回滚,通常事务标识会随着时间推移递增。本发明实施例利用第一事务的事务标识可以有效将新的元组与旧的元组进行区分,从而利用第一事务的事务标识可以在原始表中筛选出旧的元组,将旧的元组重分布至临时表中,并将新的元组分布至临时表中,其中至少一个第一节点和第二节点上数据的分布方式具体可以采用哈希hash分布,当然也可以采用其他分布方式,此处不一一举例说明。
步骤103、在所述第二事务结束后,交换所述原始表与所述临时表的元数据。
其中,元数据(Metadata),又称中介数据、中继数据,为描述数据的数据(dataabout data),主要是描述数据属性的信息,用来支持如指示存储位置、历史数据、资源查找、文件记录等功能。例如,原始表的元数据具体可以包括原始表映射的表数据文件信息,临时表的元数据具体可以包括临时表映射的表数据文件信息,具体的,数据库集群中存储有表名,和与该表名对应的物理文件信息,通过步骤101和步骤102完成数据搬移之后,还需要将原始表与临时表的元数据进行互换,以使得用户可以正确访问数据重分布之后的数据。
由此可见,通过采用步骤101至步骤103实现数据库集群扩容,可以在步骤101之后允许导入新的元组,从而可以有效避免由于数据库集群扩容,导致用户长时间无法在正在重分布的数据进行操作,为用户带来很大不便。
可选的,其中步骤102中所述根据所述第一事务的事务标识在所述原始表中筛选出旧的元组,并将筛选出的旧的元组重分布至所述临时表中,具体的实现方式可以为:分别获取所述原始表中的各个元组的事务标识,其中,事务标识小于该第一事务的事务标识的元组为旧的元组;将所述旧的元组重分布至所述临时表中。
其中,关联所述原始表和所述临时表的导入操作,具体的实施方式可以为:创建所述原始表和所述临时表的导入操作的关联规则(CREAT RULE),所述关联规则用于指示将所述导入的新的元组同时***所述原始表和所述临时表中;或,创建所述原始表和所述临时表的导入操作的触发器(CREAT TRIGGER),所述触发器用于将所述导入的新的元组同时***所述原始表和所述临时表中。
可选的,步骤103所述交换所述原始表与所述临时表的元数据,具体的实施方式可以为:启动第三事务,所述第三事务对所述原始表和所述临时表设置访问排他锁,交换所述原始表与所述临时表的元数据,并修改所述原始表的分布节点信息,修改后的原始表的分布节点信息包括所述至少一个第一节点和所述第二节点的信息。
可选的,在完成步骤103之后,还可以将所述临时表删除,并删除创建的关联规则或者触发器。
其中,第二事务可以对所述原始表设置访问共享锁,所述访问共享锁用于在所述重分布过程中允许在所述原始表中导入新的元组。即允许用户对正在重分布的数据进行操作。
可选的,所述事务标识包括事务快照或事务身份(Identity,简称ID)。
需要说明的是,在执行步骤101过程中,启动第一事务可以对原始表设置短暂的访问排他锁,以创建临时表和关联原始表和临时表的导入操作。
需要说明的是,第一事务和第三事务设置的短暂的访问排他锁,其时间均较短,第二事务在完成数据搬移过程中是设置的访问共享锁,即允许访问和导入新的元组的操作。这样设置可以有效减少在数据库集群扩容过程中用户无法进行操作的时间。
本实施例,通过在数据库集群新增第二节点之后,启动数据重分布过程,数据重分布过程用于将所述原始表重分布至所述至少一个第一节点和所述第二节点上,数据重分布过程具体可以包括:启动第一事务,所述第一事务至少一个第一节点和第二节点上创建临时表,并关联原始表和临时表的导入操作,使得所述重分布过程中导入的新的元组同时***到所述原始表和所述临时表中,所述第一事务的事务标识大于原始表中旧的元组的事务标识,启动第二事务,第二事务根据所述第一事务的事务标识在所述原始表中筛选出旧的元组,并将筛选出的旧的元组重分布至所述临时表中,在第二事务结束后,交换所述原始表与所述临时表的元数据,实现在数据库集群扩容时允许对数据库集群的访问和导入新的元组,有效提升数据库集群的处理性能。
下面采用几个具体的实施例,对图2所示方法实施例的技术方案进行详细说明。
为了更为清楚的理解本发明上述实施例,采用当前数据库集群包括4个节点(Dn1、Dn2、Dn3和Dn4),新增两个节点(Dn5和Dn6)进行示意性举例说明。
图3A为数据重分布初始阶段的示意图,图3B为数据重分布过程中的示意图,图3C为数据重分布完成的示意图。如图3A所示,当前数据库集群包括的4个节点(Dn1、Dn2、Dn3和Dn4),每个节点连接一个存储介质,原始表t1被分割为多个子表(Dn1.t1.old、Dn2.t1.old、Dn3.t1.old以及Dn4.t1.old),分别存储在各个节点对应的存储介质中,为了便于理解,图3A至图3B仅标示出子表,对于存储介质未示出,图3A中的t1.new代表需要导入数据库集群的新的元组,其中,.old用于标识该子表中的元组是旧的元组,.new用于标识其中是新的元组。由于数据库集群不能满足用户的业务需求,则需要进行数据库集群扩容,即新增两个节点(Dn5和Dn6),增加的两个节点相应完成组网配置和信息同步,即可与原有节点(Dn1、Dn2、Dn3和Dn4)组成新的数据库集群,该数据库集群包括六个节点,其中,初始数据分布在Dn1至Dn4上,新增节点Dn5和Dn6上无t1的数据。新增节点Dn5和Dn6加入数据库集群后的连接方式可以如图3B所示,即Dn5和Dn6与数据库集群中的其他原有节点互连互通。
完成上述步骤之后,数据库集群需要在原有节点和新增节点(Dn1至Dn6)进行数据重分布,在数据重分布过程中,首先需要在Dn1至Dn6上创建临时表t1.tmp,临时表t1.tmp被分割为多个子表分别位于不同的存储介质上,如图3B所示,临时表t1.tmp的多个子表分别位于与Dn1、Dn2、Dn3、Dn4、Dn5以及Dn6连接的存储介质中,临时表t1.tmp建立完成后,需要将原表t1的旧的元组重分布到t1.tmp上,同时通过关联原表t1与临时表t1.tmp的导入操作,使得将导入的新元组t1.new同时导入t1和t1.tmp中,即对t1和t1.tmp进行双插,在进行导入新的元组t1.new的过程中,还需要将原表t1中的元组重分布至临时表t1.tmp中,在进行旧的元组的重分布过程中,可以通过建立临时表t1.tmp的事务标识将旧的元组与新的元组进行区分,从而完成将旧的元组重分布至临时表t1.tmp中,具体的,如图3B所示,原表t1中的旧的元组原本分布在Dn1至Dn4中,而进行数据库集群扩容,需要将旧的元组重分布至Dn1至Dn6中,即原本在Dn1至Dn4中的部分旧的元组需要迁移至Dn5和Dn6中,如图3B所示,需要将t1中用斜纹标注的元组迁移至Dn5和Dn6中,在数据重分布过程中允许新的元组t1.new的导入。
通过上述步骤,数据重分布完成,如图3C所示,旧的元组和新的元组均匀分布在Dn1至Dn6中。在数据重分布完成后,还需要交换原表t1和临时表t1.tmp的元数据,并将t1.tmp删除。
图4为本发明实施例的另一种数据库集群扩容中的数据重分布方法的流程图,如图4所示,本实施例的方法可以包括:
S201、创建新的数据分布,切换新的数据分布为当前分布方式,使得扩容时及扩容后新创建的临时表自动以新的数据分布方式进行数据分布。
S202、启动一个事务,对原表加短暂的访问排他锁,在新的数据分布上创建临时表,关联原表和临时表的导入操作,使得重分布过程中导入的新的元组同时***到原表和临时表中。
在完成S202后提交事务。
S203、记录创建临时表的事务快照或事务ID。
S204、启动一个事务,对原表加访问共享锁,允许重分布过程中对原表导入新的元组,以事务快照或事务ID隔离新的元组和旧的元组,将原表中旧的元组***到临时表中。
其中,新的元组通过S202中创建关联原表和临时表的导入操作同步***到临时表和原表中,满足扩容与导入的并发。其中,对于将原表中的旧的元组重分布至临时表中采用的具体实现方式可以为,在原表中查找事务快照或事务ID小于S204的事务快照或事务ID的元组,将该元组加入到临时表中。
在完成S204后提交事务。
S205、启动一个事务,对原表和临时表加短暂的访问排他锁,交换原表和临时表的元数据,修改原表所在的数据分布为新的数据分布。
此时原表中所有的元组都已经分布到扩容后的数据节点上。
在完成S205后提交事务。
S206、删除临时表,删除旧的数据分布。
本实施例,通过事务快照或事务ID将原表中的旧的元组和新的元组进行区分,从而在数据库集群扩容过程中,允许新的元组导入,避免由于在数据库集群扩容过程中无法导入新的元组,导致长时间的阻塞。相较于传统的数据库集群扩容方式进行数据重分布时需要至少两次扫描,本实施例通过创建临时表和事务快照或事务ID进行元组筛选,将筛选出的元组重分布至临时表中,从而只需要扫描一次便可以完成数据重分布,进而可以有效提升数据库集群的***处理性能。并且,本发明实施例的数据库扩容的方法通过三个事务完成,使得数据库集群扩容中的数据重分布过程受事务保护,当中间发生异常时,当前执行的事务回滚,再次执行数据重分布,不会由于上次执行失败而无法重分布,整个过程可重入。
可以理解的,本发明实施例通对原表和重分布过程中的临时表使用双插方式实现需要导入的新的元组的同时导入,通过事务快照或事务ID对原表中的新旧元组进行隔离,实现在扩容过程中,支持同时进行旧的元组重分布和新的元组导入。类似地,上述扩容过程中所使用的数据重分布方法,也可以应用于数据库集群缩容的实施场景中,具体实施方式,可以参见下述实施例的具体解释说明。
采用当前数据库集群包括6个服务器(Dn1、Dn2、Dn3、Dn4、Dn5和Dn6),删除两个服务器(Dn5和Dn6)进行示意性举例说明。
图5A为数据重分布初始阶段的示意图,图5B为数据重分布过程中的示意图,图5C为数据重分布完成的示意图。如图5A所示,当前数据库集群包括的6个节点(Dn1、Dn2、Dn3、Dn4、Dn5和Dn6),每个节点连接一个存储介质,原表t1被分割为多个子表(Dn1.t1.old、Dn2.t1.old、Dn3.t1.old、Dn4.t1.old、Dn5.t1.old以及Dn4.t1.old),分别存储在各个节点对应的存储介质中,为了便于理解,图5A至图5B仅标示出子表,对于存储介质未示出,图5A中的t1.new代表需要导入数据库集群的新的元组,其中,.old用于标识该子表中的数据是旧的元组,.new用于标识其中是新的元组。由于数据库集群中的存储介质出现大量空闲,则可以进行数据库集群缩容,则可以删除两个节点(Dn5和Dn6),以提升数据库集群利用率,其中,初始数据分布在Dn1至Dn6上,在删除Dn5和Dn6之前,需求将Dn5和Dn6的数据迁移至Dn1、Dn2、Dn3、Dn4,即完成数据重分布。
在数据重分布过程中,首先需要在Dn1至Dn4上创建临时表t1.tmp,临时表t1.tmp被分割为多个子表分别位于不同的存储介质上,如图5B所示,临时表t1.tmp的多个子表分别位于与Dn1、Dn2、Dn3以及Dn4连接的存储介质中,临时表t1.tmp建立完成后,需要将原表t1的旧的数据重分布到t1.tmp上,同时通过关联原表t1与临时表t1.tmp的导入操作,使得将导入的新元组t1.new同时导入t1和t1.tmp中,即对t1和t1.tmp进行双插,在进行导入新的元组t1.new的过程中,还需要将原表t1中的元组重分布至临时表t1.tmp中,在进行旧的元组的重分布过程中,可以通过建立临时表t1.tmp的事务标识将旧的元组与新的元组进行区分,从而完成将旧的元组重分布至临时表t1.tmp中,具体的,如图5B所示,原表t1中的旧的元组原本分布在Dn1至Dn6中,而进行数据库集群缩容,需要将旧的元组重分布至Dn1至Dn4中,即原本在Dn5和Dn6中的部分旧的元组需要迁移至Dn1和Dn4中,如图5B所示,需要将t1中用斜纹标注的元组迁移至Dn1至Dn4中,在数据重分布过程中允许新的元组t1.new的导入。
通过上述步骤,数据重分布完成,如图5C所示,旧的元组和新的元组均与分布在Dn1至Dn4中。在数据重分布完成后,还需要交换原表t1和临时表t1.tmp的元数据,并将t1.tmp删除,并且删除Dn5和Dn6,同时完成组网配置更新。
图6为本发明实施例的一种数据库集群缩容中的数据重分布方法的流程图,如图6所示,本实施例的方法可以包括:
S301、创建新的数据分布,切换新的数据分布为当前分布方式,使得缩容时及缩容后新创建的临时表自动以新的数据分布方式进行数据分布。
S302、启动一个事务,对原表加短暂的访问排他锁,在新的数据分布上创建临时表,关联原表和临时表的导入操作,使得重分布过程中导入的新的元组同时***到原表和临时表中。
在完成S302后提交事务。
S303、记录创建临时表的事务快照或事务ID。
S304、启动一个事务,对原表加访问共享锁,允许重分布过程中对原表导入新的元组,以事务快照或事务ID隔离新的元组和旧的元组,将原表中旧的元组***到临时表中。
其中,新的元组通过S302中创建关联原表和临时表的导入操作同步***到临时表和原表中,满足缩容与导入的并发。其中,对于将原表中的旧的元组重分布至临时表中采用的具体实现方式可以为,在原表中查找事务快照或事务ID小于S304的事务快照或事务ID的元组,将该元组加入到临时表中。
在完成S304后提交事务。
S305、启动一个事务,对原表和临时表加短暂的访问排他锁,交换原表和临时表的元数据,修改原表所在的数据分布为新的数据分布。
此时原表中所有的元组都已经分布到缩容后的数据节点上。
在完成S305后提交事务。
S306、删除临时表,删除旧的数据分布。
S307、删除待删除的数据节点,同时完成组网配置更新。
本实施例,通过事务快照或事务ID将原表中的旧的元组和新的元组进行区分,从而在数据库集群缩容过程中,允许新的元组导入,避免由于在数据库集群缩容过程中无法导入新的元组,导致长时间的阻塞。相较于传统的数据库集群缩容方式进行数据重分布时需要至少两次扫描,本实施例通过创建临时表和事务快照或事务ID进行元组筛选,将筛选出的元组重分布至临时表中,从而只需要扫描一次便可以完成数据重分布,进而可以有效提升数据库集群的***处理性能。并且,本发明实施例的数据库缩容的方法通过三个事务完成,使得数据库集群扩容中的数据重分布过程受事务保护,当中间发生异常时,当前执行的事务回滚,再次执行数据重分布,不会由于上次执行失败而无法重分布,整个过程可重入。
图7为本发明实施例的一种数据库集群中的数据重分布装置的结构示意图,如图7所示,所述数据库集群包括至少一个第一节点,所述至少一个第一节点上存储有原始表,本实施例的数据重分布装置可以为该数据库集群的主节点,或者该至少一个第一节点中的某一个节点。具体地,该数据重分布装置包括:收发模块11和处理模块12,其中,处理模块12用于在所述数据库集群新增第二节点之后,启动数据重分布过程,所述数据重分布过程用于将所述原始表重分布至所述至少一个第一节点和所述第二节点上,其中,所述原始表包括多个元组,每个元组的事务标识为导入所述每个元组的事务的标识。所述处理模块12还用于,在数据重分布过程中:通过收发模块11发送第一指令给所述至少一个第一节点和所述第二节点,所述第一指令用于指示所述至少一个第一节点和所述第二节点上创建临时表,其中,所述临时表是由第一事务创建的,所述第一事务的事务标识大于所述原始表中所述旧的元组的事务标识,所述处理模块12还用于通过收发模块11发送第二指令给所述至少一个第一节点,所述第二指令用于指示所述至少一个第一节点通过所述第一事务关联所述原始表和所述临时表的导入操作,使得所述重分布过程中导入的新的元组同时***到所述原始表和所述临时表中;所述处理模块12还用于通过所述收发模块11发送第三指令给所述至少一个第一节点和所述第二节点,所述第三指令用于指示所述至少一个第一节点和所述第二节点通过所述第二事务根据所述第一事务的事务标识在所述原始表中筛选出旧的元组,并将筛选出的旧的元组重分布至所述临时表中;所述处理模块12还用于在所述第二事务结束后,交换所述原始表与所述临时表的元数据。
可选的,所述处理模块12具体用于通过所述收发模块11发送创建所述原始表和所述临时表的导入操作的关联规则,所述关联规则用于指示所述至少一个第一节点将所述导入的新的元组同时***所述原始表和所述临时表中;或,所述处理模块12具体用于通过所述收发模块11发送创建所述原始表和所述临时表的导入操作的触发器,所述触发器用于所述至少一个第一节点将所述导入的新的元组同时***所述原始表和所述临时表中。
可选的,所述处理模块12用于交换所述原始表与所述临时表的元数据,具体可以包括:所述处理模块12用于通过所述第三事务对所述原始表和所述临时表设置访问排他锁,交换所述原始表与所述临时表的元数据,并修改所述原始表的分布节点信息,修改后的原始表的分布节点信息包括所述至少一个第一节点和所述第二节点的信息。
可选的,所述处理模块11还用于:通过所述第二事务对所述原始表设置访问共享锁,所述访问共享锁用于在所述重分布过程中允许在所述原始表中导入新的元组。
可选的,所述事务标识包括事务快照或事务身份ID。
需要说明的是,本实施例第一指令、第二指令以及第三指令为实现不同操作功能的指令,其中,指令可以为SQL语句、数据库执行计划、指示消息等。
本实施例的数据重分布装置,可以用于执行图2至图4所示方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。
本发明实施例还提供另一种数据库集群中的数据重分布装置,该数据重分布装置的结构可以与图7的内部结构相同,其中数据重分布装置的处理模块用于执行图6所示实施例的方法,以实现数据库集群缩容过程中允许访问和导入新的元组,具体实施方式和实施效果可以参见图6所示实施例,此处不再赘述。
图8为本发明实施例的一种服务器的结构示意图,如图8所示,该服务器可以包括处理器、I/O接口和存储器,其中,该I/O接口,也就是输入输出接口,用于发送数据或指令,处理器通过服务器的内部总线和I/O接口连接,I/O接口再和其他节点和外部设备连接,最终实现处理器、其他节点和外部设备之间的信息传输。本实施例中,该处理器,可以是CPU或者是特定集成电路ASIC(Application Specific Integrated Circuit),或者是被配置成实施本发明实施例的一个或多个集成电路,该存储器用于存储指令。本实施例中,在数据库集群进行扩容或缩容时,处理器调用存储器中的指令,以执行图2至图6所示方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。
在一个实施例中,图7所示的收发模块对应图8所示的I/O接口,图7所示的处理模块对应的图8所示的处理器。
本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上各实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述各实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的范围。
Claims (15)
1.一种数据库集群中的数据重分布方法,所述数据库集群包括至少一个第一节点,所述至少一个第一节点上存储有原始表;其特征在于,所述方法包括:
在所述数据库集群新增第二节点之后,启动数据重分布过程,所述数据重分布过程用于将所述原始表重分布至所述至少一个第一节点和所述第二节点上;其中,所述原始表包括多个元组,每个元组的事务标识为导入所述每个元组的事务的标识;
所述数据重分布过程包括:
启动第一事务,所述第一事务用于在所述至少一个第一节点和所述第二节点上创建临时表,并关联所述原始表和所述临时表的导入操作,使得所述重分布过程中导入的新的元组同时***到所述原始表和所述临时表中;
启动第二事务,所述第二事务用于根据所述第一事务的事务标识在所述原始表中筛选出旧的元组,并将筛选出的旧的元组重分布至所述临时表中;所述第一事务的事务标识大于所述原始表中所述旧的元组的事务标识;
在所述第二事务结束后,交换所述原始表与所述临时表的元数据。
2.根据权利要求1所述的方法,其特征在于,所述根据所述第一事务的事务标识在所述原始表中筛选出旧的元组,并将筛选出的旧的元组重分布至所述临时表中,包括:
分别获取所述原始表中的各个元组的事务标识,其中,事务标识小于所述第一事务的事务标识的元组为所述旧的元组;
将所述旧的元组重分布至所述临时表中。
3.根据权利要求1或2所述的方法,其特征在于,所述关联所述原始表和所述临时表的导入操作,包括:
创建所述原始表和所述临时表的导入操作的关联规则,所述关联规则用于指示将所述导入的新的元组同时***所述原始表和所述临时表中;或,
创建所述原始表和所述临时表的导入操作的触发器,所述触发器用于将所述导入的新的元组同时***所述原始表和所述临时表中。
4.根据权利要求1至3任一项所述的方法,其特征在于,所述交换所述原始表与所述临时表的元数据,包括:
启动第三事务,所述第三事务对所述原始表和所述临时表设置访问排他锁;
交换所述原始表与所述临时表的元数据,并修改所述原始表的分布节点信息,修改后的原始表的分布节点信息包括所述至少一个第一节点和所述第二节点的信息。
5.根据权利要求1至3任一项所述的方法,其特征在于,所述方法还包括:
所述第二事务对所述原始表设置访问共享锁,所述访问共享锁用于在所述重分布过程中允许在所述原始表中导入新的元组。
6.根据权利要求1至5任一项所述的方法,其特征在于,所述事务标识包括事务快照或事务ID。
7.一种数据重分布装置,用于对数据库集群的数据进行重分布,所述数据库集群包括至少一个第一节点,所述至少一个第一节点上存储有原始表;其特征在于,所述数据重分布装置包括:收发模块和处理模块;
所述处理模块,用于在所述数据库集群新增第二节点之后,启动数据重分布过程,所述数据重分布过程用于将所述原始表重分布至所述至少一个第一节点和所述第二节点上;其中,所述原始表包括多个元组,每个元组的事务标识为导入所述每个元组的事务的标识;
所述处理模块还用于,在所述数据重分布过程中:通过所述收发模块发送第一指令给所述至少一个第一节点和所述第二节点,所述第一指令用于指示所述至少一个第一节点和所述第二节点创建临时表,其中,所述临时表是由第一事务创建的,所述第一事务的事务标识大于所述原始表中所述旧的元组的事务标识;通过所述收发模块发送第二指令给所述至少一个第一节点,以及发送第三指令给所述至少一个第一节点和所述第二节点;所述第二指令用于指示所述至少一个第一节点通过所述第一事务关联所述原始表和所述临时表的导入操作,使得所述重分布过程中导入的新的元组同时***到所述原始表和所述临时表中;所述第三指令用于指示所述至少一个第一节点和所述第二节点通过第二事务,以及根据所述第一事务的事务标识在所述原始表中筛选出旧的元组,并将筛选出的旧的元组重分布至所述临时表中;
所述处理模块还用于在所述第二事务结束后,交换所述原始表与所述临时表的元数据。
8.根据权利要求7所述的装置,其特征在于,所述处理模块具体用于通过所述收发模块发送关联规则创建指令,所述关联规则创建指令用于指示所述至少一个第一节点创建所述原始表和所述临时表的导入操作的关联规则,所述关联规则用于指示所述至少一个第一节点将所述导入的新的元组同时***所述原始表和所述临时表中;或,
所述处理模块具体用于通过所述收发模块发送触发器创建指令,所述触发器创建指令用于指示所述至少一个第一节点创建所述原始表和所述临时表的导入操作的触发器,所述触发器用于指示所述至少一个第一节点将所述导入的新的元组同时***所述原始表和所述临时表中。
9.根据权利要求7或8所述的装置,其特征在于,所述处理模块具体用于:
通过所述第三事务对所述原始表和所述临时表设置访问排他锁,交换所述原始表与所述临时表的元数据,并修改所述原始表的分布节点信息,修改后的原始表的分布节点信息包括所述至少一个第一节点和所述第二节点的信息。
10.根据权利要求7至9任一项所述的装置,其特征在于,所述处理模块还用于:
通过所述第二事务对所述原始表设置访问共享锁,所述访问共享锁用于在所述重分布过程中允许在所述原始表中导入新的元组。
11.根据权利要求7至10任一项所述的装置,其特征在于,所述事务标识包括事务快照或事务ID。
12.一种数据库集群,其特征在于,包括:数据重分布装置和至少一个第一节点,所述至少一个第一节点上存储有原始表;
所述数据重分布装置用于,在所述数据库集群新增第二节点之后,启动数据重分布过程,所述数据重分布过程用于将所述原始表重分布至所述至少一个第一节点和所述第二节点上;其中,所述原始表包括多个元组,每个元组的事务标识为导入所述每个元组的事务的标识;
所述数据重分布装置还用于,在所述数据重分布过程中:发送第一指令给所述至少一个第一节点和所述第二节点,所述第一指令用于指示所述至少一个第一节点和所述第二节点创建临时表,其中,所述临时表是由第一事务创建的,所述第一事务的事务标识大于所述原始表中所述旧的元组的事务标识;发送第二指令给所述至少一个第一节点,以及发送第三指令给所述至少一个第一节点和所述第二节点;所述第二指令用于指示所述至少一个第一节点通过所述第一事务关联所述原始表和所述临时表的导入操作,使得所述重分布过程中导入的新的元组同时***到所述原始表和所述临时表中;所述第三指令用于指示所述至少一个第一节点和所述第二节点通过第二事务,以及根据所述第一事务的事务标识在所述原始表中筛选出旧的元组,并将筛选出的旧的元组重分布至所述临时表中;
所述数据重分布装置还用于在所述第二事务结束后,交换所述原始表与所述临时表的元数据。
13.根据权利要求12所述的数据库集群,其特征在于,所述数据重分布装置具体用于:
通过所述第三事务对所述原始表和所述临时表设置访问排他锁,交换所述原始表与所述临时表的元数据,并修改所述原始表的分布节点信息,修改后的原始表的分布节点信息包括所述至少一个第一节点和所述第二节点的信息。
14.根据权利要求12或13所述的数据库集群,其特征在于,所述数据重分布装置为所述至少一个第一节点中的一个。
15.根据权利要求12或13所述的数据库集群,其特征在于,所述数据重分布装置为所述数据库集群的主节点。
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710038202.9A CN108319623B (zh) | 2017-01-18 | 2017-01-18 | 一种数据重分布方法、装置及数据库集群 |
EP18741902.3A EP3564835B1 (en) | 2017-01-18 | 2018-01-02 | Data redistribution method and apparatus, and database cluster |
PCT/CN2018/070005 WO2018133662A1 (zh) | 2017-01-18 | 2018-01-02 | 一种数据重分布方法、装置及数据库集群 |
US16/515,479 US11726984B2 (en) | 2017-01-18 | 2019-07-18 | Data redistribution method and apparatus, and database cluster |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710038202.9A CN108319623B (zh) | 2017-01-18 | 2017-01-18 | 一种数据重分布方法、装置及数据库集群 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108319623A true CN108319623A (zh) | 2018-07-24 |
CN108319623B CN108319623B (zh) | 2021-10-22 |
Family
ID=62891962
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710038202.9A Active CN108319623B (zh) | 2017-01-18 | 2017-01-18 | 一种数据重分布方法、装置及数据库集群 |
Country Status (4)
Country | Link |
---|---|
US (1) | US11726984B2 (zh) |
EP (1) | EP3564835B1 (zh) |
CN (1) | CN108319623B (zh) |
WO (1) | WO2018133662A1 (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110196882A (zh) * | 2019-05-27 | 2019-09-03 | 上海达梦数据库有限公司 | 数据重分布方式的确定方法、装置、服务器及存储介质 |
CN110196854A (zh) * | 2019-06-11 | 2019-09-03 | 中国科学院寒区旱区环境与工程研究所 | 数据处理方法及装置 |
CN110209527A (zh) * | 2018-11-30 | 2019-09-06 | 腾讯科技(深圳)有限公司 | 数据恢复方法、装置、服务器以及存储介质 |
CN111198782A (zh) * | 2018-11-16 | 2020-05-26 | ***通信集团辽宁有限公司 | 数据重分布方法、装置、设备及存储介质 |
CN111291112A (zh) * | 2018-12-07 | 2020-06-16 | 阿里巴巴集团控股有限公司 | 分布式数据库的读写控制方法和装置以及电子设备 |
WO2022001883A1 (zh) * | 2020-06-28 | 2022-01-06 | 中兴通讯股份有限公司 | 一种数据重分布的方法和装置 |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106997378B (zh) * | 2017-03-13 | 2020-05-15 | 上海摩库数据技术有限公司 | 基于Redis的数据库数据聚合同步的方法 |
CN112003929B (zh) * | 2020-08-21 | 2022-05-13 | 苏州浪潮智能科技有限公司 | 一种基于RabbitMQ集群热修复的方法、***、设备及介质 |
US20220058179A1 (en) * | 2020-08-24 | 2022-02-24 | International Business Machines Corporation | Executing database transactions |
CN112732816B (zh) * | 2021-01-09 | 2022-08-02 | 苏州浪潮智能科技有限公司 | 一种数据导出方法和*** |
CN113055476B (zh) * | 2021-03-12 | 2022-07-26 | 杭州网易再顾科技有限公司 | 一种集群式服务***、方法、介质和计算设备 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102521297A (zh) * | 2011-11-30 | 2012-06-27 | 北京人大金仓信息技术股份有限公司 | 无共享数据库集群中实现***动态扩展的方法 |
CN102968503A (zh) * | 2012-12-10 | 2013-03-13 | 曙光信息产业(北京)有限公司 | 数据库***的数据处理方法以及数据库*** |
CN104484472A (zh) * | 2014-12-31 | 2015-04-01 | 天津南大通用数据技术股份有限公司 | 一种混合多种异构数据源的数据库集群及实现方法 |
US20160162283A1 (en) * | 2013-12-02 | 2016-06-09 | Qbase, LLC | Dependency manager for databases |
Family Cites Families (36)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4769772A (en) * | 1985-02-28 | 1988-09-06 | Honeywell Bull, Inc. | Automated query optimization method using both global and parallel local optimizations for materialization access planning for distributed databases |
JPH1196062A (ja) * | 1997-09-19 | 1999-04-09 | Hitachi Ltd | ディレクトリ・アクセス方法 |
US20030105732A1 (en) * | 2000-11-17 | 2003-06-05 | Kagalwala Raxit A. | Database schema for structure query language (SQL) server |
US20050144189A1 (en) * | 2002-07-19 | 2005-06-30 | Keay Edwards | Electronic item management and archival system and method of operating the same |
AU2003273333A1 (en) * | 2002-09-18 | 2004-04-08 | Netezza Corporation | Field oriented pipeline architecture for a programmable data streaming processor |
US7702610B2 (en) * | 2003-09-19 | 2010-04-20 | Netezza Corporation | Performing sequence analysis as a multipart plan storing intermediate results as a relation |
US20070067297A1 (en) * | 2004-04-30 | 2007-03-22 | Kublickis Peter J | System and methods for a micropayment-enabled marketplace with permission-based, self-service, precision-targeted delivery of advertising, entertainment and informational content and relationship marketing to anonymous internet users |
US8010485B1 (en) * | 2005-10-20 | 2011-08-30 | American Megatrends, Inc. | Background movement of data between nodes in a storage cluster |
US7487171B2 (en) * | 2005-12-30 | 2009-02-03 | International Business Machines Corporation | System and method for managing a hierarchy of databases |
US7512621B2 (en) * | 2006-06-14 | 2009-03-31 | International Business Machines Corporation | Moving records between partitions |
US8156082B2 (en) * | 2006-10-06 | 2012-04-10 | Sybase, Inc. | System and methods for temporary data management in shared disk cluster |
US8706914B2 (en) * | 2007-04-23 | 2014-04-22 | David D. Duchesneau | Computing infrastructure |
US20090055418A1 (en) * | 2007-08-21 | 2009-02-26 | Mark Gregory Megerian | Automatic cascading copy operations in a database with referential integrity |
US20100023564A1 (en) * | 2008-07-25 | 2010-01-28 | Yahoo! Inc. | Synchronous replication for fault tolerance |
US9081501B2 (en) * | 2010-01-08 | 2015-07-14 | International Business Machines Corporation | Multi-petascale highly efficient parallel supercomputer |
US8600994B1 (en) * | 2010-09-02 | 2013-12-03 | Teradata Us, Inc. | Performing an outer join between a small table and a large table |
US8356050B1 (en) * | 2011-11-21 | 2013-01-15 | Yahoo! Inc. | Method or system for spilling in query environments |
AU2013214801B2 (en) * | 2012-02-02 | 2018-06-21 | Visa International Service Association | Multi-source, multi-dimensional, cross-entity, multimedia database platform apparatuses, methods and systems |
US20130290234A1 (en) * | 2012-02-02 | 2013-10-31 | Visa International Service Association | Intelligent Consumer Service Terminal Apparatuses, Methods and Systems |
US9195611B2 (en) * | 2012-06-04 | 2015-11-24 | Google Inc. | Efficiently updating and deleting data in a data storage system |
US9152808B1 (en) * | 2013-03-25 | 2015-10-06 | Amazon Technologies, Inc. | Adapting decoy data present in a network |
GB2517787A (en) * | 2013-09-03 | 2015-03-04 | Ibm | Method and system for accessing a set of data tables in a source database |
US10133800B2 (en) * | 2013-09-11 | 2018-11-20 | Microsoft Technology Licensing, Llc | Processing datasets with a DBMS engine |
US20150149444A1 (en) * | 2013-11-27 | 2015-05-28 | General Electric Company | Methods and apparatus to present information from different information systems in a local record |
US9262494B2 (en) * | 2013-12-30 | 2016-02-16 | Microsoft Technology Licensing, Llc | Importing data into dynamic distributed databases |
US9665612B2 (en) * | 2014-05-29 | 2017-05-30 | Sybase, Inc. | Run-time decision of bulk insert for massive data loading |
US10511694B2 (en) * | 2014-07-23 | 2019-12-17 | Citrix Systems, Inc. | Systems and methods for application specific load balancing |
US20160092505A1 (en) * | 2014-09-29 | 2016-03-31 | Yihan SONG | Framework for handling wrapper procedures |
US9959178B2 (en) * | 2014-11-25 | 2018-05-01 | Sap Se | Transactional and parallel log replay for asynchronous table replication |
CN104484469B (zh) * | 2014-12-31 | 2017-12-15 | 天津南大通用数据技术股份有限公司 | 一种支持多hash map数据库集群***不停机的扩容方法 |
US10216781B2 (en) * | 2015-05-29 | 2019-02-26 | Oracle International Corporation | Maintaining cross-node coherence of an in-memory database object in a multi-node database cluster |
US10140313B2 (en) * | 2015-09-27 | 2018-11-27 | International Business Machines Corporation | Parallel processing of large data files on distributed file systems with dynamic workload balancing |
AU2016356736B2 (en) * | 2015-11-20 | 2021-01-21 | Ixup Ip Pty Ltd | "System of shared secure data storage and management" |
US10133770B2 (en) * | 2015-12-16 | 2018-11-20 | EMC IP Holding Company LLC | Copying garbage collector for B+ trees under multi-version concurrency control |
WO2017154063A1 (ja) * | 2016-03-07 | 2017-09-14 | 株式会社日立製作所 | 計算機システムを管理する管理システム及び管理方法 |
US10545815B2 (en) * | 2016-08-03 | 2020-01-28 | Futurewei Technologies, Inc. | System and method for data redistribution in a database |
-
2017
- 2017-01-18 CN CN201710038202.9A patent/CN108319623B/zh active Active
-
2018
- 2018-01-02 WO PCT/CN2018/070005 patent/WO2018133662A1/zh unknown
- 2018-01-02 EP EP18741902.3A patent/EP3564835B1/en active Active
-
2019
- 2019-07-18 US US16/515,479 patent/US11726984B2/en active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102521297A (zh) * | 2011-11-30 | 2012-06-27 | 北京人大金仓信息技术股份有限公司 | 无共享数据库集群中实现***动态扩展的方法 |
CN102968503A (zh) * | 2012-12-10 | 2013-03-13 | 曙光信息产业(北京)有限公司 | 数据库***的数据处理方法以及数据库*** |
US20160162283A1 (en) * | 2013-12-02 | 2016-06-09 | Qbase, LLC | Dependency manager for databases |
CN104484472A (zh) * | 2014-12-31 | 2015-04-01 | 天津南大通用数据技术股份有限公司 | 一种混合多种异构数据源的数据库集群及实现方法 |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111198782A (zh) * | 2018-11-16 | 2020-05-26 | ***通信集团辽宁有限公司 | 数据重分布方法、装置、设备及存储介质 |
CN110209527A (zh) * | 2018-11-30 | 2019-09-06 | 腾讯科技(深圳)有限公司 | 数据恢复方法、装置、服务器以及存储介质 |
CN111291112A (zh) * | 2018-12-07 | 2020-06-16 | 阿里巴巴集团控股有限公司 | 分布式数据库的读写控制方法和装置以及电子设备 |
CN111291112B (zh) * | 2018-12-07 | 2023-04-28 | 阿里巴巴集团控股有限公司 | 分布式数据库的读写控制方法和装置以及电子设备 |
CN110196882A (zh) * | 2019-05-27 | 2019-09-03 | 上海达梦数据库有限公司 | 数据重分布方式的确定方法、装置、服务器及存储介质 |
CN110196882B (zh) * | 2019-05-27 | 2021-06-08 | 上海达梦数据库有限公司 | 数据重分布方式的确定方法、装置、服务器及存储介质 |
CN110196854A (zh) * | 2019-06-11 | 2019-09-03 | 中国科学院寒区旱区环境与工程研究所 | 数据处理方法及装置 |
WO2022001883A1 (zh) * | 2020-06-28 | 2022-01-06 | 中兴通讯股份有限公司 | 一种数据重分布的方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN108319623B (zh) | 2021-10-22 |
EP3564835A4 (en) | 2020-01-15 |
EP3564835A1 (en) | 2019-11-06 |
WO2018133662A1 (zh) | 2018-07-26 |
US20190340171A1 (en) | 2019-11-07 |
US11726984B2 (en) | 2023-08-15 |
EP3564835B1 (en) | 2022-05-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108319623A (zh) | 一种数据重分布方法、装置及数据库集群 | |
US11010358B2 (en) | Data migration method and system | |
US9304815B1 (en) | Dynamic replica failure detection and healing | |
CN107402722B (zh) | 一种数据迁移方法及存储设备 | |
CN108183961A (zh) | 一种基于Redis的分布式缓存方法 | |
CN103929500A (zh) | 一种分布式存储***的数据分片方法 | |
US10712964B2 (en) | Pre-forking replicas for efficient scaling of a distributed data storage system | |
WO2017050064A1 (zh) | 共享内存数据库的内存管理方法及装置 | |
JP2016521427A (ja) | ピアツーピアデータ複製用の方法、デバイス、およびシステム、ならびにマスタノード切替え用の方法、デバイス、およびシステム | |
JP2009237826A (ja) | ストレージシステム及びそのボリューム管理方法 | |
CN109407975B (zh) | 写数据方法与计算节点以及分布式存储*** | |
CN109639773A (zh) | 一种动态构建的分布式数据集群控制***及其方法 | |
CN109977170A (zh) | 一种政务内外网数据同步的方法及*** | |
CN113411363A (zh) | 一种镜像文件的上传方法、相关设备及计算机存储介质 | |
CN107798063A (zh) | 快照处理方法和快照处理装置 | |
CN105760391A (zh) | 数据动态重分布的方法、数据节点、名字节点及*** | |
WO2024148824A1 (zh) | 数据处理方法、***、装置、存储介质及电子设备 | |
WO2024103902A1 (zh) | 一种数据库访问方法、装置、***、设备及可读存储介质 | |
CN113094431A (zh) | 读写分离方法、装置及服务器 | |
WO2023029485A1 (zh) | 数据处理方法、装置、计算机设备及计算机可读存储介质 | |
EP3082050A1 (en) | Mass data fusion storage method and system | |
JP2024514467A (ja) | 地理的に分散されたハイブリッドクラウドクラスタ | |
CN109558205B (zh) | 磁盘访问方法及装置 | |
CN105389368A (zh) | 一种mpp架构数据库集群元数据管理方法 | |
US11943316B1 (en) | Database connection multiplexing for prepared statements |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |