CN111386521A - 在数据库集群中重分布表数据 - Google Patents
在数据库集群中重分布表数据 Download PDFInfo
- Publication number
- CN111386521A CN111386521A CN201880076176.1A CN201880076176A CN111386521A CN 111386521 A CN111386521 A CN 111386521A CN 201880076176 A CN201880076176 A CN 201880076176A CN 111386521 A CN111386521 A CN 111386521A
- Authority
- CN
- China
- Prior art keywords
- tuple
- data
- distributed database
- modifying
- modification
- 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
- 238000000034 method Methods 0.000 claims abstract description 92
- 238000012986 modification Methods 0.000 claims abstract description 53
- 230000004048 modification Effects 0.000 claims abstract description 53
- 230000006870 function Effects 0.000 claims description 21
- 230000015654 memory Effects 0.000 claims description 15
- 230000004044 response Effects 0.000 claims description 13
- 238000004891 communication Methods 0.000 claims description 7
- 230000005055 memory storage Effects 0.000 claims description 5
- 238000013500 data storage Methods 0.000 claims description 3
- 238000005192 partition Methods 0.000 description 22
- 230000008569 process Effects 0.000 description 11
- 238000013519 translation Methods 0.000 description 11
- 238000009826 distribution Methods 0.000 description 7
- 238000012217 deletion Methods 0.000 description 6
- 230000037430 deletion Effects 0.000 description 6
- 238000003780 insertion Methods 0.000 description 6
- 230000037431 insertion Effects 0.000 description 6
- 230000009466 transformation Effects 0.000 description 5
- 238000010586 diagram Methods 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 230000010076 replication Effects 0.000 description 2
- 238000013459 approach Methods 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 238000005315 distribution function Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
Images
Classifications
-
- 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/22—Indexing; Data structures therefor; Storage structures
- G06F16/2282—Tablespace storage structures; Management thereof
-
- 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/24—Querying
- G06F16/245—Query processing
- G06F16/2453—Query optimisation
- G06F16/24532—Query optimisation of parallel queries
-
- 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/24—Querying
- G06F16/245—Query processing
- G06F16/2458—Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
- G06F16/2471—Distributed queries
-
- 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/24—Querying
- G06F16/245—Query processing
- G06F16/2458—Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
- G06F16/2474—Sequence data queries, e.g. querying versioned data
-
- 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
- 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
- G06F16/278—Data partitioning, e.g. horizontal or vertical partitioning
-
- 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/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/284—Relational databases
- G06F16/285—Clustering or classification
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Software Systems (AREA)
- Computational Linguistics (AREA)
- Fuzzy Systems (AREA)
- Mathematical Physics (AREA)
- Probability & Statistics with Applications (AREA)
- Computing Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
一种用于在分布式数据库中重定位数据的计算机实现方法,包括:通过一个或多个处理器在所述分布式数据库中创建第二表,所述第二表包括第一表中的所有列;通过所述一个或多个处理器将第一组元组从所述第一表复制到所述第二表;在所述复制所述第一组元组期间,通过所述一个或多个处理器根据修改对所述第一表中的数据进行修改;在所述复制所述第一组元组之后,通过所述一个或多个处理器根据所述修改对所述第二表中的数据进行修改;通过所述一个或多个处理器在所述分布式数据库的目录中将所述第一表替换为所述第二表。
Description
本申请要求于2017年11月30日递交的发明名称为“在数据库集群中重分布表数据”的第15/827,660号美国非临时专利申请案的在先申请优先权,该在先申请的内容以引入的方式并入本文。
技术领域
本发明涉及数据库集群,在一特定实施例中,涉及在数据库集群中重分布表数据。
背景技术
分布式数据库由数据库群集中的多个节点组成。表数据分为多个分区,每个节点存储一个分区。其中一种分布方法是散列法,以便为每个节点分配一系列哈希值。表数据的每一行都将进行散列处理并存储在分配给所述哈希值的节点上。一个节点最终可能会耗尽存储空间或包含不成比例的数据量(数据倾斜)。由于每个节点以并行方式处理查询,因此所述分布式数据库的响应时间由最缓慢节点控制。因此,当数据分布不均匀时,所述分布式数据库的性能就会受到影响。所述分布式数据库的性能可以通过添加节点来执行,或者在数据倾斜的情况下,可以通过选择不同的哈希函数来执行。
发明内容
现描述各种示例从而以简化的形式引入概念的选择,这些概念将在以下具体实施方式中进行进一步的描述。本发明内容的目的不在于识别权利要求书保护的主题的关键或必要特征,也不在于限制权利要求书保护的主题的范围。
根据本发明的一个方面,提供了一种用于在分布式数据库中重定位数据的计算机实现方法,包括:通过一个或多个处理器在所述分布式数据库中创建第二表,所述第二表包括第一表中的所有列;通过所述一个或多个处理器将第一组元组从所述第一表复制到所述第二表;在所述复制所述第一组元组期间,通过所述一个或多个处理器根据修改对所述第一表中的数据进行修改;在所述复制所述第一组元组之后,通过所述一个或多个处理器根据所述修改对所述第二表中的数据进行修改;通过所述一个或多个处理器,在所述分布式数据库的目录中将所述第一表替换为所述第二表。
可选地,在前述任一实施例中,所述方法还包括:基于第一哈希函数,在所述分布式数据库的节点之间分布所述第一表的数据;其中,将所述第一组元组从所述第一表复制到所述第二表包括:基于不同于所述第一哈希函数的第二哈希函数,在所述分布式数据库的节点之间分布所述第一表的数据。
可选地,在前述任一实施例中,所述根据所述修改对所述第一表中的所述数据进行修改包括:向所述第一表中的所述数据附加元组。
可选地,在前述任一实施例中,所述创建所述第二表包括:使用并非来自所述第一表的附加列创建所述第二表。
可选地,在前述任一实施例中,所述方法还包括:在所述目录中将所述第一表替换为所述第二表之前,丢弃所述附加列。
可选地,在前述任一实施例中,所述方法还包括:创建第三表,以跟踪所述第一表中的删除项;接收从所述第一表中删除第一元组的请求;响应所述请求,向所述第三表添加第二元组,所述第二元组包括所述元组的标识符;其中,所述根据所述修改对所述第一表中的所述数据进行修改包括从所述第一表中的所述数据中删除所述第一元组。
可选地,在前述任一实施例中,所述根据所述修改对所述第二表中的所述数据进行修改包括:基于所述第三表的所述第二元组和所述第二表的第三元组中包括的所述标识符,从所述第二表中删除所述第三元组。
可选地,在前述任一实施例中,所述方法还包括:创建第三表,以跟踪所述第一表中的删除项;接收更新所述第一表中的第一元组的请求,所述请求包括修改数据;响应所述请求:向所述第三表添加第二元组,所述第二元组包括所述第一元组的标识符;向包括所述修改数据的所述第一表附加第三元组;其中,所述根据所述修改对所述第二表中的所述数据进行修改包括:基于所述第三表的所述第二元组和所述第二表的第四元组中包括的所述标识符,从所述第二表中删除所述第四元组;向包括所述修改数据的所述第二表附加第五元组。
可选地,在前述任一实施例中,所述方法还包括:在所述分布式数据库的所述目录中将所述第一表替换为所述第二表之前,锁定所述第一表。
可选地,在前述任一实施例中,所述方法还包括:确定要对所述第二表应用的剩余修改次数;其中,所述锁定所述第一表基于所述修改次数和预先确定的阈值。
可选地,在前述任一实施例中,所述方法还包括:确定要对所述第二表应用的剩余修改次数;基于要对所述第二表应用的所述剩余修改次数和预先确定的阈值,在不锁定所述第一表的情况下对所述第二表应用所述修改的至少一个子集。
根据本发明的一个方面,提供了一种分布式数据库,包括:多个数据存储节点;内存存储器,包括指令;一个或多个处理器,与所述存储器通信,其中所述一个或多个处理器执行所述指令以执行以下操作:在所述分布式数据库中创建第二表,所述第二表包括第一表中的所有列;将第一组元组从所述第一表复制到所述第二表;在所述复制所述第一组元组期间,根据修改对所述第一表中的数据进行修改;在所述复制所述第一组元组之后,根据所述修改对所述第二表中的数据进行修改;在所述分布式数据库的目录中将所述第一表替换为所述第二表。
可选地,在前述任一实施例中,所述一个或多个处理器还执行以下操作:基于第一哈希函数,在所述分布式数据库的节点之间分布所述第一表的数据;其中,将所述第一组元组从所述第一表复制到所述第二表包括:基于不同于所述第一哈希函数的第二哈希函数,在所述分布式数据库的节点之间分布所述第一表的数据。
可选地,在前述任一实施例中,所述根据所述修改对所述第一表中的所述数据进行修改包括:向所述第一表中的所述数据附加元组。
可选地,在前述任一实施例中,所述创建所述第二表包括:使用并非来自所述第一表的附加列创建所述第二表。
可选地,在前述任一实施例中,所述一个或多个处理器还执行以下操作:在所述目录中将所述第一表替换为所述第二表之前,丢弃所述附加列。
可选地,在前述任一实施例中,所述一个或多个处理器还执行以下操作:创建第三表,以跟踪所述第一表中的删除项;接收从所述第一表中删除第一元组的请求;响应所述请求,向所述第三表添加第二元组,所述第二元组包括所述元组的标识符;其中,所述根据所述修改对所述第一表中的所述数据进行修改包括从所述第一表中的所述数据中删除所述第一元组。
可选地,在前述任一实施例中,所述根据所述修改对所述第二表中的所述数据进行修改包括:基于所述第三表的所述第二元组和所述第二表的第三元组中包括的所述标识符,从所述第二表中删除所述第三元组。
可选地,在前述任一实施例中,所述一个或多个处理器还执行以下操作:创建第三表,以跟踪所述第一表中的删除项;接收更新所述第一表中的第一元组的请求,所述请求包括修改数据;响应所述请求:向所述第三表添加第二元组,所述第二元组包括所述第一元组的标识符;向包括所述修改数据的所述第一表附加第三元组;其中,所述根据所述修改对所述第二表中的所述数据进行修改包括:基于所述第三表的所述第二元组和所述第二表的第四元组中包括的所述标识符,从所述第二表中删除所述第四元组;向包括所述修改数据的所述第二表附加第五元组。
根据本发明的一个方面,提供了一种存储用于在分布式数据库中定位数据的计算机指令的非瞬时性计算机可读介质,其中所述计算机指令在由一个或多个处理器执行时使所述一个或多个处理器执行以下步骤:在所述分布式数据库中创建第二表,所述第二表包括第一表中的所有列;将第一组元组从所述第一表复制到所述第二表;在所述复制所述第一组元组期间,根据修改对所述第一表中的数据进行修改;在所述复制所述第一组元组之后,根据所述修改对所述第二表中的数据进行修改;在所述分布式数据库的目录中将所述第一表替换为所述第二表。
在不脱离本发明范围的前提下,任何一个前述示例都可以与任何一个或多个其它前述示例结合以创建新的实施例。
附图说明
图1为一些示例性实施例提供的网络环境中的示例性分布式数据库的图示;
图2为一些示例性实施例提供的用于实现算法和执行方法的数据库节点的电路的框图;
图3为一些示例性实施例提供的用于在数据库集群中重分布表数据的数据库模型的图示;
图4为一些示例性实施例提供的用于在数据库集群中重分布表数据和示例性数据的方法的图示;
图5为一些示例性实施例提供的用于在数据库集群中重分布表数据的方法的图示;
图6为一些示例性实施例提供的用于在数据库集群中重分布表数据的方法的图示;
图7为一些示例性实施例提供的用于在数据库集群中重分布表数据的方法的图示;
图8为一些示例性实施例提供的用于在数据库集群中重分布表数据的方法的图示;
图9为一些示例性实施例提供的用于在数据库集群中重分布表数据的方法的图示;
图10为一些示例性实施例提供的用于在数据库集群中重分布表数据的方法的图示。
具体实施方式
以下结合附图进行详细描述,所述附图是描述的一部分,并通过图解说明的方式示出可以实施本发明的具体实施例。这些实施例将充分详细描述,使本领域技术人员能够实施本发明主题,应该理解的是可以使用其它实施例并且在不脱离本发明的范围的情况下可以做出结构上、逻辑上、电学上的改变。因此,以下描述的示例性实施例并不当作限定,本发明的范围由所附权利要求书界定。
本文所描述的功能或算法可以在一实施例中的软件中实现。所述软件可包含计算机可执行指令,这些计算机可执行指令存储在计算机可读介质上或者计算机可读存储设备上,如一个或多个非瞬时性存储器或其它类型的本地或联网的硬件存储设备。所述软件可在数字信号处理器、专用集成电路(application-specific integrated circuit,简称ASIC)、可编程数据面芯片、现场可编程门阵列(field programmable gate array,简称FPGA)、微处理器或计算机系统上运行的其它类型的处理器上执行,从而将这些计算机系统转换成一个专门编程的机器。
在典型的分布式数据库中,基于表中每个元组的哈希值在计算节点之间分布所述表的数据。元组是数据库中的表项(例如,面向行的数据库中的行、面向列的数据库中的列或面向对象的数据库中的对象)。在某些情况下,所述哈希函数不会在所述计算节点之间均匀地分布所述元组。由于查询在每个计算节点完成其对所述数据的查询之前无法完成,并且处理时间随着元组数目的增加而增加,因此这会延长对所述数据库查询的响应时间。为了解决这个问题,可以使用不同的哈希函数或更改分配给每个计算节点的哈希值集,在所述计算节点之间重分布所述表。使用现有解决方案,在该过程中锁定所述表,从而防止插入或更新所述表中的任何现有行。
使用本文中提出的系统和方法,可以在分布式数据库中重分布表数据,从而大大缩短锁定所述表的时间。当要重分布表(以下称为“旧表”)时,使用所述旧表的列和包含每个元组的唯一标识符的其它系统列来创建新表。修改所述旧表的属性,使得对所述表的所述插入始终向所述旧表附加数据,而不是重复使用通过删除数据创建的空间。创建附加表,以便跟踪在所述重分布过程中从所述旧表中删除的元组的所述唯一标识符,称为删除增量表。在所述重分布过程中,通过删除所述现有元组和插入所述更新后的元组来取代所述旧表中的元组的更新。
将元组从所述旧表复制到所述新表,其中,使用不同的哈希函数或所述数据库节点之间哈希值的不同分布来分布所述新表。在所述复制过程中,可以对所述旧表应用插入、更新和删除。完成所述复制过程之后,从所述新表和所述删除增量表中删除所述删除增量表中指示的元组。由于已向所述旧表附加对所述旧表的插入和更新,因此可以通过从完成第一复制的位置继续,将所述添加的元组从所述旧表复制到所述新表。继续应用删除和复制插入这一过程,直到未应用更改的数目低于预先确定的阈值(例如,1000个元组)。
此时,锁定所述旧表和所述新表,以防其它用户操作进一步更改。对所述新表应用最后一组删除和插入,从所述新表中丢弃所述附加系统列,在所述系统目录中将所述旧表替换为所述新表。所述替换之后,所述新表被解锁,所述旧表被丢弃。
这样,所述表被短暂锁定(通常小于几秒),在所述锁定时间内应用所述最后一组更改,并用所述旧表替换所述新表,从而提高了在所述数据重分布期间所述分布式数据库的用户应用的表的可用性。由于重分布所述数据的用户应用的中断减少,因此使用这种方法的分布式数据库可以提供根据工作负载和数据大小波动的需要频繁调整所述群集大小的能力,同时最大限度地减少用户工作负载的中断。附加地或可替代地,通过使用本文中所描述的一个或多个方法,在执行数据重分布时支持插入、更新和删除操作。
图1为一些示例性实施例提供的网络环境100中的示例性分布式数据库150的图示。所述示例性网络环境100包括通过网络120进行通信的计算机110A和110B。所述分布式数据库150包括数据库节点130A、130B和130C。所述数据库节点130A至130C可以通过所述网络120连接。所述数据库节点130A包括数据库分区140A,所述数据库节点130B包括数据库分区140B,所述数据库节点130C包括数据库分区140C。所述数据库节点130A至130C可以统称为数据库节点130,或者一般称为数据库节点130。所述数据库分区140A至140C可以统称为数据库分区140,或者一般称为数据库分区140。所述计算机110A至110B可以统称为计算机110,或者一般称为计算机110。所述计算机110和所述数据库节点130中的任何一个或多个可以由图2中描述的计算机系统实现。
所述计算机110可以通过所述网络120向所述分布式数据库150发送数据库查询(例如,选择、更新、删除和插入查询)。所述分布式数据库150可以通过单个数据库节点(例如,所述数据库节点130A)接收所述查询。所述接收到的查询可以在所述数据库节点130之间传输,以便鉴于所述相对应的数据库分区140在每个数据库节点130上进行处理。所述数据库节点130的结果被聚合(例如,由所述数据库节点130A)并通过所述网络120提供给所述请求计算机110。所述数据库节点130可以通过所述网络120或另一网络彼此通信。
图2为一些示例性实施例提供的用于实现算法和执行方法的计算机200的电路的框图。不需要在各实施例中使用所有组件。例如,客户端、服务器、自主系统、网络设备和基于云的网络资源可以分别使用不同组的组件,或者例如在服务器的情况下,使用较大的存储设备。
计算机200(也称为数据库节点200、计算设备200和计算机系统200)形式的示例性计算设备可以包括处理器205、内存存储器210、可移动存储器215和不可移动存储器220,它们都通过总线240连接。虽然所述示例计算设备图示并描述为所述计算机200,但在不同实施例中,所述计算设备可以是不同形式的。例如,可替代地,所述计算设备可以是智能手机、平板电脑、智能手表或者包括与结合图2所示和所述元件相同或相似的元件的其它计算设备。智能手机、平板电脑、智能手表等设备通常统称为“移动设备”或“用户设备”。此外,虽然各种数据存储元件被图示为所述计算机200的一部分,但是所述存储器还可以或者可选地包括通过网络例如因特网可访问的基于云的存储器,或者基于服务器的存储器。
所述内存存储器210可以包括易失性存储器245和非易失性存储器250,可以存储程序255。所述计算机200可以包括或访问计算环境。该计算环境包括各种计算机可读介质,如所述易失性存储器245和所述非易失性存储器250、所述可移动存储器215和所述不可移动存储器220。计算机存储器包括随机存取存储器(random access memory,简称RAM)、只读存储器(read-only memory,简称ROM)、可擦除可编程只读存储器(erasable programmableread-only memory,简称EPROM)和电可擦除可编程只读存储器(electrically erasableprogrammable read-only memory,简称EEPROM)、闪存或其它存储器技术、只读光盘(compact disc read-only memory,简称CD ROM)、数字多功能光盘(digital versatiledisk,简称DVD)或其它光盘存储器、盒式磁带、磁带、磁盘存储器或其它磁存储设备,或者任何其它能够存储计算机可读指令的介质。
所述计算机200可以包括或者可以访问计算环境,该计算环境包括输入接口225、输出接口230和通信接口235。所述输出接口230可以连接到或包括诸如触摸屏的显示设备,也可以用作输入设备。所述输入接口225可以连接到或包括以下一种或多种:触摸屏、触摸板、鼠标、键盘、相机、一个或多个设备专用按钮、集成在所述计算机200内或通过有线或无线数据连接耦合到所述计算机200内的一个或多个传感器,以及其它输入设备。所述计算机200可以使用所述通信接口235在联网环境中工作,以连接到一个或多个远程计算机,如数据库服务器。所述远程计算机可以包括个人计算机(personal computer,简称PC)、服务器、路由器、交换机、网络PC、对等设备或其它公共网络节点等。所述通信接口235可以连接到局域网(local-area network,简称LAN)、广域网(wide-area network,简称WAN)、蜂窝网络、WiFi网络、蓝牙网络或其它网络。
虽然所述显示计算机200被视为具有每种元件205至270中的单一种元件,但每种元件可能有多个。例如,可能存在多个处理器205、多个输入接口225、多个输出接口230和多个通信接口235。在一些示例性实施例中,不同的通信接口235连接到不同的网络。
存储在计算机可读介质上的计算机可读指令(例如,存储在所述内存存储器210中的所述程序255)可由所述计算机200的所述处理器205执行。硬盘驱动器、CD-ROM和RAM是包括如存储设备的非瞬时性计算机可读介质的部件的一些示例。“计算机可读介质”和“存储设备”这两个术语不包括在载波被认为过于短暂的情况下的载波。“计算机可读非瞬时性介质”包括所有类型的计算机可读介质,包括磁存储介质、光存储介质、闪存介质和固态存储介质。应当理解的是,软件可以安装在计算机中并与其一起销售。可替代地,可以获得该软件并将其加载到所述计算机中,包括通过物理介质或分布系统获得所述软件,例如包括从软件创建者拥有的服务器或者从软件创建者未拥有却使用的服务器获得所述软件。例如,所述软件可以存储在服务器上以便通过因特网分发。
所述程序255被示为包括存储模块260、重分布模块265和查询执行模块270。可以使用硬件(例如,机器的处理器、ASIC、FPGA或其任何合适的组合)来实现本文中所描述的任何一个或多个所述模块。此外,这些模块中的任意两个或多个可以组合为单个模块,本文中所描述的用于单个模块的功能可以在多个模块之间细分。此外,根据各种示例性实施例,本文中所描述的在单个机器、数据库或设备中实现的模块可以分布在多个机器、数据库或设备中。
所述存储模块260确定何时以影响性能的方式跨多个数据库节点对数据进行分区。所述确定可以基于IO请求的平均数目和平均响应时间、表的最大数据库分区和最小数据库分区之间的差值(超出预先确定的阈值(例如,50%))或其任何合适的组合来进行。
所述重分布模块265在数据库节点之间重分布数据。可以执行所述重分布,以响应由所述存储模块260进行的确定,即当前数据分布将影响性能。所述存储模块260确定元组的哈希值,基于所述哈希值将元组分配给数据库节点。
所述数据库节点130的所述查询执行模块270从所述分布式数据库150的客户端或从所述分布式数据库150的其它数据库节点130接收查询。所述查询执行模块270针对所述数据库节点130的所述数据库分区140执行所述接收到的查询,提供响应结果、向所述数据库分区添加、删除所述数据库分区中的数据或其任何合适的组合。
图3为一些示例性实施例提供的用于在数据库集群中重分布表数据的数据库模型300的图示。所述数据库模型300包括使用原始数据表字段320的原始数据表310、使用所述原始数据表字段320和唯一定位符字段340的转换数据表330以及包括所述唯一定位符字段340的删除数据表350。
所述原始数据表310可以是将在数据库节点之间重新分区的数据表。所述转换数据表330可以是为了在所述重新分区过程中存储所述数据而创建的数据表。所述转换数据表330可以存储使用所述原始数据字段320的所述原始数据表310中的元组,还可以存储所述唯一定位符字段340中的每个元组的唯一定位符。所述删除数据表350存储在所述重新分区过程中从所述原始数据表310中删除的元组的所述唯一定位符。
图4为一些示例性实施例提供的用于在数据库集群中重分布表数据和示例性数据的方法400的图示。所述方法400包括操作455、460、465、470、475、480和495,所述示出的操作与原始表的状态405A、405B、405C和405D、删除增量表的状态420、435和450以及新表的状态410A、410B、410C和410D大致对齐。附加地,还示出了删除的元组415、430和445以及附加的元组块425和440。
当所述方法400开始时,所述原始表处于状态405A,元组415尚未被删除。在操作455中,将状态405A的现有元组复制到所述新表,将所述新表置于状态410A。在重定位所述现有元组期间,删除所述元组415(例如,通过应用或用户交互),向所述删除增量表添加所述元组415的标识符,将所述删除增量表置于状态420。可以不同于所述旧表的方式将所述新表的所述元组分布在所述数据库节点之间。例如,可以在每个元组上使用不同的哈希函数来确定要存储所述元组的节点。
在操作460中,合并删除更改,致使从所述新表中删除所述元组415,如状态410B所示。此外,由于不再需要从所述新表中删除所述元组415的标识符,因此将其从所述删除增量表中删除。在操作455和460期间,将元组作为附加元组块425插入了所述旧表。
在操作465中,将在操作455至460期间插入所述旧表的所述数据重定位到所述新表,如状态410B所示。但是,在操作465期间,从所述旧表中删除所述元组430,向所述删除增量表添加所述元组430的标识符,将所述删除增量表置于状态435。
在操作470中,再次合并所述删除数据,致使从所述新表中删除所述元组430,如状态410C所示。与操作460中一样,从所述删除增量表中删除从所述新表中删除的所述元组的所述标识符。在操作465和470期间,将所述元组作为附加元组块440插入所述旧表。附加地,从所述旧表中删除所述元组445,将所述元组445的标识符插入所述删除增量表,将所述删除增量表置于状态450。
尽管操作460和465在所述方法400中重复一次(作为操作470和475),但操作460和465可以重复任何次数。每次迭代中从所述旧表中添加和删除的元组的数目可能随所述旧表大小的变化而变化,但也取决于所述迭代中消耗的时间。例如,如果所述方法400开始时所述原始表较大(例如,包含数百万个元组),则所述操作455可能需要相对较长的时间(例如,10分钟),在此期间一些元组将被添加和删除。但是,与整个表的大小相比,所述添加和删除的元组的数目可能较小(例如,1%)。因此,与操作455所花费的时间相比,操作460和465的第一次迭代将花费较少时间(例如,1%)。由于与操作455相比,操作460和465的所述第一次迭代花费的时间较少,因此与在操作455期间添加和删除的元组的数目相比,在所述第一次迭代期间添加和删除的元组的数目将较小(例如,前一数目的1%或所述原始表大小的0.01%)。因此,操作460和465的每次迭代都可能比前一次迭代更快,合并和重定位的元组也更少。经过预先确定的数目的迭代之后或当要插入和删除的元组的数目小于预先确定的阈值时,所述方法400继续进行操作480。
在操作480中,锁定所述新表和所述旧表,从而防止这两个表被修改。在操作485中,合并最终删除增量,从所述新表中删除由所述删除增量表标识的任何元组,将所述新表置于状态410D。操作480完成后,所述新表包含与所述旧表相同的数据,但已根据新的分布函数分布在所述数据库节点之间。可以丢弃所述旧表,启用所述新表代替所述旧表,解除所述锁定。这样,该表的锁定时间远远短于先前方法所需要的时间。
图5为一些示例性实施例提供的用于在数据库集群中重分布表数据的方法500的图示。所述方法500与所述方法400类似,但包括了附加细节。所述方法500包括操作505、510、515、520、525、530、535、540、545、550、555和560。作为示例而非限制,所述方法500被描述为由上述结合图2的所述计算机200的元件执行,所述计算机200使用所述数据库模型300作为所述分布式数据库150的一部分进行操作。
在操作505中,所述重分布模块265创建一个新表,所述新表类似于所述要使用附加系统用列(不在所述要重分布的表中)和相应索引来重分布的表。例如,所述要重分布的表可以是包含由所述原始数据字段320组成的元组的所述原始数据表310。在操作505中,可以创建所述转换数据表330,所述转换数据表330包括由所述原始数据字段320和所述唯一定位符字段340组成的元组,所述唯一定位符字段340可以是所述转换数据表330的索引字段。
在操作510中,所述重分布模块265将所述原始表310切换为仅附加模式,禁用所述原始表上的垃圾回收操作。将所述原始表310切换到仅附加模式确保将向所述表附加插入所述原始表310中的任何新元组,而不是重复使用通过删除所述表中的元组来释放的空间。禁用所述原始表310上的垃圾回收确保从所述表中删除的任何元组保持不变,而不是被重新使用或导致其它元组被移动。
在操作515中,所述重分布模块265创建至少包含所述附加系统用列的影子表。例如,可以创建所述删除数据表350,存储由所述唯一定位符字段340组成的元组。
在操作520中,所述重分布模块265启用规则以将更新语句转换为删除,然后插入所述原始表310。因此,更新语句不会修改处于就位状态的所述原始表310的元组,相反将会删除所述现有元组并插入所述修改后的元组。由于在操作510中所述原始表310被切换到仅附加模式,因此所述修改后的元组将被附加到所述表的末端。
在操作525中,所述重分布模块265将start_ctid变量初始化为0。所述start_ctid变量指示开始将元组重定位到所述转换数据表330的所述原始表310中的起始偏移量。
在操作530中,所述重分布模块265确定要移动的元组的数目是否超出阈值(例如,1000个元组)。可以通过从所述原始表310中的当前最高元组记录偏移量减去start_ctid来确定所述要移动的元组的数目。在一些示例性实施例中,操作530检查以查看这是否是操作530至545的所述第一次迭代。在这些示例性实施例中,所述方法500继续进行操作535,而不管在所述第一次迭代期间要移动的元组的数量。
每个表可以划分为多个分区,每个分区使用单独的存储空间(例如,通过存储在不同的数据库节点上)。可以使用(highest_offset–start_ctid)/record_size来确定要为分区移动的元组的数目。在操作525中,start_ctid被设置为0。因此,该方程简化为max_ctid=max(highest_offset of each partition/record_size)。当sum(record_to_be_moved_of_each_partition)>阈值时,操作530的所述阈值可应用于所述整个表。由于在重分布期间可以连续更新所述旧表,因此在每次迭代期间,一个或多个分区的highest_offset可能会发生更改。如果超出所述阈值,则所述方法500继续进行操作535,否则接下来将执行操作550。
在操作535中,所述重分布模块265基于系统负载和配置设置end_ctid变量。根据end_ctid和start_ctid之间的差值确定当前迭代中要移动的元组的数目。相应地,可以将end_ctid设置为大于start_ctid的预先确定的数目(例如,1000),或者基于所述分布式数据库150的当前使用率动态确定(例如,如果当前使用率较低,则设置为较大值;如果当前使用率较高,则设置为较低值)。作为另一示例,可以将所述要移动的元组的数目设置为所述表的分段中的元组的数目。例如,在一些示例性实施例中,end_ctid=start_ctid+min(predetermined_threshnold_number_of_rows/number_of_partitions_in_table,maximum_segment_size/record_size)。
在操作540中,所述重分布模块265调用数据移动事务。例如,可以将从start_ctid到end_ctid范围内的元组从所述原始表310重定位到所述转换表330。附加地,可以从所述转换表330中删除在所述删除增量表中指示的任何元组。
在操作545中,所述重分布模块265将所述start_ctid变量设置为所述end_ctid变量的所述值。因此,当所述方法500再次将元组从所述原始表310复制到所述转换表330时,所述复制将从最后一个未复制的元组开始。在操作545之后,所述方法500返回至所述操作530。
重复操作530至545,直到所述要移动的元组的数目不再超出所述阈值,此时所述方法500继续进行操作550。
在操作550中,所述重分布模块265锁定所述原始表310和所述新表(例如,所述转换表330)并调用所述数据移动事务。由于所述表已锁定,因此在所述数据移动事务期间无法在所述两个表之间创建新的差值,在所述数据移动事务完成后,所述新表将包含所述旧表的准确副本。在操作555中,所述重分布模块265将end_ctid设置为等于max_ctid,其中max_ctid是所述原始表310中最后一个元组的标识符。
在操作560中,所述重分布模块265丢弃所述原始表310,在目录中用所述新表(例如,所述转换表330)替换所述原始表310。该替换将导致使用所述原始表的名称来访问所述新表的未来查询。更新所述目录之后,解除所述锁定。
图6为一些示例性实施例提供的用于在数据库集群中重分布表数据的方法600的图示。所述方法600包括操作610、620、630、640和650。作为示例而非限制,所述方法600被描述为由上述结合图2的所述计算机200的元件执行,所述计算机200使用所述数据库模型300作为所述分布式数据库150的一部分进行操作。所述方法600是图4中示出的操作460和465以及图5中示出的操作540的示例性实现。
在操作610中,所述重分布模块265获取start_ctid和end_ctid的值,即用于数据移动的当前迭代的所述表分区的起始偏移量和结束偏移量。
在操作620中,所述重分布模块265确定start_ctid是否小于end_ctid。如果是,则表明存在要移动的元组,所述方法600将继续进行操作630。否则,跳过操作630,所述方法600将继续进行操作640。
在操作630中,所述重分布模块265使用“INSERT INTO NEW_TABLE SELECT*,GENERATE-ORIGINAL-TUPLEID()FROM ORIGINAL_TABLE WHERE CTID>START_CTID ANDCTID<=END_CTID”将有效元组移至所述新表。在该示例中,NEW_TABLE对应于所述转换表330,ORIGINAL_TABLE对应于所述原始表310,GENERATE-ORIGINAL-TUPLEID()是为元组生成唯一值的函数(例如,存储所述原始表中的所述元组的数据文件中的元组的偏移量)。可以将所述元组的所述唯一值存储在所述唯一定位符字段340中。
在操作640中,所述重分布模块265使用“DELETE FROM NEW_TABLE AS NUSINGDELETE_TEMP AS O WHERE N.TUPLEID=O.TUPLEID”删除所述新表中的增量删除元组。在该示例中,NEW_TABLE对应于所述转换表330,DELETE_TEMP对应于所述删除数据表350,TUPLEID字段对应于所述唯一定位符字段340。所述重分布模块265在操作650中删除所述删除增量表中的所述应用的增量删除记录。
图7为一些示例性实施例提供的用于在数据库集群中重分布表数据的方法700的图示。所述方法700包括操作710、720和730。作为示例而非限制,所述方法700被描述为由上述结合图2的所述计算机200的元件执行,所述计算机200使用所述数据库模型300作为所述分布式数据库150的一部分进行操作。所述方法700处理在执行一个或多个所述方法400、500和600期间删除所述原始表310中的元组的命令。
在操作710中,所述查询执行模块270接收删除所述原始表310中的元组的命令。在操作720中,所述查询执行模块270将所述原始表310中的所述元组标记为已删除,但使所述元组占用的时隙不可用。因此,在操作720之后,所述原始表310的未来查询将忽略所述已删除的元组,但所述元组占用的物理存储不会被任何其它元组重用。
在操作730中,将所述元组的所述唯一标识符插入所述删除增量表中。所述唯一标识符可以对应于所述元组的物理存储位置。所述方法700完成之后,所述原始表310上的未来查询将返回正确的结果,因为所述元组已被删除。附加地,由于所述元组的所述唯一标识符已被添加到所述删除增量表,因此当所述方法600被调用时,所述方法600的操作640将正确地删除所述转换表330中的所述元组。
图8为一些示例性实施例提供的用于在数据库集群中重分布表数据的方法的图示。所述方法800包括操作810、820和830。作为示例而非限制,所述方法800被描述为由上述结合图2的所述计算机200的元件执行,所述计算机200使用所述数据库模型300作为所述分布式数据库150的一部分进行操作。所述方法800处理在执行一个或多个所述方法400、500和600期间更新所述原始表310中的元组的命令。
在操作810中,所述查询执行模块270接收更新所述原始表310中的元组的命令。所述更新所述元组的命令包括修改数据(例如,所述元组的成员的更新值)。在操作820中,所述查询执行模块270将所述原始表310中的所述元组标记为已删除,但使所述元组占用的所述时隙不可用。操作820可以通过执行所述方法700来实现。因此,在操作820之后,所述原始表310的未来查询将忽略所述已删除的元组,但所述元组占用的物理存储不会被任何其它元组重用。
在操作830中,所述查询执行模块270向所述原始表310附加具有所述更新值的元组。所述更新值包括所述修改数据。所述方法800完成之后,所述原始表310上的未来查询将返回正确的结果,因为所述元组的唯一现存副本为所述更新后的元组。附加地,由于所述更新后的元组已被附加到所述原始表310,因此当所述方法600被调用时,所述方法600的操作630将所述更新后的元组正确地复制到所述转换表330。
图9为一些示例性实施例提供的用于在数据库集群中重分布表数据的方法900的图示。所述方法900包括操作910和920。作为示例而非限制,所述方法900被描述为由上述结合图2的所述计算机200的元件执行,所述计算机200使用所述数据库模型300作为所述分布式数据库150的一部分进行操作。所述方法900可用于在所述分布式数据库150的所述数据库节点130之间分布元组。
在操作910中,所述存储模块260将元组哈希到桶中。例如,可以对所述元组的二进制数据表示进行哈希处理,以生成所述元组的哈希值。将哈希值的范围分配给每个桶,将具有所述范围内的哈希值的元组置于桶中。
在操作920中,所述存储模块260基于桶大小和节点配置中的一个或多个将桶分配给数据库节点。例如,与功能相对较小的节点相比,可能会向功能相对较大的节点(例如,具有更多处理器、更快存储接入、更大超速缓存内存或其任何合适的组合的节点)分配更多桶。作为另一示例,可以向一个节点分配包含较少元组的多个桶,而向另一节点分配包含较多元组的单个桶。可以将向一节点分配的所述桶中的元组存储在该节点上。通过比较将哈希范围直接分配给节点的现有方法(例如,通过创建与节点相同数目的桶和向每个节点分配一个桶),所述方法900允许以高效的方式在分布式数据库150的所述数据库节点130之间分布数据,即使所述哈希函数生成大小不均的桶依然如此。
图10为一些示例性实施例提供的用于在数据库集群中重分布表数据的方法1000的图示。所述方法1000包括操作1010、1020、1030、1040和1050。作为示例而非限制,所述方法1000被描述为由上述结合图2的所述计算机200的元件执行,所述计算机200使用所述数据库模型300作为所述分布式数据库150的一部分进行操作。
在操作1010中,所述重分布模块265在分布式数据库中创建第二表,所述第二表包括第一表中的所有列。在操作1020中,所述重分布模块265将第一组元组从所述第一表复制到所述第二表。例如,所述第一组元组可以是:固定数目的元组(例如,1000个元组);所述操作1020开始时所述第一列中的所有元组;或者基于所述分布式数据库的负载选择的多个元组。可以不同于所述第一个表的元组的方式将所述第二个表的元组分布在所述分布式数据库的节点之间。例如,可以使用不同的哈希函数来生成所述分布,可以向所述节点分配不同的哈希范围,可以使用不同数目的哈希桶,可以使用哈希桶到节点的不同分布,或者它们的任何合适的组合。
在操作1030中,所述查询执行模块270在所述复制所述第一组元组期间,根据修改对所述第一表中的数据进行修改(例如,所述第一数据表的一个或多个元组的插入、删除或更新)。在操作1040中,在所述复制所述第一组元组之后,所述重分布模块265根据所述修改对所述第二表中的数据进行修改。在操作1050中,所述重分布模块265在所述分布式数据库的目录中将所述第一表替换为所述第二表。在所述替换之后,将针对所述第二表执行针对所述第一表的进一步修改。
虽然上文详细描述了几个实施例但是可能进行其它修改。例如为了获得期望的结果附图中描绘的逻辑流不需要按照所示的特定顺序或者先后顺序。可以在所描述的流程中提供其它步骤或者从所描述的流程中去除步骤,所描述的系统中可以添加或移除其它组件。其它实施例可以在所附权利要求书的范围内。
Claims (20)
1.一种用于在分布式数据库中重定位数据的计算机实现方法,其特征在于,包括:
通过一个或多个处理器在所述分布式数据库中创建第二表,所述第二表包括第一表中的所有列;
通过所述一个或多个处理器将第一组元组从所述第一表复制到所述第二表;
在所述复制所述第一组元组期间,通过所述一个或多个处理器根据修改对所述第一表中的数据进行修改;
在所述复制所述第一组元组之后,通过所述一个或多个处理器根据所述修改对所述第二表中的数据进行修改;
通过所述一个或多个处理器,在所述分布式数据库的目录中将所述第一表替换为所述第二表。
2.根据权利要求1所述的方法,其特征在于,还包括:
基于第一哈希函数,在所述分布式数据库的节点之间分布所述第一表的数据;
其中,将所述第一组元组从所述第一表复制到所述第二表包括:基于不同于所述第一哈希函数的第二哈希函数,在所述分布式数据库的节点之间分布所述第一表的数据。
3.根据权利要求1所述的方法,其特征在于,所述根据所述修改对所述第一表中的所述数据进行修改包括:向所述第一表中的所述数据附加元组。
4.根据权利要求1所述的方法,其特征在于,所述创建所述第二表包括:使用并非来自所述第一表的附加列创建所述第二表。
5.根据权利要求4所述的方法,其特征在于,还包括:
在所述目录中将所述第一表替换为所述第二表之前,丢弃所述附加列。
6.根据权利要求1所述的方法,其特征在于,还包括:
创建第三表,以跟踪所述第一表中的删除项;
接收从所述第一表中删除第一元组的请求;
响应所述请求,向所述第三表添加第二元组,所述第二元组包括所述元组的标识符;其中,
所述根据所述修改对所述第一表中的所述数据进行修改包括从所述第一表中的所述数据中删除所述第一元组。
7.根据权利要求6所述的方法,其特征在于,所述根据所述修改对所述第二表中的所述数据进行修改包括:
基于所述第三表的所述第二元组和所述第二表的第三元组中包括的所述标识符,从所述第二表中删除所述第三元组。
8.根据权利要求1所述的方法,其特征在于,还包括:
创建第三表,以跟踪所述第一表中的删除项;
接收更新所述第一表中的第一元组的请求,所述请求包括修改数据;
响应所述请求:
向所述第三表添加第二元组,所述第二元组包括所述第一元组的标识符;
向包括所述修改数据的所述第一表附加第三元组;其中,
所述根据所述修改对所述第二表中的所述数据进行修改包括:
基于所述第三表的所述第二元组和所述第二表的第四元组中包括的所述标识符,从所述第二表中删除所述第四元组;
向包括所述修改数据的所述第二表附加第五元组。
9.根据权利要求1所述的方法,其特征在于,还包括:
在所述分布式数据库的所述目录中将所述第一表替换为所述第二表之前,锁定所述第一表。
10.根据权利要求9所述的方法,其特征在于,还包括:
确定要对所述第二表应用的剩余修改次数;其中,
所述锁定所述第一表基于所述修改次数和预先确定的阈值。
11.根据权利要求1所述的方法,其特征在于,还包括:
确定要对所述第二表应用的剩余修改次数;
基于要对所述第二表应用的所述剩余修改次数和预先确定的阈值,在不锁定所述第一表的情况下对所述第二表应用所述修改的至少一个子集。
12.一种分布式数据库,其特征在于,包括:
多个数据存储节点;
内存存储器,包括指令;
一个或多个处理器,与所述存储器通信,其中所述一个或多个处理器执行所述指令以执行以下操作:
在所述分布式数据库中创建第二表,所述第二表包括第一表中的所有列;
将第一组元组从所述第一表复制到所述第二表;
在所述复制所述第一组元组期间,根据修改对所述第一表中的数据进行修改;
在所述复制所述第一组元组之后,根据所述修改对所述第二表中的数据进行修改;
在所述分布式数据库的目录中将所述第一表替换为所述第二表。
13.根据权利要求12所述的分布式数据库,其特征在于,所述一个或多个处理器还执行以下操作:
基于第一哈希函数,在所述分布式数据库的节点之间分布所述第一表的数据;
其中,将所述第一组元组从所述第一表复制到所述第二表包括:基于不同于所述第一哈希函数的第二哈希函数,在所述分布式数据库的节点之间分布所述第一表的数据。
14.根据权利要求12所述的分布式数据库,其特征在于,所述根据所述修改对所述第一表中的所述数据进行修改包括:向所述第一表中的所述数据附加元组。
15.根据权利要求12所述的分布式数据库,其特征在于,所述创建所述第二表包括:使用并非来自所述第一表的附加列创建所述第二表。
16.根据权利要求15所述的分布式数据库,其特征在于,所述一个或多个处理器还执行以下操作:
在所述目录中将所述第一表替换为所述第二表之前,丢弃所述附加列。
17.根据权利要求12所述的分布式数据库,其特征在于,所述一个或多个处理器还执行以下操作:
创建第三表,以跟踪所述第一表中的删除项;
接收从所述第一表中删除第一元组的请求;
响应所述请求,向所述第三表添加第二元组,所述第二元组包括所述元组的标识符;其中,
所述根据所述修改对所述第一表中的所述数据进行修改包括从所述第一表中的所述数据中删除所述第一元组。
18.根据权利要求17所述的分布式数据库,其特征在于,所述根据所述修改对所述第二表中的所述数据进行修改包括:
基于所述第三表的所述第二元组和所述第二表的第三元组中包括的所述标识符,从所述第二表中删除所述第三元组。
19.根据权利要求12所述的分布式数据库,其特征在于,所述一个或多个处理器还执行以下操作:
创建第三表,以跟踪所述第一表中的删除项;
接收更新所述第一表中的第一元组的请求,所述请求包括修改数据;
响应所述请求:
向所述第三表添加第二元组,所述第二元组包括所述第一元组的标识符;
向包括所述修改数据的所述第一表附加第三元组;其中,
所述根据所述修改对所述第二表中的所述数据进行修改包括:
基于所述第三表的所述第二元组和所述第二表的第四元组中包括的所述标识符,从所述第二表中删除所述第四元组;
向包括所述修改数据的所述第二表附加第五元组。
20.一种存储用于在分布式数据库中定位数据的计算机指令的非瞬时性计算机可读介质,其特征在于,所述计算机指令在由一个或多个处理器执行时使所述一个或多个处理器执行以下步骤:
在所述分布式数据库中创建第二表,所述第二表包括第一表中的所有列;
将第一组元组从所述第一表复制到所述第二表;
在所述复制所述第一组元组期间,根据修改对所述第一表中的数据进行修改;
在所述复制所述第一组元组之后,根据所述修改对所述第二表中的数据进行修改;
在所述分布式数据库的目录中将所述第一表替换为所述第二表。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/827,660 | 2017-11-30 | ||
US15/827,660 US11151111B2 (en) | 2017-11-30 | 2017-11-30 | Redistributing table data in a database cluster |
PCT/CN2018/116737 WO2019105267A1 (en) | 2017-11-30 | 2018-11-21 | Redistributing table data in database cluster |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111386521A true CN111386521A (zh) | 2020-07-07 |
CN111386521B CN111386521B (zh) | 2023-10-13 |
Family
ID=66632503
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201880076176.1A Active CN111386521B (zh) | 2017-11-30 | 2018-11-21 | 在数据库集群中重分布表数据 |
Country Status (5)
Country | Link |
---|---|
US (1) | US11151111B2 (zh) |
EP (2) | EP3707614B1 (zh) |
CN (1) | CN111386521B (zh) |
CA (1) | CA3083965C (zh) |
WO (1) | WO2019105267A1 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112181989A (zh) * | 2020-10-12 | 2021-01-05 | 浙江大华技术股份有限公司 | 一种分布式数据库的数据处理方法及装置 |
CN117076465A (zh) * | 2023-10-16 | 2023-11-17 | 支付宝(杭州)信息技术有限公司 | 一种数据关联查询方法及相关设备 |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112882839A (zh) * | 2019-11-29 | 2021-06-01 | 中国移动通信集团设计院有限公司 | 基于kafka的消息处理方法及装置 |
US11544294B2 (en) * | 2020-12-10 | 2023-01-03 | Sap Se | Distributing tables in a distributed database using consolidated grouping sources |
Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1540513A (zh) * | 2003-04-01 | 2004-10-27 | 用于数据库的事务一致变化的跟踪 | |
US20070294266A1 (en) * | 2006-06-15 | 2007-12-20 | International Business Machines Corporation | Management of time-variant data schemas in data warehouses |
US20090019018A1 (en) * | 2007-07-11 | 2009-01-15 | Michael Chaves | Database query table substitution |
US20110082843A1 (en) * | 2008-05-30 | 2011-04-07 | Takehiko Kashiwagi | Database system, method of managing database, database structure, and computer program |
US20120254175A1 (en) * | 2011-04-01 | 2012-10-04 | Eliot Horowitz | System and method for optimizing data migration in a partitioned database |
US20120310991A1 (en) * | 2011-06-01 | 2012-12-06 | Jason Frantz | Systems and methods for reslicing data in a relational database |
CN104798070A (zh) * | 2012-09-28 | 2015-07-22 | 甲骨文国际公司 | 活动跟踪、数据分类和数据库内归档的技术 |
CN104854587A (zh) * | 2012-12-20 | 2015-08-19 | 洛吉奇布洛克斯公司 | 主动数据库查询的维护 |
CN106354548A (zh) * | 2016-08-31 | 2017-01-25 | 天津南大通用数据技术股份有限公司 | 分布式数据库系统中虚拟集群创建、管理方法及装置 |
CN106407308A (zh) * | 2016-08-31 | 2017-02-15 | 天津南大通用数据技术股份有限公司 | 一种分布式数据库的扩容方法及装置 |
US9594780B1 (en) * | 2013-06-28 | 2017-03-14 | EMC IP Holding Company LLC | Database system with user-directed application-side control of data movement among storage tiers |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6122640A (en) * | 1998-09-22 | 2000-09-19 | Platinum Technology Ip, Inc. | Method and apparatus for reorganizing an active DBMS table |
US8473557B2 (en) * | 2010-08-24 | 2013-06-25 | At&T Intellectual Property I, L.P. | Methods and apparatus to migrate virtual machines between distributive computing networks across a wide area network |
US8543538B2 (en) * | 2011-06-01 | 2013-09-24 | Clustrix, Inc. | Systems and methods for redistributing data in a relational database |
US9195780B2 (en) | 2011-09-30 | 2015-11-24 | Oracle International Corporation | Computer user interface including a data grid with a persistent display portion |
CN102521297B (zh) | 2011-11-30 | 2015-09-09 | 北京人大金仓信息技术股份有限公司 | 无共享数据库集群中实现系统动态扩展的方法 |
US9959332B2 (en) | 2015-01-21 | 2018-05-01 | Futurewei Technologies, Inc. | System and method for massively parallel processor database |
US10657116B2 (en) * | 2015-10-19 | 2020-05-19 | Oracle International Corporation | Create table for exchange |
US9805071B1 (en) | 2016-11-10 | 2017-10-31 | Palantir Technologies Inc. | System and methods for live data migration |
US10528592B2 (en) * | 2018-01-04 | 2020-01-07 | Sap Se | Database scaling for multi-tenant applications |
-
2017
- 2017-11-30 US US15/827,660 patent/US11151111B2/en active Active
-
2018
- 2018-11-21 CN CN201880076176.1A patent/CN111386521B/zh active Active
- 2018-11-21 CA CA3083965A patent/CA3083965C/en active Active
- 2018-11-21 EP EP18883437.8A patent/EP3707614B1/en active Active
- 2018-11-21 WO PCT/CN2018/116737 patent/WO2019105267A1/en unknown
- 2018-11-21 EP EP24155712.3A patent/EP4339798A3/en active Pending
Patent Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1540513A (zh) * | 2003-04-01 | 2004-10-27 | 用于数据库的事务一致变化的跟踪 | |
US20070294266A1 (en) * | 2006-06-15 | 2007-12-20 | International Business Machines Corporation | Management of time-variant data schemas in data warehouses |
US20090019018A1 (en) * | 2007-07-11 | 2009-01-15 | Michael Chaves | Database query table substitution |
US20110082843A1 (en) * | 2008-05-30 | 2011-04-07 | Takehiko Kashiwagi | Database system, method of managing database, database structure, and computer program |
US20120254175A1 (en) * | 2011-04-01 | 2012-10-04 | Eliot Horowitz | System and method for optimizing data migration in a partitioned database |
US20120310991A1 (en) * | 2011-06-01 | 2012-12-06 | Jason Frantz | Systems and methods for reslicing data in a relational database |
CN104798070A (zh) * | 2012-09-28 | 2015-07-22 | 甲骨文国际公司 | 活动跟踪、数据分类和数据库内归档的技术 |
CN104854587A (zh) * | 2012-12-20 | 2015-08-19 | 洛吉奇布洛克斯公司 | 主动数据库查询的维护 |
US9594780B1 (en) * | 2013-06-28 | 2017-03-14 | EMC IP Holding Company LLC | Database system with user-directed application-side control of data movement among storage tiers |
CN106354548A (zh) * | 2016-08-31 | 2017-01-25 | 天津南大通用数据技术股份有限公司 | 分布式数据库系统中虚拟集群创建、管理方法及装置 |
CN106407308A (zh) * | 2016-08-31 | 2017-02-15 | 天津南大通用数据技术股份有限公司 | 一种分布式数据库的扩容方法及装置 |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112181989A (zh) * | 2020-10-12 | 2021-01-05 | 浙江大华技术股份有限公司 | 一种分布式数据库的数据处理方法及装置 |
CN117076465A (zh) * | 2023-10-16 | 2023-11-17 | 支付宝(杭州)信息技术有限公司 | 一种数据关联查询方法及相关设备 |
CN117076465B (zh) * | 2023-10-16 | 2024-04-05 | 支付宝(杭州)信息技术有限公司 | 一种数据关联查询方法及相关设备 |
Also Published As
Publication number | Publication date |
---|---|
US11151111B2 (en) | 2021-10-19 |
US20190163773A1 (en) | 2019-05-30 |
EP3707614A4 (en) | 2020-11-25 |
EP4339798A2 (en) | 2024-03-20 |
CA3083965C (en) | 2023-07-04 |
WO2019105267A1 (en) | 2019-06-06 |
EP3707614B1 (en) | 2024-03-20 |
CN111386521B (zh) | 2023-10-13 |
CA3083965A1 (en) | 2019-06-06 |
EP3707614A1 (en) | 2020-09-16 |
EP4339798A3 (en) | 2024-06-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111386521B (zh) | 在数据库集群中重分布表数据 | |
CN108132949B (zh) | 数据库集群中数据迁移的方法及装置 | |
US11797498B2 (en) | Systems and methods of database tenant migration | |
US11341139B2 (en) | Incremental and collocated redistribution for expansion of online shared nothing database | |
US11556501B2 (en) | Determining differences between two versions of a file directory tree structure | |
US11442961B2 (en) | Active transaction list synchronization method and apparatus | |
US10606865B2 (en) | Database scale-out | |
US11372845B2 (en) | In-place load unit conversion | |
US8620924B2 (en) | Refreshing a full-text search index in a partitioned database | |
CN110134335B (zh) | 一种基于键值对的rdf数据管理方法、装置及存储介质 | |
US11675743B2 (en) | Web-scale distributed deduplication | |
US11726743B2 (en) | Merging multiple sorted lists in a distributed computing system | |
US20170177473A1 (en) | Garbage collection scope detection for distributed storage | |
US10162841B1 (en) | Data management platform | |
CN111459913B (zh) | 分布式数据库的容量扩展方法、装置及电子设备 | |
US10817204B1 (en) | Migration of versioned data between storage devices | |
US11347709B2 (en) | Hierarchical metadata enhancements for a memory management system | |
US9063773B2 (en) | Automatic parallelism tuning for apply processes | |
Blöcher et al. | ROME: All Overlays Lead to Aggregation, but Some Are Faster than Others | |
US11768853B2 (en) | System to copy database client data | |
Tulkinbekov et al. | Deduplication Adapted CaseDB for Edge Computing | |
CN118035260A (zh) | 数据更新方法、装置、计算机可读存储介质和电子设备 |
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 |