CN116975053A - 一种数据处理方法、装置、设备、介质及程序产品 - Google Patents
一种数据处理方法、装置、设备、介质及程序产品 Download PDFInfo
- Publication number
- CN116975053A CN116975053A CN202310603380.7A CN202310603380A CN116975053A CN 116975053 A CN116975053 A CN 116975053A CN 202310603380 A CN202310603380 A CN 202310603380A CN 116975053 A CN116975053 A CN 116975053A
- Authority
- CN
- China
- Prior art keywords
- data
- original table
- node group
- node
- database system
- 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.)
- Pending
Links
- 238000003672 processing method Methods 0.000 title claims abstract description 32
- 238000000034 method Methods 0.000 claims abstract description 132
- 238000003860 storage Methods 0.000 claims description 197
- 238000007405 data analysis Methods 0.000 claims description 120
- 238000012545 processing Methods 0.000 claims description 119
- 230000008569 process Effects 0.000 claims description 70
- 230000008859 change Effects 0.000 claims description 41
- 238000012217 deletion Methods 0.000 claims description 30
- 230000037430 deletion Effects 0.000 claims description 30
- 238000004590 computer program Methods 0.000 claims description 19
- 238000007499 fusion processing Methods 0.000 claims description 2
- 238000012986 modification Methods 0.000 claims 1
- 230000004048 modification Effects 0.000 claims 1
- 238000007726 management method Methods 0.000 description 32
- 230000006870 function Effects 0.000 description 25
- 238000004422 calculation algorithm Methods 0.000 description 16
- 238000010586 diagram Methods 0.000 description 16
- 238000013500 data storage Methods 0.000 description 11
- 238000005457 optimization Methods 0.000 description 10
- 238000004458 analytical method Methods 0.000 description 9
- 238000004364 calculation method Methods 0.000 description 8
- 230000008602 contraction Effects 0.000 description 8
- 238000009826 distribution Methods 0.000 description 8
- 238000005516 engineering process Methods 0.000 description 7
- 238000004891 communication Methods 0.000 description 6
- 238000013473 artificial intelligence Methods 0.000 description 5
- 238000005192 partition Methods 0.000 description 5
- 230000009286 beneficial effect Effects 0.000 description 4
- 238000013523 data management Methods 0.000 description 4
- 238000002955 isolation Methods 0.000 description 4
- 230000009467 reduction Effects 0.000 description 4
- 230000010076 replication Effects 0.000 description 4
- 230000001360 synchronised effect Effects 0.000 description 4
- 239000002253 acid Substances 0.000 description 3
- 239000000306 component Substances 0.000 description 3
- 230000008713 feedback mechanism Effects 0.000 description 3
- 239000012634 fragment Substances 0.000 description 3
- 230000003993 interaction Effects 0.000 description 3
- 210000001503 joint Anatomy 0.000 description 3
- 238000010801 machine learning Methods 0.000 description 3
- 238000002360 preparation method Methods 0.000 description 3
- 230000001960 triggered effect Effects 0.000 description 3
- 238000013135 deep learning Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 238000000638 solvent extraction Methods 0.000 description 2
- 238000012384 transportation and delivery Methods 0.000 description 2
- 230000004931 aggregating effect Effects 0.000 description 1
- 230000002776 aggregation Effects 0.000 description 1
- 238000004220 aggregation Methods 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 230000015556 catabolic process Effects 0.000 description 1
- 230000009956 central mechanism Effects 0.000 description 1
- 230000001427 coherent effect Effects 0.000 description 1
- 238000012790 confirmation Methods 0.000 description 1
- 239000008358 core component Substances 0.000 description 1
- 238000007418 data mining Methods 0.000 description 1
- 238000004141 dimensional analysis Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 230000004927 fusion Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 238000005304 joining Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000003058 natural language processing Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000002688 persistence Effects 0.000 description 1
- 238000013439 planning Methods 0.000 description 1
- 238000011897 real-time detection Methods 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 230000008439 repair process Effects 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 230000011218 segmentation Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000007619 statistical method Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000026676 system process Effects 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
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/21—Design, administration or maintenance of databases
- G06F16/215—Improving data quality; Data cleansing, e.g. de-duplication, removing invalid entries or correcting typographical errors
-
- 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/21—Design, administration or maintenance of databases
- G06F16/217—Database tuning
-
- 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
-
- 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/25—Integrating or interfacing systems involving database management systems
-
- 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1095—Replication or mirroring of data, e.g. scheduling or transport for data synchronisation between network nodes
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Software Systems (AREA)
- Quality & Reliability (AREA)
- Computing Systems (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请实施例提供了一种数据处理方法、装置、设备、介质及程序产品,其中的方法包括:获取数据库***中的第一原始表;获取第一原始表对应的镜像表,并将第一原始表中的数据移动至镜像表;按照重分配规则对镜像表中的数据重分配至数据库***中的第二节点组;基于重分配后的镜像表生成第二原始表。采用本申请实施例能够实现在线重分配,确保数据库***的可用性。
Description
技术领域
本申请涉及计算机技术领域,具体涉及一种数据处理方法、一种数据处理装置、一种数据分析设备、一种计算机可读存储介质及一种计算机程序产品。
背景技术
分布式数据存储是指将数据分散存储在数据库***中的多个物理存储节点上的技术。
目前,数据库***中的物理存储节点往往会发生变化;例如,为数据库***增加新的物理存储节点,以扩展数据库***的存储能力和计算能力,此时数据库***中的物理存储节点的数量发生变化;再如,对数据库***中的物理存储节点进行替换,以淘汰数据库***中存在硬件问题(或其他问题)的物理存储节点;等等。
因此,如何将数据库***中的数据重分配至发生变化后的物理存储节点,成为数据存储领域的研究热点。
发明内容
本申请实施例提供一种数据处理方法、装置、设备、介质及程序产品,能够实现在线重分配,确保数据库***的可用性。
一方面,本申请实施例提供了一种数据处理方法,该方法包括:
获取数据库***中的第一原始表;第一原始表用于存储数据库***中的第一节点组中的数据;
获取第一原始表对应的镜像表,并将第一原始表中的数据移动至镜像表;
按照重分配规则对镜像表中的数据重分配至数据库***中的第二节点组;其中,在重分配的过程中允许对第一原始表执行数据操作;
基于重分配后的镜像表生成第二原始表,第二原始表用于存储第二节点组中的数据。
另一方面,本申请实施例提供了一种数据处理装置,该装置包括:
获取单元,用于获取数据库***中的第一原始表;第一原始表用于存储数据库***中的第一节点组中的数据;
处理单元,用于获取第一原始表对应的镜像表,并将第一原始表中的数据移动至镜像表;
处理单元,还用于按照重分配规则对镜像表中的数据重分配至数据库***中的第二节点组;其中,在重分配的过程中允许对第一原始表执行数据操作;
处理单元,还用于基于重分配后的镜像表生成第二原始表,第二原始表用于存储第二节点组中的数据。
在一种实现方式中,第一节点组和第二节点组之间的关系包括以下至少一种:第二节点组是对数据库***中的第一节点组进行扩容得到的;或者,第二节点组是对数据库***中的第一节点组进行缩容得到的;或者,第二节点组是对数据库***中的第一节点组进行节点变更得到的;
第一节点组和第二节点组不同,不同包括以下至少一种:第一节点组所包含节点数量和第二节点组所包含节点数量不同;或者,第一节点组所包含的物理存储节点与第二节点组所包含的物理存储节点全部或部分不同。
在一种实现方式中,处理单元,还用于:
对所述第一原始表进行重分配预置处理;
其中,重分配预置处理包括:将第一原始表设置为追加模式;追加模式指示在重分配的过程中,只允许采用追加数据的方式针对第一原始表执行数据操作;数据操作包括以下至少一种:删除操作、更新操作和新增操作;以及,
将第一原始表设置为在重分配的过程中不允许释放表空间;以及,
为第一原始表创建临时删除表;临时删除表用于记录重分配的过程中第一原始表中被执行数据操作的记录的元组键;记录是用于描述数据库***中的事务的一行数据;元组键用于唯一标识记录。
在一种实现方式中,处理单元,还用于:
检测第一原始表中数据的数据量是否小于数据量阈值;
若数据量小于所述数据量阈值,则将第一原始表设置为锁定状态,并触发执行将第一原始表中的数据移动至镜像表的步骤;
其中,处于锁定状态的第一原始表不允许被执行数据操作。
在一种实现方式中,处理单元,还用于:
若数据量大于等于数据量阈值,则触发执行将第一原始表中的数据移动至镜像表,按照重分配规则对镜像表中的数据重分配至数据库***中的第二节点组的步骤;
从第一原始表中删除被重分配至第二节点组中的数据;
检测被删除后的第一原始表中剩余数据的数据量是否小于数据量阈值;剩余数据是第一原始表在重分配的过程中被写入的数据;
若剩余数据的数据量大于等于数据量阈值,则将被删除后的第一原始表中剩余数据移动至镜像表;
从被删除后的第一原始表中删除被重分配至第二节点组中的数据;
迭代上述步骤,直至被删除后的第一原始表中剩余数据的数据量小于数据量阈值,并触发执行将所述第一原始表设置为锁定状态的步骤。
在一种实现方式中,处理单元,用于将第一原始表中的数据移动至镜像表;按照重分配规则对镜像表中的数据重分配至数据库***中的第二节点组时,具体用于:
获取第一原始表对应的快照表;快照表用于备份第一原始表被执行快照操作时所包含的数据;
将快照表中的数据移动至镜像表,并按照重分配规则对镜像表中的数据重分配至数据库***中的第二节点组。
在一种实现方式中,快照表被划分为多个分段,每个分段中包含至少一个记录,记录是用于描述数据库***中的事务的一行数据;处理单元,用于将快照表中的数据移动至镜像表,并按照重分配规则对镜像表中的数据重分配至数据库***中的第二节点组时,具体用于:
对快照表进行扫描,将扫描到的快照表中的第i分段所包含的记录移动至镜像表;第i分段为多个分段中的任一分段;
按照重分配规则将第i分段中的记录重分配至第二节点组;重分配规则包括:平均分配规则或者事务类型规则;
重新扫描快照表中的第i+1分段,重复执行上述步骤,直至快照表中的每个分段均被扫描。
在一种实现方式中,处理单元,还用于:
获取第一原始表对应的临时删除表;临时删除表用于记录重分配的过程中第一原始表中被执行数据操作的记录的元组键;元组键用于唯一标识记录;
将镜像表和临时删除表进行融合处理,得到更新后的镜像表;更新后的镜像表中不包含临时删除表中的元组键所标识的记录;
处理单元,用于按照重分配规则将第i分段中的记录重分配至第二节点组时,具体用于:
按照重分配规则将更新后的镜像表中,第i分段中的记录重分配至第二节点组。
在一种实现方式中,处理单元,还用于:
清空第一原始表对应的临时删除表。
在一种实现方式中,数据处理方法应用于数据分析设备,数据分析设备与数据库***对接;数据分析设备用于访问数据库***中的数据;
数据分析设备通过控制数据库***中第一节点组中的虚拟数据节点执行方法;其中,第一节点组中包括多个物理存储节点,虚拟数据节点对应第一节点组中的一个或多个物理存储节点。
在一种实现方式中,第一节点组中包含一个或多个虚拟数据节点,任一虚拟数据节点表示为第j虚拟数据节点,第j虚拟数据节点持有第一原始表;若第j虚拟数据节点属于第二节点组,则处理单元,用于基于重分配后的镜像表生成第二原始表时,具体用于:
接收数据库***中除第j虚拟数据节点外的其他虚拟数据节点重分配的数据;
将其他虚拟数据节点重分配的数据,添加至第j虚拟数据节点的重分配后的镜像表中;第j虚拟数据节点的重分配后的镜像表中保留有部分数据;
将添加数据后的镜像表作为第j虚拟数据节点的第二原始表。
在一种实现方式中,第二节点组中包括第k物理存储节点,第k物理存储节点不属于第一节点组;第k物理存储节点的第二原始表的确定过程,包括:
接收第一节点组中虚拟数据节点重分配的数据,并基于虚拟数据节点重分配的数据生成第k物理存储节点的第二原始表。
在一种实现方式中,数据分析设备中包含集群管理模块;数据分析设备通过集群管理模块,控制数据库***中第一节点组中的虚拟数据节点执行方法;处理单元,还用于:
将数据库***的更改信息提交至集群管理模块;更改信息至少包括:关于组成数据库***的物理存储节点的更改信息,和关于数据库***中原始表的更改信息;
为第二原始表重新建立索引;数据分析设备通过建立的索引能够访问第二原始表中的数据。
在一种实现方式中,处理单元,还用于:
当接收到查询请求时,对查询请求进行资源成本预估,得到查询请求对应的预估资源成本;
基于预估资源成本生成查询请求的执行计划;
按照执行计划对数据库***中原始表中的数据进行查询处理;原始表包括第一原始表或者第二原始表。
在一种实现方式中,数据分析设备中包括计划存储器,计划存储器用于存储历史查询请求的查询信息,查询信息至少包括:历史执行计划和历史执行计划的实际资源成本;处理单元,用于对查询请求进行资源成本预估,得到查询请求对应的预估资源成本时,具体用于:
响应于查询请求,从计划存储器中查找与查询请求相匹配的历史查询请求的历史执行计划;
若计划存储器中存在与查询请求相匹配的历史查询请求的历史执行计划,则从计划存储器中获取历史执行计划的实际资源成本;
将历史执行计划的实际资源成本作为查询请求的预估资源成本。
在一种实现方式中,数据分析设备中包括谓词缓存模块,谓词缓存模块从谓词维度关联缓存谓词信息和谓词信息对应的历史查询请求的实际资源成本;处理单元,用于对查询请求进行资源成本预估,得到查询请求对应的预估资源成本时,具体用于:
获取查询请求的谓词信息;
从谓词缓存模块中确定与谓词信息之间的相似度满足相似度条件的多个候选谓词信息;
对多个候选谓词信息对应的多个历史查询请求的实际资源成本进行平均运算,得到平均运算结果;
将平均运算结果作为查询请求的预估资源成本。
另一方面,本申请实施例提供了一种数据分析设备,该设备包括:
处理器,用于加载并执行计算机程序;
计算机可读存储介质,该计算机可读存储介质中存储有计算机程序,该计算机程序被处理器执行时,实现上述数据处理方法。
另一方面,本申请实施例提供了一种计算机可读存储介质,计算机可读存储介质存储有计算机程序,该计算机程序适于由处理器加载并执行上述数据处理方法。
另一方面,本申请实施例提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。数据分析设备的处理器从计算机可读存储介质读取该计算机指令,计算机指令被处理器执行时实现上述的数据处理方法。
本申请实施例中,在数据库***具有数据重分配的需求时,可以为该数据库***中的第一原始表获取对应的镜像表;该第一原始表是用于存储数据库***中的第一节点组中的数据,即该第一原始表是数据库***在重分配之前,以表格形式存储第一节点组中的数据的原始表。然后,可以将第一原始表中的数据移动至该镜像表中,这样,该镜像表作为一个中间表,可以按照重分配规则对镜像表中的数据重分配至数据库***中的第二节点组;该第二节点组是数据库***针对第一节点组进行节点变化后的节点组;并且,在上述通过镜像表重分配的过程中,允许对第一原始表执行数据操作(如在第一原始表中写入数据、删除数据或***数据等)。最后,可以基于重分配后的镜像表生成第二原始表,该第二原始表示数据库***在重分配之后,以表格形式存储第二节点组中的数据的原始表。由此可见,本申请实施例提供了一种全新的数据重分配算法或方案,该方案依赖于为第一原始表创建的镜像表来实现数据的重分配,且确保在重分配过程中第一原始表的可用性,从而确保数据库***的可用性。具体是在重分配过程中,采用镜像表作为中间表来帮助将第一原始表中的数据进行重分配,而第一原始表始终保持原本的功能(如支持数据查询和数据写入等),从而确保存储该第一原始表的数据库***仍然能够对外提供数据读写功能。相比于传统的需要对第一原始表进行脱机以重新分配数据而言,本方案能够实现在线重分配,有效维护重分配过程中第一原始表和数据库***的高可用性。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请一个示例性实施例提供的一种数据处理架构的架构示意图;
图2a是本申请一个示例性实施例提供的一种数据库***的架构示意图;
图2b是本申请一个示例性实施例提供的一种数据库表的示意图;
图2c是本申请一个示例性实施例提供的一种数据分析***的架构示意图;
图3是本申请一个示例性实施例提供的一种数据处理方法的流程示意图;
图4a是本申请一个示例性实施例提供的一种数据重分配的场景示意图;
图4b是本申请一个示例性实施例提供的另一种数据重分配的场景示意图;
图4c是本申请一个示例性实施例提供的又一种数据重分配的场景示意图;
图4d是本申请一个示例性实施例提供的再一种数据重分配的场景示意图;
图5是本申请一个示例性实施例提供的一种迭代重分配的示意图;
图6是本申请一个示例性实施例提供的一种快照表的示意图;
图7是本申请一个示例性实施例提供的一种在线重分配算法的流程示意图;
图8是本申请一个示例性实施例提供的另一种数据处理方法的流程示意图;
图9是本申请一个示例性实施例提供的一种查询优化器、计划缓存器和执行引擎之间的交互示意图;
图10是本申请一个示例性实施例提供的一种数据分析装置的结构示意图;
图11是本申请一个示例性实施例提供的一种数据分析设备的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
在本申请实施例中,涉及一种数据处理架构,该数据处理架构的示例性示意图可以参见图1;该数据处理架构包括数据分析***和数据库***。其中,数据分析***中包含至少一个数据分析设备,该数据分析设备可以与数据库***对接;这样,该数据库***可以用于访问该数据库***中的数据(如往数据库***中写入数据,或者查询数据库***中的数据等)。下面对本申请实施例涉及的数据分析***和数据库***进行简单介绍,其中:
一、数据库***(Database System)。
数据库***可以称为数据库管理***(或架构),是为适应数据处理需求而发展起来的一种数据处理的核心机构;通过计算机的高速处理能力和大容量存储器实现数据管理自动化的条件。根据划分维度不同,数据库可以划分为不同的类型。
(1)按照硬件架构的不同,数据库***的架构可以包括但是不限于:对称多处理器(Symmetric Multi Processing,SMP)架构、非一致存储访问(Non-Uniform MemoryAccess,NUMA)架构和大规模并行处理(Massively ParallelProcessing,MPP)架构等等。其中:①对称多处理器架构是一种服务器中的中央处理器(Central Processing Unit,CPU)均“对等”的架构;此处的“对等”是指所有中央处理器之间是平等的,具体是每个中央处理器的处理能力是一致或平等的,包括但是不限于:所有中央处理器可以共享包括物理内存在内的所有资源,访问不同资源的能力(速度)是一致的,且访问内存中的任何地址所需的时间是相同的,等等。②非一致存储访问架构中包含多个处理模块(或者称为物理存储节点(或存储节点),可以是由服务器来充当存储节点),每个模块可以由自己的中央处理器和本地内存,且每个中央处理器除了访问身所在模块中的内存外,还可以访问整个***(即架构)的内存。③大规模并行处理数据管理***(即MPP架构)与非一致存储访问架构类似,其包括多个存储节点。但与非一致存储访问架构不同的是,MPP架构中每个存储节点是一个独立的机器(服务器),存储节点内的中央处理器独占自己的资源(包括内存、硬盘和IO等),即每个存储节点内的中央处理器不能访问另一个存储节点的内存。并且,MPP架构中的多个存储节点之间是通过网络连接起来的,且MPP架构需要通过软件实现通过网络连接的多个存储节点之间复杂的调度机制以及并行处理过程。一种MPP结构的示例性硬件架构示意图可以参见图2a。
另外,上述提及的服务器可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式***,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、内容分发网络(Content DeliveryNetwork,CDN)、以及大数据和人工智能平台等基础云计算服务的云服务器。
(2)按照数据量或数据类型的不同,数据库***可以分为:数据库和数据仓库;为便于区分数据库***和此处提到的数据库,本申请实施例以传统数据库来表示此处的数据库。其中,①传统数据库用来存放数据的仓库,通过数据库软件来实现。②数据仓库与传统数据库是类似的,也支持通过数据库软件实现存放数据;但有所不同的是,数据仓库能够存储的数据量往往是远大于传统数据库能够存储的数据量,且传统数据库中存储的数据是动态变化的,只要有业务发生数据就会被更新,而数据仓库则是静态的历史数据,只能定期添加、刷新数据仓库。数据仓库主要用于数据挖掘和数据分析,辅助领导做决策。
为了保证对业务的快速响应和支持,支持通过数据处理应用与数据库或数据仓库进行交互,以快速响应业务需求(如针对数据库中的数据的相关处理等)。
对于传统数据库而言,联机事务处理(OnLine Transaction Processsing,OLTP)是与传统数据库进行交互的主要数据处理应用;联机事务处理是一种在实时环境下,与功能和业务强相关的数据库处理***。在联机事务处理***中,每个交易和业务操作都被视为一个事务;该事务需要满足ACID属性,该ACID属性包括:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)和持久性(Durability)。其中,原子性是指事务是一个不可分割的工作单位,事务中的操作要么都发生,要么都不发生。一致性是指事务必须使数据库从一个一致性状态变换到另外一个一致性状态。隔离性是指事务的隔离性是指一个事务的执行不能被其他事务干扰,即一个事务内部的操作及使用的数据对并发的其他事务是隔离的,并发执行的各个事务之间不能互相干扰。持久性是指一个事务一旦被提交,它对数据库中数据的改变就是永久性的,接下来的其他操作和数据库故障不应该对其有任何影响。由此可见,事务的ACID属性,使得一个事务中所有的操作要么全部成功,要么全部失败,保证了数据的完整性和一致性。
对于数据仓库而言,联机分析处理(OnLine Analytical Processing,OLAP)是与数据仓库进行交互的主要数据处理应用。联机分析处理是一种能够支持复杂的分析操作的数据分析和处理技术,可以用来快速地对数据仓库中的大规模数据进行复杂的分析和查询;它主要用于数据仓库和商业智能***中,可以通过多维数据分析的方式,对数据进行多维度的探索和分析,可以实现对数据的多角度、多维度的分析,从而更好地支持决策分析。
值得说明的是,本申请实施例涉及的数据库***可以是按照硬件架构分类的大规模并行处理数据管理***(MPP架构),该大规模并行处理数据管理***同时也可以属于按照数据量分类的数据仓库;本申请实施例对数据库***的具体类型、数据量级和数据规模不作限定。例如,数据库***还可以是包括分布式文件***(Hadoop Distributed FileSystem,HDFS)在内的异构数据源;该异构数据源的数据量级可以达到PB(PetaByte,拍)级。其中,分布式文件***为海量的数据提供了存储功能,并且支持以流的形式访问文件***中的数据。异构数据源是指由相关的多个数据库(或数据仓库)的集合,可以实现数据的共享和透明访问;每个数据库在加入异构数据库***之前本身就已经存在,拥有自己的数据逻辑。
还值得说明的是,数据库***是通过数据库表(或简称为表,在分布式文件***中该表可以称为HDFS表),来以表格形式存储数据库***中的数据的;也就是说,该数据库表(TABLE)是数据库***中用来存储数据的对象。数据库***中的数据库表(或简称为表)可以包括一个或多个,如对于MPP架构而言,不同存储节点存储不同数据时意味着各存储节点持有的表也不相同;当然,数据库***中可能存在部分存储节点存储相同的数据,则该部分存储节点持有的表是相同的。其中,数据库表是一个二维的表格,该二维表格是由字段和记录两种基本元素构成的。记录对应二维表格中的行,字段对应二维表格中的列。具体地,记录是数据库表中存储的一行数据,该一行数据可以用于描述一个事务;也就是说,记录是用于描述数据库***中的事务的一行数据。每个记录都有一组字段,用于描述这个记录的特征,具体是描述该记录对应的事务的属性。举例来说,假设数据库***中存储有不同顾客的顾客信息,那么该数据库***是通过存储一张或多张顾客表来实现存储顾客信息的。一种示例性的顾客表(即数据库表)的示意图可以参见图2b,该顾客表包含多行记录,每行记录用于记录不同顾客的顾客信息;每行记录中又包含多个字段,一个字段对应一种顾客属性(即顾客信息),如顾客属性可以包括:姓名、性别和年龄等。
二、数据分析***。
数据分析***是与数据库***对接,支持访问数据库***中的数据以实现某些业务的分析***;具体地,数据分析***可以在大规模集群的数据库***上运行,以访问该数据库***,实现数据分析或处理等功能。本申请实施例对数据分析***所支持的业务场景或类型不作限定;如本申请实施例主要提供面向广告推荐场景、金融风控场景和音视频场景等涉及大规模数据存储和/或计算的数据分析平台。例如,在业务场景为广告推荐场景时,往往可以通过数据库***对大量的广告数据进行存储,并且在用户具有广告查询或推送需求时,可以通过数据分析平台访问存储广告数据的数据库***,以为用户推送广告。再如,在业务场景为金融风控场景时,数据库***可以存储各种金融信息,此时数据分析***可以实时或周期性从数据库***获取金融信息进行风控分析,以帮助用户更好地规避金融风险。又如,在业务场景为直播场景时,数据库***可以存储各类多媒体数据(如音频、视频或图像等),数据分析平台可以从该数据库***中查询多媒体数据并推送至用户。
基于上述对数据分析***和数据库***的简单介绍,本申请实施例提供一种新的数据分析***和数据处理方案;该数据处理方案应用于该数据分析***,具体是应用于该数据分析***中的数据分析设备,该数据分析设备与数据库***对接可以用于访问数据库***中的数据。其中,本申请实施例提供的数据处理方案具有两项主要功能,分别为在线重分配和查询优化。所谓在线扩容是指:在保持数据库***和数据分析***在线(即可以使用)的情况下,仍然实现对数据库***中的数据的重分配(如在存储节点增多的情况下,将数据分配至新的存储节点)。所谓查询优化可以是指:为数据分析平台中的查询优化器提供多种查询成本预估方法(如精确的选择性匹配或相似度选择等,在后续实施例中给出具体实施方式),相比于由查询优化器自己估计查询请求的预估资源成本而言,一方面可以提高成本预估效率,另一方面能够提高成本预估的准确性。
本申请实施例提供的一种示例性的数据处理架构的示意图参见图2c;如图2c所示,该数据处理架构从上至下可以分为客户端、数据分析***及数据库***。其中:
(1)客户端运行于用户持有的终端设备上,该客户端中部署有接入数据分析***的接口;这样用户具有数据分析、数据计算或数据查询等针对数据执行数据操作的需求时,可以通过其持有的终端设备中的客户端接入数据分析平台,从而通过该数据分析平台访问最下层的数据库***,以实现数据操作。终端设备可以包括但不限于:智能手机(如部署安卓(Android)***的智能手机,或部署互联网操作***(Internetworking OperatingSystem,IOS)的智能手机)、平板电脑、便携式个人计算机、移动互联网设备(MobileInternet Devices,MID)、车载设备、头戴设备等终端设备,本申请实施例并不对终端设备的类型进行限定,在此说明。
(2)数据分析***中包括:协调节点、集群管理模块、分布式事务管理模块、数据交换层、数据节点和工作负载管理模块。本申请实施例对上述各模块的数量不作限定,如数据节点可以包括多个,该多个数据节点可以用于实现数据分区存储和计算,且各数据节点执行事务时需满足ACID属性。此外在图2c所示的架构支持行和列存储格式,对此不作限定。下面对各模块的功能进行介绍,其中:
数据节点:数据分析***中的数据节点可以称为数据存储节点。该数据节点可以与数据库***中的存储节点(如HDFS分布式文件***中的节点)相互协作实现数据的读写操作;例如,在客户端将用户想要写入数据库***的数据发送至数据分析平台后,数据分析平台可以通过数据节点实现将该数据写入至数据库***。数据节点还可以通过哈希分布策略对数据库***中的数据库表(如HDFS表)进行分布式存储,以及优化接收到的查询请求等。此外,数据分析平台中的数据节点的数量可以包括多个,这样在查询场景中该数据分析平台能够实现多个查询请求在多个数据节点之间进行大规模并行处理,提高查询性能。
协调节点:可以用于管理整个数据库***中各存储节点之间的通信和协调;考虑到数据库***中的存储节点是与数据分析平台中的数据节点进行交互的,那么协调节点主要是通过管理数据分析平台中各数据节点,实现管理整个数据库***中各存储节点之间的通信和协调。在大规模并行处理架构中,每个数据节点都是相互独立的,协调节点需要负责整合各个数据节点的计算结果,并将整理后的计算结果通过客户端返回至用户,以便于用户通过该计划结果执行相应业务。协调节点还可以通过在线扩展(即保持数据分析平台和数据库***在线的情况下,实现数据库***中存储节点的扩容),和在线升级(如保持数据分析平台和数据库***在线的情况下,实现数据库***的功能升级)等功能来保证整个数据处理***的高可用性。此外,数据分析***中的协调节点的数量可以为多个,本申请实施例对协调节点的数量不作限定。
集群管理模块:主要用于管理整个***集群,确保数据处理***的可用性、自动调优和海量查询等等。例如,在数据库***产生数据重分配需求(如数据库***中新增存储节点,此时需要将数据库表中的数据重新分布至新的存储节点)时,集群管理模块可以通过控制数据节点来控制数据库***进行数据重分配。在数据重分配的过程中遵循两阶段分配;在第一阶段,支持先将数据库***中的第一原始表中的数据从第一节点组复制到第二节点组,并记录第一原始表中每个分片(或分段)的原始位置;在第二阶段,会在所有分片都完成数据复制后,将第一原始表中的数据删除,以确保全部数据都已成功迁移,从而确保数据重分布的一致性和可靠性。
分布式事务管理模块:用于管理数据处理***中的分布式事务;具体可以使用数据分区技术,将数据库***中的数据分布存储在多个数据节点上;也就是说,将单个分区的数据事务与多个分区的数据事务区分开来,从而加快单个分区的事务处理速度。并且,支持通过两阶段提交和全局事务管理维护跨分区的一致性。所谓两阶段提交是一种用于分布式事务处理的协议,可以确保所有参与者(如用户或用户使用的客户端)在事务执行过程中达成一致。两段提交主要过程分为两个阶段:准备阶段和提交阶段。其中,在准备阶段,协调节点会向所有参与者询问是否准备好提交事务,参与者会将自己的准备状态返回给协调节点;在提交阶段,如果所有参与者都准备好提交事务,则协调节点会向所有参与者发送提交事务的指令,参与者在完成事务提交后向协调节点发送确认消息。
数据交换层:是数据处理***中用于数据交换的一个模块;通过该数据交换层可以将一个数据交换的生产者和消费者之间的逻辑连接看做是一个虚拟练级或逻辑连接;其中多个数据交换之间的逻辑连接可以共享一条物理连接。通过这种虚拟化连接的方式,在减少每个数据节点(具体是服务器)上的连接数的同时,也可以更好地控制流量和保证数据传输的可靠性。
工作负载管理模块:可以称为全局负载管理模块,用于控制数据处理架构中***资源的分配和查询的并发执行。工作负载管理模块采用资源池、工作负载组和控制器三个主要组件来实现负载管理。其中,工作负载组用于将到达的查询请求(或简称为查询)分配到资源池中按照;具体可以是按照查询请求的来源信息,将查询分配至与来源信息匹配的查询队列中。资源池用于分配共享***资源,如内存和磁盘I/O,以及设置各种执行阈值;例如,资源池中包含不同来源信息对应的查询队列,资源池用于为查询分配查询资源;此外,所有查询都在资源池中执行,待***容量足够时再根据优先级和成本进行执行。控制器根据查询的资源需求(成本)和***可用资源(容量)动态进行执行决策,以优化***吞吐量并避免由于查询之间竞争***资源而导致的减速;具体地,控制器可以用于根据查询的预估资源和数据分析平台的可用剩余资源之间的资源关系,动态控制资源池中查询队列中的查询按照执行计划启动查询。由此可见,本申请实施例依赖于工作负载管理器来控制并发运行的查询数量,以及实现***自动化调优(如按照资源是否够用的原则动态决策是否开始查询),可以在一定程度地提升***性能。
另外,工作负载管理模块还支持采用资源记录和反馈机制来实时检测***的可用容量,以便于动态决策在***的可用容量小于或等于查询所需的资源需求时再触发执行该查询;其中,资源记录和反馈机制是用于记录***可用容量和控制查询执行的一组机制。***会记录资源池的容量,这些资源池用于分配共享的***资源(例如内存和磁盘I/O)以及设置各种执行阈值,以确定允许查询如何执行。负载管理器中的工作负载组用于将到达的查询分配到资源池。根据查询的资源消耗(即成本)和***的可用资源(即容量),控制器动态地做出执行决策。如果查询的预估成本不大于***的可用容量,则开始执行查询。否则查询会排队等待执行。也就是说,本申请实施例支持通过资源记录和反馈机制用于实时检测***的可用容量;当***的容量足够时,排队的查询将被取出并发送到执行引擎。
(3)数据库***的类型等相关内容可以参见前述相关描述,在此不作赘述。另外,在大规模服务器集群上实现数据库服务时往往会出现类似硬件故障这种问题,从而严重影响数据库服务的可用性,因此在大规模服务器集群上实现数据库服务高可用性始终是一个挑战。本申请实施例支持采用主辅模型和同步复制来确保数据库***提供的数据库服务的可用性(即存在硬件问题或其他问题的情况,仍然能够使用数据库服务)。应当理解的是,数据库***中存储的数据量往往繁多的,高达数百TB(TeraByte,太字节)甚至PB;本申请实施例支持将数据库***中的物理存储节点分为主数据节点和辅助数据节点,该主数据节点和辅助数据节点中分别存储数据副本。
此外,还设置虚拟数据节点来存储日志的副本,以在辅助数据节点故障时增加可用性;其中,虚拟数据数据对应一个或多个物理存储节点(包括主数据节点和/或辅助数据节点)。通过引入虚拟数据节点可以有效解决辅助数据节点崩溃所带来的数据同步复制中断问题,还可以解决辅助数据节点恢复后保持数据与主数据节点相同的数据同步。一方面,当辅助数据节点崩溃时,考虑到日志仍然可以同步复制到虚拟数据节点上,因此主数据节点仍然可以执行批量加载数据或者DML(Data Manipulation Language,数据操作语言)操作(如***、更新与删除数据等数据操作)。另一方面,在辅助数据节点崩溃且修复后,此时辅助数据节点需要赶上主数据节点(此处的“赶上”体现为备份的数据),以获取在辅助数据节点宕机时发生的更新。然而,考虑到在同步复制的过程中,如果主数据节点不对日志进行截断,日志会一直增长,导致存储空间不足;因此在日志被截断的情况下,辅助数据节点此时难以赶上主数据节点,那么可以依赖于虚拟数据节点提供所需日志来解决辅助数据节点的数据恢复和赶上的问题。
基于上述(1)-(3)对数据处理架构中各模块功能的介绍,下面结合图2b所示的数据处理架构对本申请实施例提供的数据处理方案所包含的在线重分配和查询优化的流程进行简单介绍:
①在线重分配:在数据库***产生数据重分配需求时,数据分析***中的集群管理模块可以控制数据库***中的虚拟数据节点执行本申请实施例提供的自动扩容算法。具体地,自动扩容算法主要是通过为数据库***中的第一原始表(即数据重分配之前数据库***中的第一节点组所持有的数据库表)创建镜像表,并由该镜像表作为中间表来将第一原始表中的数据移动(或复制)到第二节点组中,以实现数据的重新分配;其中,在删除重分配过程中,第一原始表被设置为在重分配的过程中允许执行数据操作。
②查询优化:首先,在用户具有查询数据库***中的数据的需求时,用户可以通过持有的终端设备中部署的客户端向数据分析***发送查询请求。其次,数据分析***中的协调节点响应该查询请求,协调各数据节点与数据库***中的存储节点进行数据交互,并协调各数据节点针对数据的计算结果,得到针对本次查询请求的查询结果。其中,在查询过程中通过数据分析平台中的工作负载管理模块在查询的预估资源成本小于***可用的资源容量时,再做该查询的查询过程,否则该查询在查询队列中等待,可以来实现多个查询的高效,避免多个查询之间竞争资源给***带来较大的负载;并且,在数据处理架构中还包括查询优化器,查询的预估资源成本可以是由该查询优化器预估得到的,本申请实施例提供多种预估方案,如精确选择匹配或者相似性选择等,能够有效提高预估资源成本的预估准确性。最后,由协调节点将查询结果返回至客户端,以便于用户获取查询结果。
由此可见,本申请实施例提供的数据处理方案提出一种自动扩容算法,可以支持数据库***快速在线扩容和升级;具体是支持在数据库***产生数据重分配需求时,保持数据库***处于不脱机状态下,具体是该数据库***中原本的第一原始表不脱机(即处于在线可执行数据操作的状态)状态下,对第一原始表中的数据进行重分配,有效确保数据库服务的可用性,避免重分配所带来的数据库服务不可用的问题,显著减少了***扩展和软件升级时对外部查询服务的影响。同时,本申请实施例还提出了一种查询优化器算法,该查询优化器算法能够通过多种预估方式来预估查询请求的预估资源成本,从而有利于基于精准的预估资源成本实现查询,在一定程度上提高查询准确性和性能,也避免查询资源的浪费。
基于上述描述的数据处理方案,本申请实施例提出更为详细的数据处理方法,下面将结合附图对本申请实施例提出的数据处理方法进行详细介绍。下面结合附图3对本申请提供的数据处理方法进行介绍;如图3所示的数据处理方法主要有数据分析***来执行,具体是由组成该数据分析***的数据分析设备来执行;且图3所示实施例主要对上述提及的在线重分配的过程介绍。如图3所示,该数据处理方法可包括但不限于步骤S301-S304:
S301:获取数据库***中的第一原始表。
在数据库***具有数据重分配的需求时,可以获取数据库***中包含待分配数据的第一原始表;该第一原始表属于第一节点组,且用于存储该第一节点组中的数据。其中,第一节点组中可以包括数据库***中的多个物理存储节点,此时第一节点组中的每个物理存储节点可以持有相同的第一原始表,或者多个物理存储节点中的全部或部分管理同一第一原始表;为避免数据重复分配,在重分配过程中只需获取第一节点组中一个第一原始表来实现数据的重分配即可。
具体地,可以是由数据分析***中数据分析设备控制数据库***中第一节点组中的虚拟数据节点来执行重分配过程,而无需指定某个具体的物理存储节点来执行重分配过程。这样,考虑到虚拟数据节点可以对数据进行逻辑上的组织和分配,而不需要实际的物理存储节点,使用虚拟数据节点可以在不影响数据库***可用性的情况下进行数据的重分配;并且,在进行数据重分配时,只需要将虚拟数据节点重新映射到新的物理存储节点(即第二节点组所包含的物理存储节点)上即可,而不需要停止在第一原始表中针对数据的读写操作,确保第一原始表的可用性;此外,虚拟数据节点还可以通过增加或减少物理存储节点的数量来实现弹性扩缩容,因此使用虚拟数据节点进行重分配,不仅可以保证数据库***的可用性,同时也能够提高数据分配的可靠性和灵活性。
其中,数据库***产生数据重分配需求的产生条件可以包括以下至少一种:数据库扩容、数据库缩容及数据库变更。下面对各产生条件下数据重分配前后的不同节点组之间的关系进行简单介绍,其中:
①数据库扩容。数据库扩容具体可以是通过为该数据库***添加新的物理存储节点,以达到扩展该数据库***的存储和计算能力;此实现方式下,第一节点组可以是指扩容之前数据库***中具有数据存储能力的节点组,在本申请实施例中将数据扩容后具有数据存储能力的节点组称为第二节点组。此时第一节点组和第二节点组之间的关系可以包括:第二节点组是对数据库***中的第一节点组进行扩容得到的;考虑到数据扩容场景下,第一节点组中的所有物理存储节点均保留,因此第二节点组中包括第一节点组和新增的物理存储节点。如图4a所示,数据库***中的第一节点组中包含物理存储节点1和物理存储节点2,现为数据库***增加物理存储节点3,则需要将第一节点组中原本物理存储节点1和物理存储节点2存储的数据进行重新分配,使得第二节点组(包含物理存储节点1、物理存储节点2和物理存储节点3)能够重新作为存储数据的节点组,此时第二节点组中包含第一节点组和新增的物理存储节点3。
②数据库缩容。数据库缩容具体可以是通过减少该数据库***中原本的物理存储节点,以达到减小该数据库***的存储和计算能力;此实现方式下,第一节点组可以是指缩容之前数据库***中具有数据存储能力的节点组,在本申请实施例中将数据缩容后具有数据存储能力的节点组称为第二节点组。此时第一节点组和第二节点组之间的关系可以包括:第二节点组是对数据库***中的第一节点组进行缩容得到的;考虑到数据缩容场景下,第一节点组中存在部分物理存储节点被删除,因此第二节点组所包含的节点数量是小于第一节点组的。如图4b所示,第一节点组中包含物理存储节点1、物理存储节点2和物理存储节点3,假设物理存储节点3损坏后被删除,则需要将原本物理存储节点3中的数据重新分配至现为数据库***增加物理存储节点3,则需要重新分配物理存储节点1、物理存储节点2和物理存储节点3存储的数据至物理存储节点1和物理存储节点2。
③数据库变更。数据库变更具体可以是通过变更该数据库***中原本的物理存储节点,以达到更新该数据库***中存储数据的设备;此实现方式下,第一节点组可以是指变更之前数据库***中具有数据存储能力的节点组,在本申请实施例中将节点变更后具有数据存储能力的节点组称为第二节点组。此时第一节点组和第二节点组之间的关系可以包括:第二节点组是对数据库***中的第一节点组进行节点变更得到的;考虑到节点变更场景下,第一节点组中只是物理存储节点的变更,因此第二节点组所包含的节点数量与第一节点组所包含的节点数量相同,但是第一节点组所包含的物理存储节点与第二节点所包含的物理存储节点全部或部分不同。如图4c所示,第一节点组中包含物理存储节点1、物理存储节点2和物理存储节点3,假设物理存储节点3损坏后被删除,且新增物理存储节点4,则需要将原本物理存储节点1、物理存储节点2和物理存储节点3中的数据重新分配至,物理存储节点1、物理存储节点2、物理存储节点3和物理存储节点4。
由此可见,数据重分配前后所涉及的第一节点组和第二节点组是不同的;该不同可以包括以下至少一种:第一节点组所包含节点数量和第二节点组所包含节点数量不同(如数据库扩容场景或数据库缩容场景)。或者,第一节点组所包含的物理存储节点与第二节点所包含的物理存储节点全部或部分不同(如节点变更场景)。
需要说明的是,在实际应用中产生数据重分配需求的产生条件并不仅限于上述三种,还可以是上述三种中至少两种的组合。例如,第一节点组和第二节点组之间的关系还可以包括:第二节点组是对数据库***中的第一节点进行扩容和变更得到的;如图4d所示,假设第一节点组中包含物理存储节点1和物理存储节点2,现为该第一节点组增加新的物理存储节点3,且将物理存储节点2替换为物理存储节点4,则得到的新的第二节点组中包括:物理存储节点1、物理存储节点3和物理存储节点4。另外,第一节点组和第二节点组还可以是数据库***中两个独立的节点组,即第二节点组可能并不是基于第一节点组得到的,而是与第一节点组同时存在于数据库***中的节点组;例如,数据库***中包括第一节点组和第二节点组,如果由于某些原因(如第一节点组整体退出数据库***)需要将第一节点组中的数据复制到第二节点组中进行同步备份时,也支持采用本申请实施例提供的重分配实现过程。
还需说明的是,上述是基于第一节点组发生扩容、缩容或节点变更为例进行阐述的;在实际应用中,数据库***中可以包括多个节点组,各节点组可能存储不同的数据库表(即存储不同的数据),因此扩容、缩容或节点变更可能产生于任意节点组中,此情况下,数据库***可能也会产生数据重分配的需求。此时,情况一:如果需要打乱数据库***中的数据重新分配,那么数据重分配前,数据库***中的每个节点组均作为第一节点组,而第二节点组可以是由用户或数据库***重新指定的一个或多个节点组。情况二:如果保持未产生扩容、缩容或节点变更的节点组中的数据不被分配,那么此时第一节点组可以是产生扩容、缩容或节点变更的节点组,而第二节点组可以是基于该第一节点扩容、缩容或节点变更得到的(即前述提到的三种情况);或者,第一节点组可以是产生扩容、缩容或节点变更的节点组,而第二节点组是基于该第一节点扩容、缩容或节点变更得到的,也可以是数据库***中未产生扩容、缩容或节点变更的节点组(即此时第二节点组与第一节点组是数据库***中不存在重合物理存储节点的节点组)。
由此可见,本申请实施例支持只要在数据库***产生重分配需求时,就可以实现数据的重分配而并非限定某种场景,在一定程度上促进数据处理方法的落地和应用。
S302:获取第一原始表对应的镜像表,并将第一原始表中的数据移动至镜像表。
S303:按照重分配规则对镜像表中的数据重分配至数据库***中的第二节点。
步骤S302-S303中,第一原始表(可表示为数据库表T)对应的镜像表是与第一原始表具有相同的模式的数据库表,此处的模式可以包括数据库的部署模式和运行模式等;也就是说,镜像表可以看作是对第一原始表拷贝所得到的。
值得注意的是,为了确保第一原始表在重分配的过程中,仍然能够被执行数据操作,本申请实施例支持在对第一原始表进行重分配之前,先对第一原始表进行重分配预置处理。其中,重分配预置处理可以包括:①将第一原始表设置为追加模式,该追加模式指示:在重分配的过程中,只允许采用追加数据的方式针对第一原始表执行数据操作;此处的数据操作可以包括以下至少一种:删除操作、更新操作和新增操作。下面对重分配过程中存在上述三种操作时,针对第一原始表的具体操作作阐述:如果在重分配的过程中存在针对第一原始表的新增操作(如写入新的数据至第一原始表的写入操作),那么需要将写入的新数据追加到第一原始表的末尾。同理,如果在重分配的过程中存在针对第一原始表中需要分配的数据A的删除操作,则标记该数据A对应的记录为待删除记录。同理,如果在重分配的过程中,存在针对第一原始表中需要分配的数据A的更新操作,则该更新操作会转换为删除操作,具体是标记该数据A对应的记录为待删除记录,且标记该数据A所在的位置会被***更新后的数据。
②将第一原始表设置为在重分配过程中不允许释放表空间;也就是说,在重分配的过程中,禁用第一原始表上的垃圾回收,从而在重新分配过程中保留第一原始表中的各记录的原始位置,避免记录的位置丢失所带来的各种问题(如查询不准确的问题)。进一步的,第一原始表不允许释放表空间的基础上,该第一原始表也没禁止重新使用其释放的表空间。
③为第一原始表创建临时删除表。考虑到在重分配过程中,可能存在针对第一原始表中待重分配数据的删除操作(或更新操作);而第一原始表被设置为在重分配过程中禁止释放表空间,即针对待重分配数据的删除操作不能即时更新到镜像表(可以成为数据库表S)中。因此,本申请实施例支持为第一原始表创建临时删除表(或称为临时增量删除表D),该临时删除表用于记录重分配的过程中第一原始表中被执行数据操作(如删除操作或更新操作)的记录的元组键;其中,记录是用于描述数据库***中的事务的一行数据,元组键用于唯一标识记录。这样,在后续实现第一原始表中的数据移动至镜像表后,可以采用该临时删除表实现在镜像表中删除待删除的部分数据,从而实现数据同步,确保重分配过程中针对第一原始表执行的数据操作的有效性。
另外,考虑到本申请实施了支持在重分配的过程中,针对第一原始表执行数据操作(如写入数据的操作),因此本申请实施例可能涉及对第一原始表中不同时间段写入数据的迭代重分配。例如,在10点时对第一原始表中10点之前写入的数据进行重分配,在10点20分时针对第一原始表中10点之前数据重分配完成后,可以开始执行针对10点10分到10点20分这20分钟内写入第一原始表中的数据进行重分配,直至第一原始表中剩余待重分配数据的数据量小于数据量阈值(即第一原始表所包含的剩余数据的数量小于数据量阈值),可以对该第一原始表做最后一次重分配。
基于此,在首次对第一原始表进行重分配时,所谓的获取第一原始表对应的镜像表更为具有的方式为:为第一原始表创建对应的镜像表;在创建时需确保创建好的镜像表和第一原始表具有相同的模式,以使得镜像表后续能够适应数据库***的存储规范。同理,在除首次重分配的任一迭代重分配的过程中,上述提及的获取第一原始表对应的镜像表的具体方式可以是直接获取上一轮迭代的镜像表。
下面结合图5对上述描述的迭代重分配的过程进行介绍;如图5所示:
首先,在检测到数据库***具有数据重分配需求时,可以为待重分配数据所属的第一原始表T创建镜像表;并且对第一原始表进行重分配预置处理。本申请实施例对创建镜像表和重分配预置处理这两个步骤的执行先后顺序不作现代。
然后,判断第一原始表中待重分配数据的数据量是否小于数据量阈值(该数据量阈值可以是根据数据库***配置好的,本申请实施例对数据量阈值的具体数值不作限定)。若数据量小于数据量阈值,表示该第一原始表后续继续被写入数据的可能性不大,那么可以对该第一原始表做最后一次重分配,则将第一原始表设置为锁定状态,并触发执行将第一原始表中的数据移动至镜像表的步骤;其中,处于锁定状态的第一原始表不允许被执行数据操作,以避免被执行数据操作后不能实现数据同步。若数据量大于等于数据量阈值,则可以通过迭代重分配的方式实现对第一原始表,则触发执行将第一原始表中的数据移动至镜像表的步骤。
其次,从第一原始表中删除被重分配至第二节点组中的数据。
最后,重新检测被删除后的第一原始表中剩余数据的数据量是否小于数据量阈值;该剩余数据是第一原始表在重分配的过程中被写入的数据。若剩余数据的数据量小于数据量阈值,则锁定该第一原始表,并针对该第一原始表做最后一次重分配。若剩余数据的数据量大于等于数据量阈值,则将被删除后的第一原始表中剩余数据移动至镜像表的步骤;以及从被删除后的第一原始表中删除被重分配至第二节点组中的数据。迭代上述步骤,直至被删除后的第一原始表中剩余数据的数据量小于数据量阈值,并触发执行将第一原始表设置为锁定状态的步骤。
由此可见,本申请实施例提供的这种迭代重分配的方式,能够有效保证重分配过程中的新写入至第一原始表中的数据也能够被重分配,避免单次重分配所导致的第一原始表不可用的问题,确保数据库***和第一原始表的高可用行。
上述结合图5主要给出针对第一原始表的迭代重分配的整体流程,下面对针对第一原始表中数据的单轮迭代重分配的具体实施过程进行介绍;每一轮迭代重分配的过程均可以参见该具体实施过程,特在此说明。具体实现中,在一轮迭代重分配过程中,(1)获取第一原始表对应的快照表(或简称为快照),该快照表是第一原始表在某一特定时间点的数据拷贝,具体可以用于备份第一原始表被执行快照操作时所包含的数据。可选的,上述提及的某一特定时间点可以是指:本轮执行迭代重分配操作的时间点,此时快照拷贝有第一原始表中全部的数据,如图6所示的第一附图;可选的,某一特定时间点可以是指:执行本轮迭代重分配操作的时间点之前的时间点,此时快照中拷贝有第一原始表中的部分数据,如图6所示的第二附图。
(2)将快照表中的数据移动至镜像表,并按照重分配规则对镜像表中的数据重分配至数据库***中的第二节点组。为提高数据移动效率,和确保数据的一致性,本申请实施例将快照表划分为多个分段,每个分段中包含至少一个记录;在数据的重分配过程中支持每次重分配单个分段。本申请实施例对分段标准不作限定,如可以采用哈希分布、复制分布和单例分布等方式,将快照表中的数据分散到不同的分段中,分段也可以成为分片。
基于此,首先,可以对快照表进行扫描,将扫描到的快照表中的第i分段所包含的记录移动至镜像表,该第i分段为多个分段中的任一分段;值得注意的是,在镜像表中还设置有一个隐藏列,除了将快照表中的记录(具体是第i分段中的记录)转移至镜像表外,还需将该快照表中被移动的记录的元组键(具体是第i分段中记录的元组键)存储至镜像表中的隐藏列中,以便于通过该隐藏列中的元组键来唯一标识镜像表中的记录。
然后,按照重分配规则将镜像表中第i分段中的记录重分配至第二节点组中,此处的重分配规则可以包括但是不限于:平均分配规则和事务类型规则等;所谓平均分配规则可以是指:将第i分段中的数据平均分配至第二节点组中的每个物理存储节点;所谓事务类型规则可以是指:按照事务的类型不同,将具有相似类型的事务分配至第二节点组中的同一物理存储节点,而不同类型的事务可以分配至第二节点组中的不同物理存储节点,这种按照事务类型规则重分配数据的方式,有利于事务的分类存储。当然,上述只是给出两种示例性的重分配规则,对本申请实施例不会产生限定。
最后,在针对快照表中的第i分段重分配结束后,可以重新扫描快照表中的第i+1分段,并针对第i+1分段重复执行上述步骤,直至快照中的每个分段均被扫描和重分配。
正如前述所描述,在重分配的过程中允许对第一原始表执行数据操作,那么在针对每个分段(如第i分段)执行重分配的过程中,可能存在针对该第i分段中的记录或数据的删除操作(或更新操作)。为了在重分配后的第二节点组中实现数据的一致性,本申请实施例支持将第i分段中的记录重分配至第二节点组之前,先获取第一原始表对应的临时删除表,并将该临时删除表和镜像表进行融合处理,得到更新后的镜像表;该更新后的镜像表中不包含临时删除表中的元组键所标识的记录。此实现方式下,在后续重分配时,具体是按照重分配规则将更新后的镜像表中第i分段中的记录重分配至第二节点组。本申请实施例提供的这种融合临时删除表和镜像表的方式,不仅可以实现重分配的数据一致性和正确性,而且融合方式可实现批量删除镜像表中需删除的数据,实现针对被执行删除操作的数据的批量化处理。
进一步的,在一轮迭代重分配结束后,本申请实施例还支持清空第一原始表对应的临时删除表,以便于被清空后的临时删除表能够继续记录第i+1分段重分配过程中被执行数据操作的记录的元组键。当然,第一原始表中被重分配的部分数据也可以被删除,以便于后续重分配时能够更好地识别待重分配数据。
S304:基于重分配后的镜像表生成第二原始表。
其中,第二原始表用于存储第二节点组中的数据;也就是说,该第二原始表是重分配后用于存储数据的新的原始表。
如前述描述可知,本申请实施例支持由第一节点组中的虚拟数据节点来实现数据的重分配过程;第一节点组中包含一个或多个虚拟数据节点,假设任一虚拟数据节点表示为第j虚拟数据节点,该第j虚拟数据节点持有第一原始表。
在一种实现方式中,若该第j虚拟数据节点属于第二节点组,如前述提及的第二节点组是对第一节点组进行扩容得到的,那么第一节点组中原本包含的第j虚拟数据节点也属于第二节点组中的物理存储节点。此实现方式下,第j虚拟数据节点在重分配其持有的第一原始表时会保留部分数据自己存储,此时生成该第j虚拟数据的第二原始表的过程可以包括但是不限于:接收数据库***中除第j虚拟数据节点外的其他数据节点重分配的数据(或记录);此处的其他数据节点可能与第j虚拟数据节点不属于同一节点组,或者,与第j虚拟数据节点属于同一节点组,本申请实施例对此不作限定。然后,将其他虚拟数据节点重分配的数据,添加至第j虚拟数据节点的重分配后的镜像表中,该第j虚拟数据节点的重分配后的镜像表中保留有部分数据。最后,将添加数据后的镜像表作为第j虚拟数据节点的第二原始表。
其他实现方式中,若该第j虚拟数据节点不属于第二节点组中的物理存储节点,那么假设第二节点组中包含第k物理存储节点,且该第k物理存储节点不属于第一节点组,则该第k物理存储节点的第二原始表的确定过程可以包括但是不限于:接收第一节点组中的虚拟数据节点重分配的数据(即从第一原始表中复制的数据),在数据库***中还存在其他虚拟数据节点重分配数据时,还一并接收其他虚拟数据节点重分配的数据;然后,基于接收到的全部虚拟数据节点重分配的数据生成该第k物理存储节点的第二原始表,具体是将所有数据添加至新的数据库表中,以将添加数据后的数据库表作为第二原始表。
综上所述的步骤S301-S304所示的具体实施过程,可以实现在数据库***具有数据的重分配需求时,将重分配前第一原始表中的数据转移至重分配后第二原始表中。为便于更好地理解上述实现过程,下面以第一节点组和第二节点组中均包含第j虚拟数据节点,且第j虚拟数据节点持有第一原始表为例,结合图7以步骤的形式给出重分配的完整流程;如图7所示:
(1)对第一原始表T进行重分配预置的相关处理。
第1步:为第一原始表T创建具有相同模式的镜像表S中,且该镜像表S中包含隐藏列,用于存储从第一原始表T移动的记录的元组键。值得说明的是,该镜像表S未迭代重分配结束前,该镜像表被禁止添加索引,即无法访问该镜像表中的数据。
第2步:将第一原始表T设置为追加模式,以便于在重分配的过程中通过追加数据的方式针对该第一原始表执行数据操作,使得该第一原始表T不能重新使用其持有的表空间。
第3步:禁用第一原始表T上的垃圾回收,避免第一原始表T的表空间被释放,从而在数据重新分配过程中保留记录的原始位置,实现数据重分配前后的一致性和正确性。
第4步:为第一原始表T创建临时删除表D,以实时记录在重分配过程中第一原始表待重分配书中已删除记录的元组键。
(2)对第一原始表进行重分配处理。
第5步:获取第一原始表T的快照表,并通过扫描第一原始表T中的分段,以将分段中的记录移动至镜像表,并按照重分配规则且通过镜像表将分段中的记录重分配至第二节点中。
第6步:在第5步的重分配过程中,支持将临时删除表和镜像表进行融合,以实现数据的一致性和安全性。
第7步:清空临时删除表D和删除第一原始表中已被重分配的数据。
第8步:迭代步骤5-步骤7,直至第一原始表中剩余数据的数据量小于数据梁阈值。
第9步:开始最后一次重分配,为了避免数据不一致的问题,支持在最后一次重分配前,锁定第一原始表,以防止其他事务对第一原始表执行数据操作,使重分配过程更加可靠和稳定,保证重分配过程中的数据正确性和一致性。并且,采用与步骤5-步骤6相同的方式重分配锁定后的第一原始表中的剩余数据。
第10步:基于重分配后的镜像表生成第二原始表;具体可以是将该镜像表重新命名为第二原始表。
(3)重分配后的配置操作。
第11步:提交更改。正如前述所描述的,数据分析设备中包含集群管理模块,数据分析设备是通过集群管理模块控制数据库***中第一节点组中的虚拟数据节点执行数据处理方法;那么,在重分配结束后,还需将数据库***的更改信息提交至集群管理模块。更改信息至少包括:关于组成数据库***的物理存储节点的更改信息(如节点数量和节点类型的变化),和关于数据库***中原始表的更改信息(如索引的数据库表从第一原始表变化为第二原始表)。
第12步:为第二原始表重新建立索引;这样,数据分析设备通过建立的索引能够访问第二原始表中的数据。
值得说明的是,上述第1步-第12步所示的完整实现过程,可以被配置为一系列小的批次,这样每次都处理一个批次,可以有效减小数据分析平台和数据库***的负载。其中,上述提及的批次可以看作是一个事务,也就是说,该***处理该批次时可以像处理一个事务一样。
综上所述,本申请实施例提供了一种数据处理方法,该数据处理方法是一种在线分布式数据重分布(在线扩展数据库的重要问题,尤其针对大型数据仓库)。核心算法是创建为需要重分配的第一原始表创建一个镜像表来存储正在被重分布的数据,并将第一原始表更改为追加模式以保留原始数据;当镜像表重构完毕后,删除镜像表中与第一原始表中删除的行(即一行记录,或数据)相对应的行。通过设置第一原始表为追加模式且采用中间的镜像表的方式,确保存储该第一原始表的数据库***仍然能够对外提供数据读写功能,且在解决数据倾斜和实现数据共存等问题方面具有许多优势。相比于传统的需要对第一原始表进行脱机以重新分配数据而言,本方案能够实现在线重分配,有效维护重分配过程中第一原始表和数据库***的高可用性。
请参见图8,图8是本申请一个示例性实施例提供的另一种数据处理方法的流程示意图;图8所示的数据处理方法主要数据分析***来执行,具体是由组成该数据分析***的数据分析设备来执行;且图8所示实施例主要对上述提及的查询优化的过程介绍。如图8所示,该数据处理方法可包括但不限于步骤S801-S807:
S801:获取数据库***中的第一原始表。
S802:获取第一原始表对应的镜像表,并将第一原始表中的数据移动至镜像表。
S803:按照重分配规则对镜像表中的数据重分配至数据库***中的第二节点组。
S804:基于重分配的镜像表生成第二原始表。
需要说明的是,步骤S801-S804所示的具体实施过程,可以参见前述图3所示实施例中步骤S301-S304所示的具体实施过程的相关描述,在此不作赘述。
还需说明的是,本申请实施例还对数据分析***提供的数据查询功能进行优化,关于数据查询的相关内容可以参见下述步骤S805-S807。
S805:当接收到查询请求时,对查询请求进行资源成本预估,得到查询请求对应的预估资源成本。
具体实现中,用户具有通过数据分析***从数据库***中查询数据的需求时,用户可以在其持有的终端设备中部署的客户端中输入查询信息(如待查询数据的关键字,或者针对查询案件的触发操作等),此时终端设备基于该查询信息生成查询请求,并将查询请求发送至客户端对应的数据分析***。然后,数据分析***接收该查询请求后,可以对该查询请求进行解析,以实现对该查询请求进行资源成本预估,得到查询请求对应的预估资源成本。其中,查询请求对应的预估资源成本用于反映执行该查询所需耗费的资源量。
在本申请实施例中设计了一个查询优化器(或简称为优化器)来实现针对查询请求的资源成本预估。其中,该查询优化器是对数据库***查询进行优化的一种组件或程序;相比于传统的优化器,本申请实施例提供的查询优化器采用编译查询执行、自动调优等技术来提高查询性能和减少总体资源成本。具体地,该查询优化器可以支持复杂的OLAP工作查询;该查询优化器具有如下特点:首先,该查询优化器被设计成MPP感知,可以构建针对MPP的数据查询的执行计划并实现了基于成本的查询优化,且考虑了数据交换成本。其次,该查询优化器可以支持向量执行和多个文件***,包括Apache ORC、parquet等格式的文件。最后,该查询优化器还包括查询重写功能,包括建立查询重写引擎和添加对复杂OLAP查询至关重要的其他重写。其中,上述提及的查询的执行计划是指:用于执行查询的指令序列;该序列由本申请实施例提供的查询优化器生成,通过优化查询的执行路径来提高***中分析性查询的性能。
本申请实施例提供的查询优化器支持两种优化的查询方式;方式一:通过捕获历史查询请求对应的历史执行计划,实现针对本次查询请求的精准预估。方式二:通过查询请求的谓词信息进行谓词的相似性自动匹配,通过确定查询请求的谓词信息的相似谓词,来估计预估资源成本。下面对本申请实施例提供的两种查询方式进行详细介绍,其中:
(1)精准匹配确定查询请求的预估资源成本。
基数估计(统计)领域是优化器基于成本基础优化的核心组件之一。考虑到用于成本基础优化的传统和经典的统计方法很复杂,需要大量的资本投入并且随着时间的推移会不断增加;并且,不同格式的数据源对收集统计数据并做合理准确的评估带来了额外的挑战。基于优化器统计领域的上述挑战,经过实际业务数据测试表明,大多数OLAP工作负载都集中在特定的查询请求上,因此有选择地捕获某些查询请求的执行计划并重复使用它们是很有意义的;例如,利用捕获的历史查询请求的历史执行计划对应的实际资源成本所需的工程成本,相比于传统的收集和使用查询优化器预估资源成本所需的工程成本更少,可以给***性能带来很大的提升。
为实现针对历史查询请求的历史执行计划的捕获,本申请实施例设计了一个执行引擎(或称为学习组件),该执行引擎可以从数据分析***中的工作负载管理器(具体是控制器)中选择性地捕获历史查询请求的历史执行统计(该历史执行计划是历史查询请求在被查询的实际执行计划)。本申请实施例还设计了一个计划存储器(或计划缓存器)来缓存执行引擎捕获的历史执行计划和历史执行计划对应的实际资源成本(即该历史执行计划在被执行时所耗费的实际的资源成本)。这样,通过执行引擎和计划存储器,可以实现捕获的数据反过来可以被查询优化器用于随后类似的查询请求,以实现针对查询请求更准确的统计估计。
简而言之,本申请实施例提供的计划存储器用于:对执行引擎捕获的历史查询请求的查询信息进行缓存;查询信息可以包括但是不限于:历史执行计划,实际资源成本,历史执行计划中各执行计划步骤的步骤类型(指的是执行计划中的不同操作,例如扫描、连接和聚合等),各执行计划步骤的步骤谓词(表示在计划执行期间被评估检查的查询逻辑条件,如过滤条件或判断条件)和历史查询请求的输入描述信息(指的是输入数据的特征描述,如输入表中的统计信息(例如行数和块大小)或数据格式)。其中,计划存储器是采用关键字存储不同历史查询请求的查询信息的;一个历史查询请求对应一个关键字,该关键字可以理解为唯一标识该历史查询请求的查询标识(如编号)。
本申请实施例提供的执行引擎用于:按照计划选取规则从工作负载管理模块中捕获,与本次查询请求相似的历史查询请求的历史执行计划;其中,计划选取规则包括:从工作负载管理模块中捕获实际行数和预估行数之间的差异大于差异阈值的步骤所对应的历史执行计划;计划选取规则这样设置的考虑是,实际行数和预估行数相差越大,表明针对相应查询请求进行预估的资源成本越不可靠,那么此时采用与该查询请求类似的历史查询请求的实际资源成本作为自己的预估资源成本,相比于自己针对查询请求进行预估的资源成本而言可信度更高。需要说明的是,从数据库***中查询数据时,实质是从原始表中的查询,而数据在原始表中是以行形式的记录来存储的;因此,查询请求的资源成本是通过待查询数据在原始中所占行数来估计的。其中,可以使用元数据统计数据从原始表中估计查询请求的执行计划所包含的各步骤(包括:扫描步骤、连接步骤和聚合步骤)所需行数扫描和连接的行数;例如,扫描到原始表中列A的行数为100,列B的行数为1000,那么根据A和B的数据分布信息,可以估计列A和列B连接后的行数,该行数作为预估资源成本。
一种示例性的查询优化器、计划缓存器和执行引擎之间交互实现资源成本预估的示意图可以参见图9。如图9所示,数据分析***(具体可以是数据分析设备)中包括计划存储器,该计划存储器用于存储历史查询请求的查询信息;该查询信息至少包括:历史执行计划,以及历史执行计划的实际资源成本。具体地,查询优化器在接收到查询请求后,响应于该查询请求通过统计API接口从计划存储器中查找与查询请求相匹配的历史查询请求的历史执行计划;其中,查询请求之间的匹配度可以是根据通过关键词分析(如分析查询请求的文本信息所包含的关键词)、语义分析、关键字匹配(如前述提及的每个查询请求具有一个唯一标识该查询请求的关键字)和/或谓词分析来确定的;如两个查询请求所包含的关键词存在较多相同或相似,则确定这两个查询请求的匹配度较高,本申请实施例对此不作限定。然后,若计划存储器中存在与查询请求相匹配的历史查询请求的历史执行计划,则从计划缓存器中获取历史执行计划的实际资源成本;并将历史执行计划的实际资源成本作为查询请求的预估资源成本。最后,查询优化器基于预估资源成本生成查询请求的执行计划,并将该执行计划发送至工作负载管理模块执行后续的查询处理。
综上所述,这种通过精准匹配历史查询请求的历史执行计划,可以通过将该历史执行计划对应的实际资源成本,作为本次查询请求的预估资源成本;考虑到实际资源成本是执行历史查询请求所耗费的实际的资源,因此将该实际资源成本作为本次查询请求的预估资源成本,有效提高本次查询请求的预估资源成本的准确性。
(2)相似性匹配确定查询请求的预估资源成本。
除了上述实现方式(1)提及的精确匹配之外,本申请实施例还支持通过谓词匹配来实现自动优化查询优化器针对查询请求预估的资源成本。具体地,数据分析设备中包括谓词缓存模块,该谓词缓存模块从谓词维度关联缓存谓词信息和谓词信息对应的历史查询请求的实际资源成本。这样,接收到新的查询请求后,可以通过分析该查询请求所包含的谓词信息P,计算谓词缓存模块中与谓词信息P最近的K个候选谓词信息查询的平均资源成本,则可以基于该平均资源成本轻易计算新的查询请求的资源成本。其理论依据是相互接近的事件具有类似的属性;例如,原始表中存储时间较晚的行数据随着收到日期和提交日期之间的差异增大而变得越来越少。
具体实现中,查询优化器在接收到查询请求后,首先,可以获取该查询请求的谓词信息(如参数x大于参数y的判断条件)。然后,查询优化器从谓词缓存模块中确定与谓词信息之间的相似度满足相似度条件的多个候选谓词信息。最后,对所述多个候选谓词信息对应的多个历史查询请求的实际资源成本进行平均运算,得到平均运算结果;将平均运算结果作为查询请求的预估资源成本。由此可见,本申请实施例使用邻近算法和谓词缓存的方式,使得查询优化器可以迅速的估计每个查询请求的查询成本,从而帮助查询优化器高效的实现基于成本估计的查询优化。
其中,上述谓词查询(一种在数据库***中用于检索数据的方法,通过在查询条件中使用谓词来筛选出满足条件的数据)的过程中,本申请实施例支持采用人工智能(Artificial Intelligence,AI)技术来实现相似度估计;具体可以是涉及相似选择模块来达到相似度估计的目的。其中,人工智能是利用数字计算机或者数字计算机控制的机器模拟、延伸和扩展人的智能,感知环境、获取知识并使用知识获得最佳结果的理论、方法、技术及应用***。人工智能软件技术主要包括计算机视觉技术、语音处理技术、自然语言处理技术以及机器学习/深度学习等几大方向;本申请实施例主要涉及人工智能领域下的机器学习/深度学习方向,具体是采用机器学习训练一个相似选择模块(或称为相似选择模型)。进一步的,相似选择模块可以是基于邻近算法(K-NearestNeighbor,KN N)构建的。例如,在日期查询的场景中,类似x>y+c这样的复杂谓词是很常见的,其中x和y都是原始表中的列,c是一个常量;如日期查询涉及像receipt_date>commit_date+c这样的谓词信息,该谓词信息限制了晚于c天收到的行项目。将相似选择模块应用于这类复杂谓词信息时,这类谓词信息可以表示为更一般形式是x>y+c1和x<=y+c2。
举例来说,假设存在两个查询请求,分别为查询请求1和查询请求2,且查询请求1中的谓词信息P1=receipt_date>commit_date+10和receipt_date<=comm it_date+20,表示查询请求1想要查询原始表中存储时间距离当前时刻10天到20天之间的数据;查询请求2中的谓词信息P2=receipt_date>commit_date和rece ipt_date<=commit_date+1,表示查询请求2想要查询原始表中存储时间距离当前时刻15天内的数据。那么上述两个谓词信息和可以标记为两个点,分别为P1(10,20)和P2(0,15),则基于邻近算法构建的相似选择模块,使用距离度量来计算两个查询请求之间的相似性时,两个查询请求之间的相似性可以由两个谓词信息P1和P2之间的距离来确定,P1和P2之间的距离表示为Distance(P1,P2)=cosine(P1,P2)。
综上所述,本申请实施例提供给基于计划缓存器的查询优化器算法,和使用相似选择模型和KNN算法的查询优化器算法,显著提升了查询优化的性能,提高查询请求的查询成本的准确性和效率,从而有利于后续针对该查询请求的高效查询。
S806:基于预估资源成本生成查询请求的执行计划。
S807:按照执行计划对数据库***中原始表中的数据进行查询处理。
步骤S806-S807中,查询优化器在得到查询请求的预估资源成本后,可以基于预估资源成本生成查询请求的执行计划,并将该执行计划发送至工作负载管理模块,以便于工作负载管理模块按照执行计划对数据库***中原始表(第一原始表或第二原始表)中的数据进行查询处理;具体是将该查询请求放置到资源池中,并由控制器在确定***可用资源大于该查询资源所需的预估资源成本时,再触发采用该查询请求的执行计划触发针对该查询请求的查询。
需要说明的是,数据分析***采用步骤S805-S807所示的数据查询方法从数据库***中查询数据的流程,可以发生于步骤S801-S804所示的数据重分布的流程之前或之后。例如,该数据查询的过程可以在数据重分配前执行,此时数据分析***是从数据重分布(或重分配)前的第一原始表中查询数据。再如,数据查询的过程可以在数据重分布后执行,此时数据分析***是从数据重分布后的第二原始表中查询数据。
综上所述,一方面,本申请实施例提供全新的数据重分配算法或方案,该方案依赖于为第一原始表创建的镜像表来实现数据的重分配,且确保在重分配过程中第一原始表的可用性,从而确保数据库***的可用性。具体是在重分配过程中,采用镜像表作为中间表来帮助将第一原始表中的数据进行重分配,而第一原始表始终保持原本的功能(如支持数据查询和数据写入等),从而确保存储该第一原始表的数据库***仍然能够对外提供数据读写功能。相比于传统的需要对第一原始表进行脱机以重新分配数据而言,本方案能够实现在线重分配,有效维护重分配过程中第一原始表和数据库***的高可用性。另一方面,本申请实施例支持通过精准匹配历史查询请求或者谓词查询的方式,为查询请求进行资源成本的预估,有效提高本次查询请求的预估资源成本的准确性,降低资源成本的预估成本,提高资源成本的预估效率。
图10示出了本申请实施例提供的一种数据处理装置的结构示意图;该数据处理装置设置在数据分析***中。在一些实施例中,该数据处理装置可以是运行于数据分析***中的数据分析设备;该数据处理装置所包括的单元的具体实现可参考前述实施例中相关内容的描述。请参见图10,本申请实施例的该数据处理装置包括如下单元:
获取单元1001,用于获取数据库***中的第一原始表;第一原始表用于存储数据库***中的第一节点组中的数据;
处理单元1002,用于获取第一原始表对应的镜像表,并将第一原始表中的数据移动至镜像表;
处理单元1002,还用于按照重分配规则对镜像表中的数据重分配至数据库***中的第二节点组;其中,在重分配的过程中允许对第一原始表执行数据操作;
处理单元1002,还用于基于重分配后的镜像表生成第二原始表,第二原始表用于存储第二节点组中的数据。
在一种实现方式中,第一节点组和第二节点组之间的关系包括以下至少一种:第二节点组是对数据库***中的第一节点组进行扩容得到的;或者,第二节点组是对数据库***中的第一节点组进行缩容得到的;或者,第二节点组是对数据库***中的第一节点组进行节点变更得到的;
第一节点组和第二节点组不同,不同包括以下至少一种:第一节点组所包含节点数量和第二节点组所包含节点数量不同;或者,第一节点组所包含的物理存储节点与第二节点组所包含的物理存储节点全部或部分不同。
在一种实现方式中,处理单元1002,还用于:
对所述第一原始表进行重分配预置处理;
其中,重分配预置处理包括:将第一原始表设置为追加模式;追加模式指示在重分配的过程中,只允许采用追加数据的方式针对第一原始表执行数据操作;数据操作包括以下至少一种:删除操作、更新操作和新增操作;以及,
将第一原始表设置为在重分配的过程中不允许释放表空间;以及,
为第一原始表创建临时删除表;临时删除表用于记录重分配的过程中第一原始表中被执行数据操作的记录的元组键;记录是用于描述数据库***中的事务的一行数据;元组键用于唯一标识记录。
在一种实现方式中,处理单元1002,还用于:
检测第一原始表中数据的数据量是否小于数据量阈值;
若数据量小于所述数据量阈值,则将第一原始表设置为锁定状态,并触发执行将第一原始表中的数据移动至镜像表的步骤;
其中,处于锁定状态的第一原始表不允许被执行数据操作。
在一种实现方式中,处理单元1002,还用于:
若数据量大于等于数据量阈值,则触发执行将第一原始表中的数据移动至镜像表,按照重分配规则对镜像表中的数据重分配至数据库***中的第二节点组的步骤;
从第一原始表中删除被重分配至第二节点组中的数据;
检测被删除后的第一原始表中剩余数据的数据量是否小于数据量阈值;剩余数据是第一原始表在重分配的过程中被写入的数据;
若剩余数据的数据量大于等于数据量阈值,则将被删除后的第一原始表中剩余数据移动至镜像表;
从被删除后的第一原始表中删除被重分配至第二节点组中的数据;
迭代上述步骤,直至被删除后的第一原始表中剩余数据的数据量小于数据量阈值,并触发执行将所述第一原始表设置为锁定状态的步骤。
在一种实现方式中,处理单元1002,用于将第一原始表中的数据移动至镜像表;按照重分配规则对镜像表中的数据重分配至数据库***中的第二节点组时,具体用于:
获取第一原始表对应的快照表;快照表用于备份第一原始表被执行快照操作时所包含的数据;
将快照表中的数据移动至镜像表,并按照重分配规则对镜像表中的数据重分配至数据库***中的第二节点组。
在一种实现方式中,快照表被划分为多个分段,每个分段中包含至少一个记录,记录是用于描述数据库***中的事务的一行数据;处理单元1002,用于将快照表中的数据移动至镜像表,并按照重分配规则对镜像表中的数据重分配至数据库***中的第二节点组时,具体用于:
对快照表进行扫描,将扫描到的快照表中的第i分段所包含的记录移动至镜像表;第i分段为多个分段中的任一分段;
按照重分配规则将第i分段中的记录重分配至第二节点组;重分配规则包括:平均分配规则或者事务类型规则;
重新扫描快照表中的第i+1分段,重复执行上述步骤,直至快照表中的每个分段均被扫描。
在一种实现方式中,处理单元1002,还用于:
获取第一原始表对应的临时删除表;临时删除表用于记录重分配的过程中第一原始表中被执行数据操作的记录的元组键;元组键用于唯一标识记录;
将镜像表和临时删除表进行融合处理,得到更新后的镜像表;更新后的镜像表中不包含临时删除表中的元组键所标识的记录;
处理单元1002,用于按照重分配规则将第i分段中的记录重分配至第二节点组时,具体用于:
按照重分配规则将更新后的镜像表中,第i分段中的记录重分配至第二节点组。
在一种实现方式中,处理单元1002,还用于:
清空第一原始表对应的临时删除表。
在一种实现方式中,数据处理方法应用于数据分析设备,数据分析设备与数据库***对接;数据分析设备用于访问数据库***中的数据;
数据分析设备通过控制数据库***中第一节点组中的虚拟数据节点执行方法;其中,第一节点组中包括多个物理存储节点,虚拟数据节点对应第一节点组中的一个或多个物理存储节点。
在一种实现方式中,第一节点组中包含一个或多个虚拟数据节点,任一虚拟数据节点表示为第j虚拟数据节点,第j虚拟数据节点持有第一原始表;若第j虚拟数据节点属于第二节点组,则处理单元1002,用于基于重分配后的镜像表生成第二原始表时,具体用于:
接收数据库***中除第j虚拟数据节点外的其他虚拟数据节点重分配的数据;
将其他虚拟数据节点重分配的数据,添加至第j虚拟数据节点的重分配后的镜像表中;第j虚拟数据节点的重分配后的镜像表中保留有部分数据;
将添加数据后的镜像表作为第j虚拟数据节点的第二原始表。
在一种实现方式中,第二节点组中包括第k物理存储节点,第k物理存储节点不属于第一节点组;第k物理存储节点的第二原始表的确定过程,包括:
接收第一节点组中虚拟数据节点重分配的数据,并基于虚拟数据节点重分配的数据生成第k物理存储节点的第二原始表。
在一种实现方式中,数据分析设备中包含集群管理模块;数据分析设备通过集群管理模块,控制数据库***中第一节点组中的虚拟数据节点执行方法;处理单元1002,还用于:
将数据库***的更改信息提交至集群管理模块;更改信息至少包括:关于组成数据库***的物理存储节点的更改信息,和关于数据库***中原始表的更改信息;
为第二原始表重新建立索引;数据分析设备通过建立的索引能够访问第二原始表中的数据。
在一种实现方式中,处理单元1002,还用于:
当接收到查询请求时,对查询请求进行资源成本预估,得到查询请求对应的预估资源成本;
基于预估资源成本生成查询请求的执行计划;
按照执行计划对数据库***中原始表中的数据进行查询处理;原始表包括第一原始表或者第二原始表。
在一种实现方式中,数据分析设备中包括计划存储器,计划存储器用于存储历史查询请求的查询信息,查询信息至少包括:历史执行计划和历史执行计划的实际资源成本;处理单元1002,用于对查询请求进行资源成本预估,得到查询请求对应的预估资源成本时,具体用于:
响应于查询请求,从计划存储器中查找与查询请求相匹配的历史查询请求的历史执行计划;
若计划存储器中存在与查询请求相匹配的历史查询请求的历史执行计划,则从计划存储器中获取历史执行计划的实际资源成本;
将历史执行计划的实际资源成本作为查询请求的预估资源成本。
在一种实现方式中,数据分析设备中包括谓词缓存模块,谓词缓存模块从谓词维度关联缓存谓词信息和谓词信息对应的历史查询请求的实际资源成本;处理单元1002,用于对查询请求进行资源成本预估,得到查询请求对应的预估资源成本时,具体用于:
获取查询请求的谓词信息;
从谓词缓存模块中确定与谓词信息之间的相似度满足相似度条件的多个候选谓词信息;
对多个候选谓词信息对应的多个历史查询请求的实际资源成本进行平均运算,得到平均运算结果;
将平均运算结果作为查询请求的预估资源成本。
根据本申请的一个实施例,图10所示的数据处理方法中的各个单元可以分别或全部合并为一个或若干个另外的单元来构成,或者其中的某个(些)单元还可以再拆分为功能上更小的多个单元来构成,这可以实现同样的操作,而不影响本申请的实施例的技术效果的实现。上述单元是基于逻辑功能划分的,在实际应用中,一个单元的功能也可以由多个单元来实现,或者多个单元的功能由一个单元实现。在本申请的其它实施例中,该数据处理装置也可以包括其它单元,在实际应用中,这些功能也可以由其它单元协助实现,并且可以由多个单元协作实现。根据本申请的另一个实施例,可以通过在包括中央处理单元(CPU)、随机存取存储介质(RAM)、只读存储介质(ROM)等处理元件和存储元件的例如计算机的通用计算设备上运行能够执行如图3及图8所示的相应方法所涉及的各步骤的计算机程序(包括程序代码),来构造如图10中所示的数据处理装置,以及来实现本申请实施例的数据处理方法。计算机程序可以记载于例如计算机可读记录介质上,并通过计算机可读记录介质装载于上述计算设备中,并在其中运行。
本申请实施例提供了一种全新的数据重分配算法或方案,该方案依赖于为第一原始表创建的镜像表来实现数据的重分配,且确保在重分配过程中第一原始表的可用性,从而确保数据库***的可用性。具体是在重分配过程中,采用镜像表作为中间表来帮助将第一原始表中的数据进行重分配,而第一原始表始终保持原本的功能(如支持数据查询和数据写入等),从而确保存储该第一原始表的数据库***仍然能够对外提供数据读写功能。相比于传统的需要对第一原始表进行脱机以重新分配数据而言,本方案能够实现在线重分配,有效维护重分配过程中第一原始表和数据库***的高可用性。
图11示出了本申请一个示例性实施例提供的一种数据分析设备的结构示意图。请参见图11,该数据分析设备包括处理器1101、通信接口1102以及计算机可读存储介质1103。其中,处理器1101、通信接口1102以及计算机可读存储介质1103可通过总线或者其它方式连接。其中,通信接口1102用于接收和发送数据。计算机可读存储介质1103可以存储在数据分析设备的存储器中,计算机可读存储介质1103用于存储计算机程序,计算机程序包括程序指令,处理器1101用于执行计算机可读存储介质1103存储的程序指令。处理器1101(或称CPU(Central Processing Unit,中央处理器))是数据分析设备的计算核心以及控制核心,其适于实现一条或多条指令,具体适于加载并执行一条或多条指令从而实现相应方法流程或相应功能。
本申请实施例还提供了一种计算机可读存储介质(Memory),计算机可读存储介质是数据分析设备中的记忆设备,用于存放程序和数据。可以理解的是,此处的计算机可读存储介质既可以包括数据分析设备中的内置存储介质,当然也可以包括数据分析设备所支持的扩展存储介质。计算机可读存储介质提供存储空间,该存储空间存储了数据分析设备的处理***。并且,在该存储空间中还存放了适于被处理器1101加载并执行的一条或多条的指令,这些指令可以是一个或多个的计算机程序(包括程序代码)。需要说明的是,此处的计算机可读存储介质可以是高速RAM存储器,也可以是非不稳定的存储器(non-volatilememory),例如至少一个磁盘存储器;可选的,还可以是至少一个位于远离前述处理器的计算机可读存储介质。
在一个实施例中,该计算机可读存储介质中存储有一条或多条指令;由处理器1101加载并执行计算机可读存储介质中存放的一条或多条指令,以实现上述数据处理方法实施例中的相应步骤;具体实现中,计算机可读存储介质中的一条或多条指令由处理器1101加载并执行如下步骤:
获取数据库***中的第一原始表;第一原始表用于存储数据库***中的第一节点组中的数据;
获取第一原始表对应的镜像表,并将第一原始表中的数据移动至镜像表;
按照重分配规则对镜像表中的数据重分配至数据库***中的第二节点组;其中,在重分配的过程中允许对第一原始表执行数据操作;
基于重分配后的镜像表生成第二原始表,第二原始表用于存储第二节点组中的数据。
在一种实现方式中,第一节点组和第二节点组之间的关系包括以下至少一种:第二节点组是对数据库***中的第一节点组进行扩容得到的;或者,第二节点组是对数据库***中的第一节点组进行缩容得到的;或者,第二节点组是对数据库***中的第一节点组进行节点变更得到的;
第一节点组和第二节点组不同,不同包括以下至少一种:第一节点组所包含节点数量和第二节点组所包含节点数量不同;或者,第一节点组所包含的物理存储节点与第二节点组所包含的物理存储节点全部或部分不同。
在一种实现方式中,计算机可读存储介质中的一条或多条指令由处理器1101加载并还执行如下步骤:
对所述第一原始表进行重分配预置处理;
其中,重分配预置处理包括:将第一原始表设置为追加模式;追加模式指示在重分配的过程中,只允许采用追加数据的方式针对第一原始表执行数据操作;数据操作包括以下至少一种:删除操作、更新操作和新增操作;以及,
将第一原始表设置为在重分配的过程中不允许释放表空间;以及,
为第一原始表创建临时删除表;临时删除表用于记录重分配的过程中第一原始表中被执行数据操作的记录的元组键;记录是用于描述数据库***中的事务的一行数据;元组键用于唯一标识记录。
在一种实现方式中,计算机可读存储介质中的一条或多条指令由处理器1101加载并还执行如下步骤:
检测第一原始表中数据的数据量是否小于数据量阈值;
若数据量小于所述数据量阈值,则将第一原始表设置为锁定状态,并触发执行将第一原始表中的数据移动至镜像表的步骤;
其中,处于锁定状态的第一原始表不允许被执行数据操作。
在一种实现方式中,计算机可读存储介质中的一条或多条指令由处理器1101加载并还执行如下步骤:
若数据量大于等于数据量阈值,则触发执行将第一原始表中的数据移动至镜像表,按照重分配规则对镜像表中的数据重分配至数据库***中的第二节点组的步骤;
从第一原始表中删除被重分配至第二节点组中的数据;
检测被删除后的第一原始表中剩余数据的数据量是否小于数据量阈值;剩余数据是第一原始表在重分配的过程中被写入的数据;
若剩余数据的数据量大于等于数据量阈值,则将被删除后的第一原始表中剩余数据移动至镜像表;
从被删除后的第一原始表中删除被重分配至第二节点组中的数据;
迭代上述步骤,直至被删除后的第一原始表中剩余数据的数据量小于数据量阈值,并触发执行将所述第一原始表设置为锁定状态的步骤。
在一种实现方式中,计算机可读存储介质中的一条或多条指令由处理器1101加载并在执行将第一原始表中的数据移动至镜像表;按照重分配规则对镜像表中的数据重分配至数据库***中的第二节点组时,具体执行如下步骤:
获取第一原始表对应的快照表;快照表用于备份第一原始表被执行快照操作时所包含的数据;
将快照表中的数据移动至镜像表,并按照重分配规则对镜像表中的数据重分配至数据库***中的第二节点组。
在一种实现方式中,快照表被划分为多个分段,每个分段中包含至少一个记录,记录是用于描述数据库***中的事务的一行数据;计算机可读存储介质中的一条或多条指令由处理器1101加载并在执行将快照表中的数据移动至镜像表,并按照重分配规则对镜像表中的数据重分配至数据库***中的第二节点组时,具体执行如下步骤:
对快照表进行扫描,将扫描到的快照表中的第i分段所包含的记录移动至镜像表;第i分段为多个分段中的任一分段;
按照重分配规则将第i分段中的记录重分配至第二节点组;重分配规则包括:平均分配规则或者事务类型规则;
重新扫描快照表中的第i+1分段,重复执行上述步骤,直至快照表中的每个分段均被扫描。
在一种实现方式中,计算机可读存储介质中的一条或多条指令由处理器1101加载并还执行如下步骤:
获取第一原始表对应的临时删除表;临时删除表用于记录重分配的过程中第一原始表中被执行数据操作的记录的元组键;元组键用于唯一标识记录;
将镜像表和临时删除表进行融合处理,得到更新后的镜像表;更新后的镜像表中不包含临时删除表中的元组键所标识的记录;
计算机可读存储介质中的一条或多条指令由处理器1101加载并在执行按照重分配规则将第i分段中的记录重分配至第二节点组时,具体执行如下步骤:
按照重分配规则将更新后的镜像表中,第i分段中的记录重分配至第二节点组。
在一种实现方式中,计算机可读存储介质中的一条或多条指令由处理器1101加载并还执行如下步骤:
清空第一原始表对应的临时删除表。
在一种实现方式中,数据处理方法应用于数据分析设备,数据分析设备与数据库***对接;数据分析设备用于访问数据库***中的数据;
数据分析设备通过控制数据库***中第一节点组中的虚拟数据节点执行方法;其中,第一节点组中包括多个物理存储节点,虚拟数据节点对应第一节点组中的一个或多个物理存储节点。
在一种实现方式中,第一节点组中包含一个或多个虚拟数据节点,任一虚拟数据节点表示为第j虚拟数据节点,第j虚拟数据节点持有第一原始表;若第j虚拟数据节点属于第二节点组,则计算机可读存储介质中的一条或多条指令由处理器1101加载并在执行基于重分配后的镜像表生成第二原始表时,具体执行如下步骤:
接收数据库***中除第j虚拟数据节点外的其他虚拟数据节点重分配的数据;
将其他虚拟数据节点重分配的数据,添加至第j虚拟数据节点的重分配后的镜像表中;第j虚拟数据节点的重分配后的镜像表中保留有部分数据;
将添加数据后的镜像表作为第j虚拟数据节点的第二原始表。
在一种实现方式中,第二节点组中包括第k物理存储节点,第k物理存储节点不属于第一节点组;第k物理存储节点的第二原始表的确定过程,包括:
接收第一节点组中虚拟数据节点重分配的数据,并基于虚拟数据节点重分配的数据生成第k物理存储节点的第二原始表。
在一种实现方式中,数据分析设备中包含集群管理模块;数据分析设备通过集群管理模块,控制数据库***中第一节点组中的虚拟数据节点执行方法;计算机可读存储介质中的一条或多条指令由处理器1101加载并还执行如下步骤:
将数据库***的更改信息提交至集群管理模块;更改信息至少包括:关于组成数据库***的物理存储节点的更改信息,和关于数据库***中原始表的更改信息;
为第二原始表重新建立索引;数据分析设备通过建立的索引能够访问第二原始表中的数据。
在一种实现方式中,计算机可读存储介质中的一条或多条指令由处理器1101加载并还执行如下步骤:
当接收到查询请求时,对查询请求进行资源成本预估,得到查询请求对应的预估资源成本;
基于预估资源成本生成查询请求的执行计划;
按照执行计划对数据库***中原始表中的数据进行查询处理;原始表包括第一原始表或者第二原始表。
在一种实现方式中,数据分析设备中包括计划存储器,计划存储器用于存储历史查询请求的查询信息,查询信息至少包括:历史执行计划和历史执行计划的实际资源成本;计算机可读存储介质中的一条或多条指令由处理器1101加载并在执行对查询请求进行资源成本预估,得到查询请求对应的预估资源成本时,具体执行如下步骤:
响应于查询请求,从计划存储器中查找与查询请求相匹配的历史查询请求的历史执行计划;
若计划存储器中存在与查询请求相匹配的历史查询请求的历史执行计划,则从计划存储器中获取历史执行计划的实际资源成本;
将历史执行计划的实际资源成本作为查询请求的预估资源成本。
在一种实现方式中,数据分析设备中包括谓词缓存模块,谓词缓存模块从谓词维度关联缓存谓词信息和谓词信息对应的历史查询请求的实际资源成本;计算机可读存储介质中的一条或多条指令由处理器1101加载并在执行对查询请求进行资源成本预估,得到查询请求对应的预估资源成本时,具体执行如下步骤:
获取查询请求的谓词信息;
从谓词缓存模块中确定与谓词信息之间的相似度满足相似度条件的多个候选谓词信息;
对多个候选谓词信息对应的多个历史查询请求的实际资源成本进行平均运算,得到平均运算结果;
将平均运算结果作为查询请求的预估资源成本。
基于同一发明构思,本申请实施例中提供的数据分析设备解决问题的原理与有益效果与本申请方法实施例中数据处理方法解决问题的原理和有益效果相似,可以参见方法的实施的原理和有益效果,为简洁描述,在这里不再赘述。
本申请实施例还提供一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。数据分析设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述数据处理方法。
本领域普通技术对象可以意识到,结合本申请中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术对象可以对每个特定的应用,使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行计算机程序指令时,全部或部分地产生按照本申请实施例的流程或功能。计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程设备。计算机指令可以存储在计算机可读存储介质中,或者通过计算机可读存储介质进行传输。计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如,同轴电缆、光纤、数字线(DSL))或无线(例如,红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据处理设备。可用介质可以是磁性介质(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如,固态硬盘(Solid State Disk,SSD))等。
以上描述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术对象在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以权利要求的保护范围为准。
Claims (20)
1.一种数据处理方法,其特征在于,包括:
获取数据库***中的第一原始表;所述第一原始表用于存储所述数据库***中的第一节点组中的数据;
获取所述第一原始表对应的镜像表,并将所述第一原始表中的数据移动至所述镜像表;
按照重分配规则对所述镜像表中的数据重分配至所述数据库***中的第二节点组;其中,在重分配的过程中允许对所述第一原始表执行数据操作;
基于重分配后的镜像表生成第二原始表,所述第二原始表用于存储所述第二节点组中的数据。
2.如权利要求1所述的方法,其特征在于,所述第一节点组和所述第二节点组之间的关系包括以下至少一种:所述第二节点组是对所述数据库***中的第一节点组进行扩容得到的;或者,所述第二节点组是对所述数据库***中的第一节点组进行缩容得到的;或者,所述第二节点组是对所述数据库***中的第一节点组进行节点变更得到的;
所述第一节点组和所述第二节点组不同,所述不同包括以下至少一种:所述第一节点组所包含节点数量和所述第二节点组所包含节点数量不同;或者,所述第一节点组所包含的物理存储节点与所述第二节点组所包含的物理存储节点全部或部分不同。
3.如权利要求1所述的方法,其特征在于,所述获取数据库***中的第一原始表之后,还包括:
对所述第一原始表进行重分配预置处理;
其中,所述重分配预置处理包括:将所述第一原始表设置为追加模式;所述追加模式指示在重分配的过程中,只允许采用追加数据的方式针对所述第一原始表执行数据操作;所述数据操作包括以下至少一种:删除操作、更新操作和新增操作;以及,
将所述第一原始表设置为在重分配的过程中不允许释放表空间;以及,
为所述第一原始表创建临时删除表;所述临时删除表用于记录重分配的过程中所述第一原始表中被执行数据操作的记录的元组键;所述记录是用于描述所述数据库***中的事务的一行数据;所述元组键用于唯一标识所述记录。
4.如权利要求1所述的方法,其特征在于,所述将所述第一原始表中的数据移动至所述镜像表之前,还包括:
检测所述第一原始表中数据的数据量是否小于数据量阈值;
若所述数据量小于所述数据量阈值,则将所述第一原始表设置为锁定状态,并触发执行所述将所述第一原始表中的数据移动至所述镜像表的步骤;
其中,处于锁定状态的所述第一原始表不允许被执行数据操作。
5.如权利要求4所述的方法,其特征在于,所述方法还包括:
若所述数据量大于等于所述数据量阈值,则触发执行所述将所述第一原始表中的数据移动至所述镜像表,按照重分配规则对所述镜像表中的数据重分配至所述数据库***中的第二节点组的步骤;
从所述第一原始表中删除被重分配至所述第二节点组中的数据;
检测被删除后的所述第一原始表中剩余数据的数据量是否小于所述数据量阈值;所述剩余数据是所述第一原始表在重分配的过程中被写入的数据;
若所述剩余数据的数据量大于等于所述数据量阈值,则将被删除后的所述第一原始表中剩余数据移动至所述镜像表;
从被删除后的所述第一原始表中删除被重分配至所述第二节点组中的数据;
迭代上述步骤,直至被删除后的所述第一原始表中剩余数据的数据量小于所述数据量阈值,并触发执行所述将所述第一原始表设置为锁定状态的步骤。
6.如权利要求1所述的方法,其特征在于,所述将所述第一原始表中的数据移动至所述镜像表;按照重分配规则对所述镜像表中的数据重分配至所述数据库***中的第二节点组,包括:
获取所述第一原始表对应的快照表;所述快照表用于备份所述第一原始表被执行快照操作时所包含的数据;
将所述快照表中的数据移动至所述镜像表,并按照重分配规则对所述镜像表中的数据重分配至所述数据库***中的第二节点组。
7.如权利要求6所述的方法,其特征在于,所述快照表被划分为多个分段,每个分段中包含至少一个记录,所述记录是用于描述所述数据库***中的事务的一行数据;所述将所述快照表中的数据移动至所述镜像表,并按照重分配规则对所述镜像表中的数据重分配至所述数据库***中的第二节点组,包括:
对所述快照表进行扫描,将扫描到的所述快照表中的第i分段所包含的记录移动至所述镜像表;所述第i分段为所述多个分段中的任一分段;
按照重分配规则将所述第i分段中的记录重分配至所述第二节点组;所述重分配规则包括:平均分配规则或者事务类型规则;
重新扫描所述快照表中的第i+1分段,重复执行上述步骤,直至所述快照表中的每个分段均被扫描。
8.如权利要求7所述的方法,其特征在于,所述按照重分配规则将所述第i分段中的记录重分配至所述第二节点组之前,还包括:
获取所述第一原始表对应的临时删除表;所述临时删除表用于记录重分配的过程中所述第一原始表中被执行数据操作的记录的元组键;所述元组键用于唯一标识所述记录;
将所述镜像表和所述临时删除表进行融合处理,得到更新后的镜像表;更新后的所述镜像表中不包含所述临时删除表中的元组键所标识的记录;
所述按照重分配规则将所述第i分段中的记录重分配至所述第二节点组,包括:
按照重分配规则将更新后的所述镜像表中,所述第i分段中的记录重分配至所述第二节点组。
9.如权利要求8所述的方法,其特征在于,所述方法还包括:
清空所述第一原始表对应的临时删除表。
10.如权利要求1所述的方法,其特征在于,所述方法应用于数据分析设备,所述数据分析设备与所述数据库***对接;所述数据分析设备用于访问所述数据库***中的数据;
所述数据分析设备通过控制所述数据库***中所述第一节点组中的虚拟数据节点执行所述方法;其中,所述第一节点组中包括多个物理存储节点,所述虚拟数据节点对应所述第一节点组中的一个或多个物理存储节点。
11.如权利要求10所述的方法,其特征在于,所述第一节点组中包含一个或多个虚拟数据节点,任一虚拟数据节点表示为第j虚拟数据节点,所述第j虚拟数据节点持有所述第一原始表;若所述第j虚拟数据节点属于所述第二节点组,则所述基于重分配后的镜像表生成第二原始表,包括:
接收所述数据库***中除所述第j虚拟数据节点外的其他虚拟数据节点重分配的数据;
将所述其他虚拟数据节点重分配的数据,添加至所述第j虚拟数据节点的重分配后的镜像表中;所述第j虚拟数据节点的重分配后的镜像表中保留有部分数据;
将添加数据后的所述镜像表作为所述第j虚拟数据节点的第二原始表。
12.如权利要求11所述的方法,其特征在于,所述第二节点组中包括第k物理存储节点,所述第k物理存储节点不属于所述第一节点组;所述第k物理存储节点的第二原始表的确定过程,包括:
接收所述第一节点组中虚拟数据节点重分配的数据,并基于所述虚拟数据节点重分配的数据生成所述第k物理存储节点的第二原始表。
13.如权利要求10所述的方法,其特征在于,所述数据分析设备中包含集群管理模块;所述数据分析设备通过所述集群管理模块,控制所述数据库***中所述第一节点组中的虚拟数据节点执行所述方法;所述方法还包括:
将所述数据库***的更改信息提交至所述集群管理模块;所述更改信息至少包括:关于组成所述数据库***的物理存储节点的更改信息,和关于所述数据库***中原始表的更改信息;
为所述第二原始表重新建立索引;所述数据分析设备通过建立的索引能够访问所述第二原始表中的数据。
14.如权利要求1或10所述的方法,其特征在于,所述方法还包括:
当接收到查询请求时,对所述查询请求进行资源成本预估,得到所述查询请求对应的预估资源成本;
基于所述预估资源成本生成所述查询请求的执行计划;
按照所述执行计划对所述数据库***中原始表中的数据进行查询处理;所述原始表包括所述第一原始表或者所述第二原始表。
15.如权利要求14所述的方法,其特征在于,数据分析设备中包括计划存储器,所述计划存储器用于存储历史查询请求的查询信息,所述查询信息至少包括:历史执行计划和所述历史执行计划的实际资源成本;所述对所述查询请求进行资源成本预估,得到所述查询请求对应的预估资源成本,包括:
响应于所述查询请求,从所述计划存储器中查找与所述查询请求相匹配的历史查询请求的历史执行计划;
若所述计划存储器中存在与所述查询请求相匹配的历史查询请求的历史执行计划,则从所述计划存储器中获取所述历史执行计划的实际资源成本;
将所述历史执行计划的实际资源成本作为所述查询请求的预估资源成本。
16.如权利要求14所述的方法,其特征在于,数据分析设备中包括谓词缓存模块,所述谓词缓存模块从谓词维度关联缓存谓词信息和所述谓词信息对应的历史查询请求的实际资源成本;所述对所述查询请求进行资源成本预估,得到所述查询请求对应的预估资源成本,包括:
获取所述查询请求的谓词信息;
从所述谓词缓存模块中确定与所述谓词信息之间的相似度满足相似度条件的多个候选谓词信息;
对所述多个候选谓词信息对应的多个历史查询请求的实际资源成本进行平均运算,得到平均运算结果;
将所述平均运算结果作为所述查询请求的预估资源成本。
17.一种数据处理装置,其特征在于,包括:
获取单元,用于获取数据库***中的第一原始表;所述第一原始表用于存储所述数据库***中的第一节点组中的数据;
处理单元,用于获取所述第一原始表对应的镜像表,并将所述第一原始表中的数据移动至所述镜像表;
所述处理单元,还用于按照重分配规则对所述镜像表中的数据重分配至所述数据库***中的第二节点组;其中,在重分配的过程中允许对所述第一原始表执行数据操作;
所述处理单元,还用于基于重分配后的镜像表生成第二原始表,所述第二原始表用于存储所述第二节点组中的数据。
18.一种数据分析设备,其特征在于,包括:
处理器,适于执行计算机程序;
计算机可读存储介质,所述计算机可读存储介质中存储有计算机程序,所述计算机程序被所述处理器执行时,实现如权利要求1-16任一项所述的数据处理方法。
19.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,所述计算机程序适于被处理器加载并执行如权利要求1-16任一项所述的数据处理方法。
20.一种计算机程序产品,其特征在于,所述计算机程序产品包括计算机指令,所述计算机指令被处理器执行时实现如权利要求1-16任一项所述的数据处理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310603380.7A CN116975053A (zh) | 2023-05-25 | 2023-05-25 | 一种数据处理方法、装置、设备、介质及程序产品 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310603380.7A CN116975053A (zh) | 2023-05-25 | 2023-05-25 | 一种数据处理方法、装置、设备、介质及程序产品 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116975053A true CN116975053A (zh) | 2023-10-31 |
Family
ID=88472002
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310603380.7A Pending CN116975053A (zh) | 2023-05-25 | 2023-05-25 | 一种数据处理方法、装置、设备、介质及程序产品 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116975053A (zh) |
-
2023
- 2023-05-25 CN CN202310603380.7A patent/CN116975053A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10754874B2 (en) | Query dispatching system and method | |
JP7410181B2 (ja) | ハイブリッド・インデックス作成方法、システム、プログラム | |
Marcu et al. | Spark versus flink: Understanding performance in big data analytics frameworks | |
CN107247808B (zh) | 一种分布式NewSQL数据库***及图片数据查询方法 | |
JP2019194882A (ja) | ファーストクラスデータベース要素としての半構造データの実装 | |
Khalifa et al. | The six pillars for building big data analytics ecosystems | |
US20140279855A1 (en) | Differentiated secondary index maintenance in log structured nosql data stores | |
US9922086B1 (en) | Consistent query of local indexes | |
JPWO2012121316A1 (ja) | 分散ストレージシステムおよび方法 | |
US20060161539A1 (en) | Method and system of database management with shared area | |
CN106569896B (zh) | 一种数据分发及并行处理方法和*** | |
US20120284231A1 (en) | Distributed, asynchronous and fault-tolerant storage system | |
US20160210228A1 (en) | Asynchronous garbage collection in a distributed database system | |
US20230418811A1 (en) | Transaction processing method and apparatus, computing device, and storage medium | |
US20170270149A1 (en) | Database systems with re-ordered replicas and methods of accessing and backing up databases | |
Margara et al. | A model and survey of distributed data-intensive systems | |
CN117321583A (zh) | 用于混合数据处理的存储引擎 | |
Sundarakumar et al. | A comprehensive study and review of tuning the performance on database scalability in big data analytics | |
CN115114370A (zh) | 主从数据库的同步方法、装置、电子设备和存储介质 | |
CN111930684A (zh) | 基于hdfs的小文件处理方法、装置、设备及存储介质 | |
US11940972B2 (en) | Execution of operations on partitioned tables | |
JP2023546818A (ja) | データベースシステムのトランザクション処理方法、装置、電子機器、及びコンピュータプログラム | |
CN116975053A (zh) | 一种数据处理方法、装置、设备、介质及程序产品 | |
KR101792189B1 (ko) | 빅 데이터 처리 장치 및 방법 | |
Singh | NoSQL: A new horizon in big data |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication |