CN117762949B - 数据抽取方法、装置、电子设备及存储介质 - Google Patents
数据抽取方法、装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN117762949B CN117762949B CN202410185945.9A CN202410185945A CN117762949B CN 117762949 B CN117762949 B CN 117762949B CN 202410185945 A CN202410185945 A CN 202410185945A CN 117762949 B CN117762949 B CN 117762949B
- Authority
- CN
- China
- Prior art keywords
- data
- scheme
- division scheme
- extracted
- preset threshold
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 53
- 238000013075 data extraction Methods 0.000 title claims abstract description 41
- 238000000605 extraction Methods 0.000 claims abstract description 40
- 238000000638 solvent extraction Methods 0.000 claims description 41
- 238000005192 partition Methods 0.000 claims description 37
- 238000004590 computer program Methods 0.000 claims description 13
- 230000008569 process Effects 0.000 claims description 8
- 238000010586 diagram Methods 0.000 description 6
- 238000005516 engineering process Methods 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 3
- 238000011161 development Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 238000013459 approach Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 239000002360 explosive Substances 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请实施例提供了一种数据抽取方法、装置、电子设备及存储介质,涉及数据库领域。该方法包括:确定待抽取数据表,从待抽取数据表中数据的至少一个划分方案中确定第一划分方案;根据预设阈值对第一划分方案进行更新,获得第二划分方案,第二划分方案中数据区间的数量为预设阈值,且第二划分方案中各个数据区间中数据的存储总量均衡,并行地从第二划分方案中的各个数据区间抽取待抽取数据表中的目标数据,获得目标数据集。本申请实施例在未额外增加人力成本或者硬件成本的条件下,依然能够高效实现对海量数据的抽取工作。
Description
技术领域
本申请涉及数据库技术领域,具体而言,本申请涉及一种数据抽取方法、装置、电子设备及存储介质。
背景技术
目前,传统的数据抽取工作陷入了如下两难境地:不了解业务数据的组织知识就无法进行工作量拆分,了解大量业务知识并利用其进行理想工作量拆分则会引入大量学习成本。
相关技术通过从数据库的外部进行二次扩展的方式来突破上述两难境地,比如如下两种二次扩展方式:
1、利用数据表(数据库向外提供的一种数据的形式)中指定数据列(如数值,日期和时间戳等有序且易于进行范围等分的类型)的最大最小值,将数据表的整个数据区间自动等分为指定数量的数据区间,并将等分后的各个数据区间用于后续的并行工作处理。
2、围绕业务数据构建额外的数据登记表,也即每写入一条业务数据,则在数据登记表中登记该条业务数据所属的分区。在数据抽取过程中,先获取数据登记表中各个分区,从而确定多个数据量近似的数据区间。
然而,由于业务数据的实际分布和指定数据列之间存在偏差,利用指定数据列进行等分,可能使得所得的各个数据区间中的数据量之间差别较大,出现了数据倾斜现象,后期仍需再次投入精力去调整各个数据区间,才能获得数据量均衡的数据区间。数据登记表虽能完成业务数据的等分工作,然而数据登记表需要投入额外的人力和硬件资源。因此,这两种方式无疑都提高了抽取成本。
随着互联网的发展,业务数据呈现爆发式增长,当前的数据抽取工作是面对成百上千万条的业务数据,针对如此数据量的数据,工作量划分效率将直接影响数据抽取工作的效率。
发明内容
本申请实施例的目的旨在能解决上述问题之一。
一方面,本申请实施例提供了一种数据抽取方法,应用于数据库,数据库存储多个数据表,每个数据表中的数据通过至少一个划分方案进行划分,每个划分方案包括多个数据区间,每个数据区间包括数据表中至少一条数据,该方法包括:
确定待抽取数据表。从待抽取数据表中数据的至少一个划分方案中确定第一划分方案。根据预设阈值对第一划分方案进行更新,获得第二划分方案,第二划分方案中数据区间的数量为预设阈值,且第二划分方案中各个数据区间中数据的存储总量均衡。并行地从第二划分方案中的各个数据区间抽取待抽取数据表中的目标数据,获得目标数据集。
可选的,待抽取数据表的数据结构为 region结构或者B树结构,其中,region结构包括多个区域,每个区域包括待抽取数据表中的至少一条数据;B树结构包括多个层级,每个层级包括多个节点,每个节点包括待抽取数据表中的至少一条数据。
其中,待抽取数据表中数据的至少一个划分方案通过以下过程确定:
若确定待抽取数据表的数据结构为region结构,则根据region结构确定一个划分方案,该划分方案中的一个数据区间对应region结构中的一个区域。若确定待抽取数据表的数据结构为B树结构,则对于B树结构中的每个层级,确定层级对应的划分方案,该划分方案中的一个数据区间对应层级中的一个节点。
可选的,从待抽取数据表中数据的至少一个划分方案中确定第一划分方案,包括:
若确定待抽取数据表的数据结构为region结构,则将待抽取数据表对应的划分方案作为第一划分方案。若确定待抽取数据表的数据结构为B树结构,则根据预设阈值和B树结构,从待抽取数据表中数据的至少一个划分方案中确定第一划分方案。
可选的,根据预设阈值和B树结构,从待抽取数据表中数据的至少一个划分方案中确定第一划分方案,包括:
若B树结构中的底层级中节点的数量大于预设阈值,则从底层级开始依序遍历B树结构中的各个层级,获得各个层级的比对结果,比对结果为相应层级中节点的数量与预设阈值的大小关系。根据B树结构中各个层级的比对结果确定目标层级,并将由目标层级对应的划分方案作为第一划分方案,其中,目标层级满足:目标层级中节点的数量不小于预设阈值,且目标层级的上一层级中节点的数量小于预设阈值。
可选的,该方法包括:
若B树结构中底层级中节点的数量不大于预设阈值,则将由底层级对应的划分方案作为第二划分方案。
可选的,待抽取数据表中的每条数据还包括一个索引,每个数据区间中的各条数据按照相应的索引进行排序,第一划分方案中各个数据区间按照相应的首条数据的索引进行排序。
其中,根据预设阈值对第一划分方案进行更新,获得第二划分方案,包括:
若第一划分方案中数据区间的数量大于预设阈值,则将第一划分方案中数据区间的数量与预设阈值的比值向下取整,获得一个单位合并数量。对第一划分方案中相邻的数据区间按照单位合并数量进行合并,获得数量为预设阈值的新数据区间。将包括数量为预设阈值的新数据区间的第一划分方案确定为第二划分方案。
其中,若第一划分方案中数据区间的数量不大于预设阈值,则将第一划分方案作为第二划分方案。
可选的,每个数据区间还包括一个存储终端的地址,存储终端用于存储数据区间中的数据。并行地从第二划分方案中的各个数据区间抽取待抽取数据表中的目标数据,获得目标数据集,包括:
确定与存储第二划分方案中各个数据区间中数据的终端建立连接,并根据第二划分方案中的每个数据区间创建一个抽取任务。通过并行地执行每个抽取任务,从每个抽取任务相应的数据区间中抽取目标数据,获得目标数据集。
本申请实施例还提供了一种电子设备,该电子设备包括:存储器、处理器及存储在存储器上的计算机程序,处理器执行计算机程序以实现本申请提供的一种数据抽取方法的步骤。
本申请实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现一种数据抽取方法的步骤。
本申请实施例提供的技术方案带来的有益效果是:
本申请是从数据库内部管理的角度去解决工作量划分的问题。一般而言,为了提高对数据表的查找效率,数据库会按照至少一个划分方案对数据表中的数据进行均衡的划分,每个划分方案包括多个数据区间,每个数据区间包括数据表中至少一条数据,各个划分方案中各个数据区间的存储总量均衡。对于待抽取数据表而言,可以从待抽取数据表中数据的至少一个划分方案中可以确定第一划分方案。在数据抽取阶段,通常会通过设置多个并行的抽取任务来提高抽取效率,而一个抽取任务一次只能对接一个数据区间,因此,可以通过设置一个预设阈值来表征抽取任务的并行数量,并通过预设阈值来更新第一划分方案,获得第二划分方案,其中,第二划分方案中各个数据区间中数据的存储总量均衡。因此,按照第二划分方案对待抽取数据表中的数据进行重新划分,所得的各个数据区间中数据的存储总量均衡,最后,并行地对第二划分方案中各个数据区间执行抽取任务时,各个抽取任务可几乎同时完成。
本申请实施例提供的技术方案并没有如相关技术那样需要额外增加人力成本或者硬件成本,而且当待抽取数据表中的数据达到千万条时,将待抽取数据表中的数据按照重新确定的第二划分方案进行划分,也可以得到存储总量均衡的多个数据区间。进一步地,对各个存储总量均衡的数据区间进行数据抽取,可以几乎同时完成对各个数据区间的数据抽取操作,而这相当于高效完成了数据抽取工作。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对本申请实施例描述中所需要使用的附图作简单地介绍。
图1a为相关技术提供的一种二次扩展方式的分区结果示意图;
图1b为相关技术提供的另一种二次扩展方式的分区获取过程示意图;
图2为本申请实施例提供的一种数据抽取方法的流程示意图;
图3a为本申请实施例提供的一种region结构的示意图;
图3b为本申请实施例提供的一种B树结构的示意图;
图4为本申请实施例提供的一种并列执行4个执行任务的流程示意图;
图5为本申请实施例提供的一种数据抽取装置的结构示意图;
图6为本申请实施例提供的一种电子设备的结构示意图。
具体实施方式
下面结合本申请中的附图描述本申请的实施例。应理解,下面结合附图所阐述的实施方式,是用于解释本申请实施例的技术方案的示例性描述,对本申请实施例的技术方案不构成限制。
本技术领域技术人员可以理解,除非特意声明,这里使用的单数形式“一”、“一个”、“所述”和“该”也可包括复数形式。应该进一步理解的是,本申请实施例所使用的术语“包括”以及“包含”是指相应特征可以实现为所呈现的特征、信息、数据、步骤、操作、元件和/或组件,但不排除实现为本技术领域所支持其他特征、信息、数据、步骤、操作、元件、组件和/或它们的组合等。应该理解,当我们称一个元件被“连接”或“耦接”到另一元件时,该一个元件可以直接连接或耦接到另一元件,也可以指该一个元件和另一元件通过中间元件建立连接关系。此外,这里使用的“连接”或 “耦接”可以包括无线连接或无线耦接。这里使用的术语“和/或”指示该术语所限定的项目中的至少一个,例如“A和/或B”指示实现为“A”,或者实现为“A”,或者实现为“A和B”。
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
首先对本申请涉及的几个名词进行介绍和解释:
B树:是一种自平衡的树,能够保持数据有序。这种数据结构能够让查找数据、顺序访问、插入数据及删除的动作,都在对数时间内完成。B树,概括来说是一个一般化的二叉查找树(binary search tree),可以拥有多于2个子节点。与自平衡二叉查找树不同,B树为系统大块数据的读写操作做了优化。B树减少定位记录时所经历的中间过程,从而加快存取速度。B树这种数据结构可以用来描述外部存储。这种数据结构常被应用在数据库和文件系统的实现上。
region:区域,是HBase(数据库)中数据的逻辑分片,每个数据表在HBase中被分割成多个region,每个reigon存储数据表中的一部分数据。region通过行键范围进行表示。比如,对于行键范围:[10,25]表示的region,region中存储的数据从行键=10开始到行键=25结束,总共16条数据。
图1a示出了背景技术中第1种二次扩展方式的分区结果。数据表中的数据被分成了5个分区,这5个分区中2个分区关联的数据的存储总量高于其他分区,被称作倾斜分区。若同时对5个分区启动并行抽取操作,则针对倾斜分区的抽取操作会延迟结束,从而影响数据抽取工作的进度。
图1b示出了背景技术中第2种二次扩展方式的分区获取过程。数据库不仅存储了业务数据表,还存储了与业务数据表对应的数据登记表。在写入一条业务数据时,还在数据登记表中登记业务数据和业务数据所属的分区。然而,数据库存储的数据表数量不限,若额外为每个数据表增设一个数据登记表,则对于硬件资源的耗费无法估量。
本申请提供的一种数据抽取方法、装置、电子设备及存储介质,旨在解决现有技术的如上技术问题。
下面通过对几个示例性实施方式的描述,对本申请实施例的技术方案以及本申请的技术方案产生的技术效果进行说明。需要指出的是,下述实施方式之间可以相互参考、借鉴或结合,对于不同实施方式中相同的术语、相似的特征以及相似的实施步骤等,不再重复描述。
图2示出了一种数据抽取方法的流程示意图,其中,该方法应用于数据库,并包括如下步骤S110~S140。
S110,确定待抽取数据表。
其中,数据库存储多个数据表,每个数据表中的数据通过至少一个划分方案进行划分,每个划分方案包括多个数据区间,每个数据区间包括数据表中的至少一条数据。另外,每个划分方案中各个数据区间中数据的存储总量均衡。
其中,每个数据表中数据的至少一个划分方案可以理解为一个划分方案,或者一个以上的划分方案。
其中,每个划分方案中数据区间的数量不同。
具体而言,数据表中的每条数据包括一个索引。可选的,该索引可以为该条数据生成时根据生成时间创建的索引,也可以为该条数据在数据表中按照生成时间的顺序分配的索引,还可以为按照数据表中某列的数值的大小顺序分配的索引。数据表中的各条数据按照相应的索引进行排序,然后数据库根据一个划分方案对已排序的数据进行划分,或者同时根据多个划分方案对已排序的数据进行多次划分,从而获得每个划分方案的多个数据区间,其中,数据区间中的每条数据均可以通过相应的索引来进行标识。由于各个数据区间中的数据是按照索引进行先后排序,因此,对于一个数据区间而言,还可以将首条数据的索引和最后一条数据的索引进行组合,获得一个索引范围,通过索引范围来表征一个数据区间。
在一个示例中,分布式数据库HBase中存储多个表格,每个表格包括多条记录,每条记录包括一个Rowkey,Rowkey是该条记录的全局唯一的标识。表格即为一种数据表,可以将表格中的一条记录理解为一条数据,并将记录中的Rowkey理解为索引。
其中,数据库中的每个数据表包括一个表标识,该表标识可以为数据表的名称,数据库根据表标识存储相应的数据表。可选的,接收用户输入的数据抽取请求,数据抽取请求包括待抽取数据表的表标识,根据数据抽取请求中的表标识从多个数据表中确定待抽取数据表。
可选的,待抽取数据表的数量为一个或者一个以上。
S120,从待抽取数据表中数据的至少一个划分方案中确定第一划分方案。
具体而言,第一划分方案为至少一个划分方案中的一个划分方案。
S130,根据预设阈值对所述第一划分方案进行更新,获得第二划分方案。
其中,第二划分方案中数据区间的数量为所述预设阈值,且第二划分方案中各个数据区间中数据的存储总量均衡。
在数据抽取阶段,可对各个数据区间同时启动抽取任务,因此设置抽取任务的并行数量是提升抽取效率的关键。一方面,一个抽取任务一次只能从一个数据区间中抽取数据,另一方面,抽取任务的并行数量容易受到硬件资源的限制,再者,第一划分方案中数据区间的数量和抽取任务的并行数量并不一定对等。因此,为了高效利用硬件资源,设置一个预设阈值来表征抽取任务的并行数量,将预设阈值作为一个影响因子对第一划分方案进行更新,获得数据区间的数量为预设阈值的第二划分方案。
在一个示例中,若硬件资源为3台服务器,各台服务器可并行的抽取任务的数量分别为:2,3,1,也就是说,受限于3台服务器资源,最终并行的抽取任务的数量为6,那么预设阈值就是6。
S140,并行地从第二划分方案中的各个数据区间抽取所述待抽取数据表中的目标数据,获得目标数据集。
本申请实施例提供的技术方案并没有如相关技术那样需要额外增加人力成本或者硬件成本,而且当待抽取数据表中的数据达到千万条时,将待抽取数据表中的数据按照重新确定的第二划分方案进行划分,也可以得到存储总量均衡的多个数据区间。进一步地,对各个存储总量均衡的数据区间进行数据抽取,可以几乎同时完成对各个数据区间的数据抽取操作,而这相当于高效完成了数据抽取工作。
在上述实施例的基础上,本申请还提供了一个实施例来阐述待抽取数据表中数据的至少一个划分方案的确定过程,如下步骤S101和S102所示。
其中,本申请实施例所涉及的数据库为关系型数据库,关系型数据库中数据表的数据结构一般为B树结构和region结构,待抽取数据表为关系型数据库中的任一数据表。region结构包括多个区域,每个区域包括待抽取数据表中的至少一条数据。B树结构包括多个层级,每个层级包括多个节点,每个节点包括待抽取数据表中的至少一条数据。
S101,若确定待抽取数据表的数据结构为region结构,则根据region结构确定一个划分方案,该划分方案中的一个数据区间对应region结构中的一个区域。
其中,每个区域包括一个索引范围,并用于存储索引范围内每个索引所表征的数据。region结构中的各个区域的索引范围存在先后顺序,所以各个区域按照相应的索引范围的先后顺序排列。
具体而言,根据region结构确定一个划分方案,包括:确定region结构中的各个区域对应一个数据区间,则各个数据区间组成一个划分方案。
可选的,划分方案中的一个数据区域可以为region结构中的相应区域的索引范围。
为了更清楚地理解以region结构存储的待抽取数据表,本申请还提供了一个示例,如图3a所示。region结构包括依序排列的多个区域,每个区域中存储的数据的索引范围如图3a所示。
图3a示出了8个区域,通过该region结构确定的划分方案包括8个数据区间。各个数据区间的索引范围依次为:[4,15),[15,24) ,[24,35) ,[35,46) ,[46,55) ,[55,66) ,[66,76) ,[76,89]。
S102,若确定待抽取数据表的数据结构为B树结构,则对于B树结构中的每个层级,确定层级对应的划分方案,该划分方案中的一个数据区间对应层级中的一个节点。
具体而言,层级中的每个节点均包括一个索引范围,一个索引范围包括多个索引,每个索引即代表了一条数据。B树结构中的多个层级从上到下排列,对于每个层级,若层级为非最底层级,则层级中的每个节点的索引范围包括下一层级中至少一个节点的索引范围。
具体而言,确定层级对应的划分方案,可以包括:确定层级中的每个节点对应一个数据区间,各个数据区间组成一个划分方案。
可选的,划分方案中的一个数据区间可以为层级中的相应节点的索引范围。
为了更清楚地理解以B树结构存储的待抽取数据表,本申请还提供了一个示例,如图3b所示。B树结构包括从上到下排列的3个层级,首个层级包括1个节点,第二个层级包括3个层级,并且首个层级的索引范围包括第二个层级中的3个节点的索引范围,第二个层级中每个节点又包括底层级中3个节点的索引范围。
以图3b中第二个层级为示例,第二个层级包括3个节点,索引范围的标识依次为:“4,16,25”、“32,43,49”、“64,79,89”,其实质的索引范围依次是:[-∞,32) ,[32,64] ,(64,+∞]。第二个层级中每个节点关联第三个层级中的3个节点,索引范围的标识中存在3个索引,每个索引都是关联的节点的索引范围中的首个索引,以第二个层级中的首个节点为例,其关联第三个层级中的节点的索引范围的标识依次为:“4,8”、“16,20”、“25,27”,且其索引范围的标识中“4、16、25”分别为3个索引范围中的首个索引。
在上述实施例的基础上,本申请还提供了依据待抽取数据表的数据结构确定第一划分方案的实现方式。
其中,步骤S120具体可以实现为S121或S122:
S121,若确定待抽取数据表关联region结构,则将待抽取数据表对应的划分方案作为第一划分方案。
S122,若确定待抽取数据表的数据结构为B树结构,则根据预设阈值和B树结构,从待抽取数据表中数据的至少一个划分方案中确定第一划分方案。
在该实施例的一个可能的实现方式中,B树结构中的各个层级按照相应层级中节点的数量从高到低依序排列,则S122具体包括如下2个步骤S122(1)~S122(2)。
S122(1),若B树结构中的底层级中节点的数量大于预设阈值,则从底层级开始依序遍历B树结构中的各个层级,获得各个层级的比对结果,比对结果为相应层级中节点的数量与预设阈值的大小关系。
其中,B树结构中的底层级为B树结构中最底层的层级。一般而言,与底层级对应的划分方案能够将待抽取数据表按照最细划分粒度进行划分,其他层级的划分粒度较之于底层级的划分粒度更粗。考虑到要根据预设阈值更新第一划分方案,将各个数据区间进行重新合并,因此需要从底层级开始遍历B树结构中的各个层级。
在一个可能的实现方式中,若B树结构中的底层级中节点的数量不大于预设阈值,则将由底层级对应的划分方案作为第二划分方案。
具体而言,若不大于预设阈值,则说明B树结构的底层级的划分粒度刚刚好或者不足,无需再对其他层级进行遍历,同样也无需对其的数据区间再次进行更新,可以直接将底层级对应的划分方案作为第二划分方案。
S122(2),根据B树结构中各个层级的比对结果确定目标层级,并将由目标层级对应的划分方案作为第一划分方案,其中,目标层级满足:
目标层级中节点的数量不小于预设阈值,且目标层级的上一层级中节点的数量小于预设阈值。
在上述实施例的基础上,本申请还提供了一个实施例,该实施例用于阐述第二划分方案的产生过程,步骤S130包括如下步骤S131~S133。
其中,待抽取数据表中的每条数据还包括一个索引,每个数据区间中的各条数据按照相应的索引进行排序,第一划分方案中各个数据区间按照相应的首条数据的索引进行排序。
S131,若第一划分方案中数据区间的数量大于预设阈值,则将第一划分方案中数据区间的数量与预设阈值的比值向下取整,获得一个单位合并数量。
具体而言,单位合并数量是指对第一划分方案中各个数据区间进行合并时的数量。
其中,若第一划分方案中数据区间的数量不大于预设阈值,则将第一划分方案作为第二划分方案。
S132,对所述第一划分方案中相邻的数据区间按照单位合并数量进行合并,获得数量为所述预设阈值的新数据区间。
具体而言,从第一划分方案中首个数据区间开始,依次确定多组单位合并数量的数据区间,并将每组单位合并数量的数据区间作为一个新数据区间。
可选的,每个数据区间还包括一个存储终端的地址,存储终端用于存储数据区间中的数据。在确定多组单位合并数量的数据区间之后,第一划分方案还剩余若干数据区间未被合并,且若干数据区间的数量小于单位合并数量。对于若干数据区间中的每个数据区间,将数据区间合并至目标新数据区间,数据区间的地址与目标新数据区间的地址一致。
S133,将包括数量为预设阈值的新数据区间的第一划分方案确定为第二划分方案。
在上述实施例的基础上,本申请还提供了一种实施例用于阐述并行执行的过程,其中,步骤S140还包括如下步骤S141~S142。
S141,确定与存储第二划分方案中各个数据区间中数据的终端建立连接,并根据第二划分方案中的每个数据区间创建一个抽取任务。
S142,通过并行地执行每个抽取任务,从每个抽取任务相应的数据区间中抽取目标数据,获得目标数据集。
由于各个抽取任务所对应的数据区间中数据的存储总量是均衡的,通过并行的方式去执行,可使得各个抽取任务同时完成。
为了更清楚地理解一种数据抽取方法的技术效果,本申请实施例还提供了一个示例,本示例中待抽取数据表为订单明细数据表,订单明细数据表的表标识为表的名称(如,“order_items”)。order_items的数据结构为region结构,并且region结构中的各个区域的分布如图3a所示。另外,order_items关联一个产品数据表(如,“products”)。本示例中,设置3台服务器,各台服务器能够同时运行的抽取任务的数量为:1,1,2,也即预设阈值为4。本示例还通过如下3步来阐述整个过程。
第一步,创建order_items和products。具体而言,数据库通过SQL语句1和SQL语句2创建的两个数据表。
SQL语句1:
CREATE TABLE order_items (
order_item_id INT(11) NOT NULL AUTO_INCREMENT,
order_id INT(11) NOT NULL,
product_id INT(11) NOT NULL,
final_price DECIMAL(15,6) NOT NULL,
quantity INT(11) NOT NULL,
PRIMARY KEY(order_item_id),//主键
KEY idx_order_id (order_id),//索引1
KEY idx_product_id (product_id)//索引2
);
SQL语句2:
CREATE TABLE products (//产品表
product_id INT(11) NOT NULL AUTO_INCREMENT,
……
PRIMARY KEY(product_id),
……
);
通过SQL语句1可知,“order_item_id”、“order_id”或者“product_id”的数值都可以作为order_items中每条数据的索引,或者将每条数据在order_items中的行键值作为索引。
第二步,接收输入的SQL语句3。可以将SQL语句3理解为数据抽取请求。
SQL语句3:
INSERT INTO order.dwd_order_items (order_id, order_item_id, product_name, product_price, final_price, quantity) SELECT o.order_id, o.order_item_id, p.name, p.price, o.final_price, o.quantity FROM order_items as o INNERJOIN products as p ON o.product_id = p.product_id;
数据库接收到SQL语句3之后,获取SQL语句3中的待抽取数据表的表标识order_items,根据order_items获取各个划分方案,并确定第一划分方案。order_items的第一划分方案如图3a所示,包括8个数据区间。再根据预设阈值“4”更新第一划分方案之后,获得第二划分方案。第二划分方案中各个数据区间的信息如下表1所示。
表1
表1列出了4个数据区间,其索引范围依次为:[-∞, 24), [24, 46), [46, 66),[66, +∞)。以id=2的数据区间为例,数据区间包括9条数据,数据区间中数据的存储总量为1kb,存储数据区间中数据的存储终端为server_b。
数据库根据第二划分方案中的数据区间解析SQL语句3,获得SQL语句4。
SQL语句4:
INSERT INTO order.dwd_order_items(order_id, order_item_id, product_name, product_price, final_price, quantity) (
SELECT o.order_id, o.order_item_id, p.name, p.price, o.final_price,o.quantityFROM order_items as o TABLESPLIT(‘rowkey_-∞’, ‘rowkey_24’) INNERJOIN products as p ON o.product_id = p.product_id UNION ALL
SELECT o.order_id, o.order_item_id, p.name, p.price, o.final_price,o.quantityFROM order_items as o TABLESPLIT(‘rowkey_24’, ‘rowkey_46’) INNERJOIN products as p ON o.product_id = p.product_id UNION ALL
SELECT o.order_id, o.order_item_id, p.name, p.price, o.final_price,o.quantityFROM order_items as o TABLESPLIT(‘rowkey_46’, ‘rowkey_66’) INNERJOIN products as p ON o.product_id = p.product_id UNION ALL
SELECT o.order_id, o.order_item_id, p.name, p.price, o.final_price,o.quantityFROM order_items as o TABLESPLIT(‘rowkey_66’, ‘rowkey_ +∞’) INNERJOIN products as p ON o.product_id = p.product_id;
);
第三步,解析SQL语句4,获得4个执行计划,并行地启动4个执行计划,获得通过4个执行计划抽取的目标数据。参照图4所示的流程图:
S1001,获取执行计划列表;
S1002,并行地运行4个执行计划,分别为执行计划1、执行计划2、执行计划3和执行计划4。
S1003,合并由各个执行计划输出的目标数据,获得目标数据集。
S1004,输出目标数据集。
一方面,各个步骤中,对接的是标准的SQL语句,也就是说可以同相关技术中的集成产品和大数据产品无障碍对接。另一方面,数据库无需额外的开发维护操作,没有额外硬件资源消耗。再一方面,关系型数据库中各个数据表的数据结构,本身就已经是按照存储量均衡的方式进行划分,因此基于数据表的数据结构可以获得存储量均衡的多个数据区间,基于重新划分的数据区间进行数据抽取,可快速完成数据抽取操作。
图5示出了一种数据抽取装置500,应用于数据库应用于数据库,数据库存储多个数据表,每个数据表中的数据通过至少一个划分方案进行划分,每个划分方案包括多个数据区间,每个数据区间包括数据表中至少一条数据,装置包括:第一确定模块510,第二确定模块520,更新模块530和抽取模块540。
第一确定模块510,用于确定待抽取数据表。
第二确定模块520,用于从待抽取数据表中数据的至少一个划分方案中确定第一划分方案。
更新模块530,用于根据预设阈值对第一划分方案进行更新,获得第二划分方案,第二划分方案中数据区间的数量为预设阈值,且第二划分方案中各个数据区间中数据的存储总量均衡。
抽取模块540,用于并行地从第二划分方案中的各个数据区间抽取待抽取数据表中的目标数据,获得目标数据集。
本申请实施例的装置可执行本申请实施例所提供的方法,其实现原理相类似,本申请各实施例的装置中的各模块所执行的动作是与本申请各实施例的方法中的步骤相对应的,对于装置的各模块的详细功能描述具体可以参见前文中所示的对应方法中的描述,此处不再赘述。
本申请实施例中提供了一种电子设备,包括存储器、处理器及存储在存储器上的计算机程序,该处理器执行上述计算机程序以实现数据抽取方法的步骤,与现有技术相比可实现:本申请实施例在未额外增加人力成本或者硬件成本的条件下,依然能够高效实现对海量数据的抽取工作。
参见图6,本申请实施例还提供了一种电子设备具体示例,图6所示的电子设备6000包括:处理器6001和存储器6003。其中,处理器6001和存储器6003相连,如通过总线6002相连。可选地,电子设备6000还可以包括收发器6004,收发器6004可以用于该电子设备与其他电子设备之间的数据交互,如数据的发送和/或数据的接收等。需要说明的是,实际应用中收发器6004不限于一个,该电子设备6000的结构并不构成对本申请实施例的限定。
处理器6001可以是CPU(Central Processing Unit,中央处理器),通用处理器,DSP(Digital Signal Processor,数据信号处理器),ASIC(Application SpecificIntegrated Circuit,专用集成电路),FPGA(Field Programmable Gate Array,现场可编程门阵列)或者其他可编程逻辑器件、晶体管逻辑器件、硬件部件或者其任意组合。其可以实现或执行结合本申请公开内容所描述的各种示例性的逻辑方框,模块和电路。处理器6001也可以是实现计算功能的组合,例如包含一个或多个微处理器组合,DSP和微处理器的组合等。
总线6002可包括一通路,在上述组件之间传送信息。总线6002可以是PCI(Peripheral Component Interconnect,外设部件互连标准)总线或EISA(ExtendedIndustry Standard Architecture,扩展工业标准结构)总线等。总线6002可以分为地址总线、数据总线、控制总线等。为便于表示,图6中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
存储器6003可以是ROM(Read Only Memory,只读存储器)或可存储静态信息和指令的其他类型的静态存储设备,RAM(Random Access Memory,随机存取存储器)或者可存储信息和指令的其他类型的动态存储设备,也可以是EEPROM(Electrically ErasableProgrammable Read Only Memory,电可擦可编程只读存储器)、CD-ROM(Compact DiscRead Only Memory,只读光盘)或其他光盘存储、光碟存储(包括压缩光碟、激光碟、光碟、数字通用光碟、蓝光光碟等)、磁盘存储介质、其他磁存储设备、或者能够用于携带或存储计算机程序并能够由计算机读取的任何其他介质,在此不做限定。
存储器6003用于存储执行本申请实施例的计算机程序,并由处理器6001来控制执行。处理器6001用于执行存储器6003中存储的计算机程序,以实现前述方法实施例所示的步骤。
其中,电子设备包括但不限于:服务器。
本申请实施例提供了一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时可实现前述方法实施例的步骤及相应内容。
应该理解的是,虽然本申请实施例的流程图中通过箭头指示各个操作步骤,但是这些步骤的实施顺序并不受限于箭头所指示的顺序。除非本文中有明确的说明,否则在本申请实施例的一些实施场景中,各流程图中的实施步骤可以按照需求以其他的顺序执行。此外,各流程图中的部分或全部步骤基于实际的实施场景,可以包括多个子步骤或者多个阶段。这些子步骤或者阶段中的部分或全部可以在同一时刻被执行,这些子步骤或者阶段中的每个子步骤或者阶段也可以分别在不同的时刻被执行。在执行时刻不同的场景下,这些子步骤或者阶段的执行顺序可以根据需求灵活配置,本申请实施例对此不限制。
以上所述仅是本申请部分实施场景的可选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请的方案技术构思的前提下,采用基于本申请技术思想的其他类似实施手段,同样属于本申请实施例的保护范畴。
Claims (11)
1.一种数据抽取方法,其特征在于,应用于数据库,所述数据库存储多个数据表,所述数据表的数据结构为region结构或者B树结构,每个数据表中的数据通过至少一个划分方案进行划分,每个划分方案包括多个数据区间,每个数据区间包括所述数据表中至少一条数据,所述方法包括;
确定待抽取数据表;
从所述待抽取数据表中数据的至少一个划分方案中确定第一划分方案;
若所述第一划分方案中数据区间的数量大于预设阈值,则将所述第一划分方案中数据区间的数量与所述预设阈值的比值向下取整,获得一个单位合并数量;对所述第一划分方案中相邻的数据区间按照单位合并数量进行合并,获得数量为所述预设阈值的新数据区间;将包括数量为所述预设阈值的新数据区间的第一划分方案作为第二划分方案,第二划分方案中各个数据区间中数据的存储总量均衡;若所述第一划分方案中数据区间的数量不大于预设阈值,则将第一划分方案作为第二划分方案;所述预设阈值与执行抽取任务的主体的硬件资源相关;
根据第二划分方案中的每个数据区间创建对应的抽取任务,通过各个抽取任务并行地从所述第二划分方案中的各个数据区间抽取所述待抽取数据表中的目标数据,获得目标数据集。
2.根据权利要求1所述的方法,其特征在于,所述待抽取数据表的数据结构为region结构,所述region结构包括多个region区域,每个数据区域包括所述待抽取数据表中的至少一条数据;
所述待抽取数据表中数据的至少一个划分方案通过以下方式确定:
根据所述region结构确定一个划分方案,所述划分方案中的一个数据区间对应所述region结构中的一个区域。
3.根据权利要求2所述的方法,其特征在于,所述从所述待抽取数据表中数据的至少一个划分方案中确定第一划分方案,包括:
将所述待抽取数据表对应的划分方案作为所述第一划分方案。
4.根据权利要求1所述的方法,其特征在于,所述待抽取数据表的数据结构为B树结构,所述B树结构包括多个层级,每个层级包括多个节点,每个节点包括所述待抽取数据表中的至少一条数据;
所述待抽取数据表中数据的至少一个划分方案通过以下过程确定:
对于所述B树结构中的每个层级,确定所述层级对应的划分方案,每个层级对应的划分方案中的一个数据区间对应所述层级中的一个节点。
5.根据权利要求4所述的方法,其特征在于,所述根据所述预设阈值和所述B树结构,从所述待抽取数据表中数据的至少一个划分方案中确定第一划分方案,包括:
若所述B树结构中的底层级中节点的数量大于所述预设阈值,则从底层级开始依序遍历所述B树结构中的各个层级,获得各个层级的比对结果,所述比对结果为相应层级中节点的数量与所述预设阈值的大小关系;
根据所述B树结构中各个层级的比对结果确定目标层级,并将由目标层级对应的划分方案作为第一划分方案,其中,所述目标层级满足:
所述目标层级中节点的数量不小于所述预设阈值,且所述目标层级的上一层级中节点的数量小于所述预设阈值。
6.根据权利要求4所述的方法,其特征在于,所述根据所述预设阈值和所述B树结构,从所述待抽取数据表中数据的至少一个划分方案中确定第一划分方案,包括:
若所述B树结构中底层级中节点的数量不大于所述预设阈值,则将由所述底层级对应的划分方案作为所述第二划分方案。
7.根据权利要求1所述的方法,其特征在于,所述待抽取数据表中的每条数据还包括一个索引,每个数据区间中的各条数据按照相应的索引进行排序,所述第一划分方案中各个数据区间按照相应的首条数据的索引进行排序。
8.根据权利要求1-7中任一项所述的方法,其特征在于,每个数据区间还包括一个存储终端的地址,所述存储终端用于存储数据区间中的数据;
所述通过各个抽取任务并行地从第二划分方案中的各个数据区间抽取所述待抽取数据表中的目标数据,获得目标数据集,包括:
确定与存储所述第二划分方案中各个数据区间中数据的终端建立连接,并根据所述第二划分方案中的每个数据区间创建一个抽取任务;
通过并行地执行每个抽取任务,从每个抽取任务相应的数据区间中抽取目标数据,获得目标数据集。
9.一种数据抽取装置,其特征在于,应用于数据库,所述数据库存储多个数据表,所述数据表的数据结构为region结构或者B树结构,每个数据表中的数据通过至少一个划分方案进行划分,每个划分方案包括多个数据区间,每个数据区间包括所述数据表中至少一条数据,所述装置包括:
第一确定模块,用于确定待抽取数据表;
第二确定模块,用于从所述待抽取数据表中数据的至少一个划分方案中确定第一划分方案;
更新模块,用于若所述第一划分方案中数据区间的数量大于预设阈值,则将所述第一划分方案中数据区间的数量与所述预设阈值的比值向下取整,获得一个单位合并数量;对所述第一划分方案中相邻的数据区间按照单位合并数量进行合并,获得数量为所述预设阈值的新数据区间;将包括数量为所述预设阈值的新数据区间的第一划分方案作为第二划分方案,第二划分方案中各个数据区间中数据的存储总量均衡;若所述第一划分方案中数据区间的数量不大于预设阈值,则将第一划分方案作为第二划分方案;所述预设阈值与执行抽取任务的主体的硬件资源相关;
抽取模块,用于根据第二划分方案中的每个数据区间创建对应的抽取任务,通过各个抽取任务并行地从所述第二划分方案中的各个数据区间抽取所述待抽取数据表中的目标数据,获得目标数据集。
10.一种电子设备,包括存储器、处理器及存储在存储器上的计算机程序,其特征在于,所述处理器执行所述计算机程序以实现权利要求1-8任一项所述的数据抽取方法的步骤。
11.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1-8任一项所述的数据抽取方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410185945.9A CN117762949B (zh) | 2024-02-19 | 2024-02-19 | 数据抽取方法、装置、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410185945.9A CN117762949B (zh) | 2024-02-19 | 2024-02-19 | 数据抽取方法、装置、电子设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN117762949A CN117762949A (zh) | 2024-03-26 |
CN117762949B true CN117762949B (zh) | 2024-05-24 |
Family
ID=90324267
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202410185945.9A Active CN117762949B (zh) | 2024-02-19 | 2024-02-19 | 数据抽取方法、装置、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117762949B (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112100293A (zh) * | 2020-09-23 | 2020-12-18 | 腾讯科技(深圳)有限公司 | 数据处理方法、数据访问方法、装置及计算机设备 |
CN115422205A (zh) * | 2022-10-14 | 2022-12-02 | 平凯星辰(北京)科技有限公司 | 数据处理方法、装置、电子设备及存储介质 |
CN115543993A (zh) * | 2021-06-30 | 2022-12-30 | 深信服科技股份有限公司 | 数据处理方法、装置、电子设备及存储介质 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105512283B (zh) * | 2015-12-04 | 2019-05-03 | 国网江西省电力公司信息通信分公司 | 数据质量管理控制方法及装置 |
-
2024
- 2024-02-19 CN CN202410185945.9A patent/CN117762949B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112100293A (zh) * | 2020-09-23 | 2020-12-18 | 腾讯科技(深圳)有限公司 | 数据处理方法、数据访问方法、装置及计算机设备 |
CN115543993A (zh) * | 2021-06-30 | 2022-12-30 | 深信服科技股份有限公司 | 数据处理方法、装置、电子设备及存储介质 |
CN115422205A (zh) * | 2022-10-14 | 2022-12-02 | 平凯星辰(北京)科技有限公司 | 数据处理方法、装置、电子设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN117762949A (zh) | 2024-03-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112199366B (zh) | 数据表处理方法、装置及设备 | |
CN110019218B (zh) | 数据存储与查询方法及设备 | |
US8935233B2 (en) | Approximate index in relational databases | |
US8271523B2 (en) | Coordination server, data allocating method, and computer program product | |
CN106415534B (zh) | 一种分布式数据库中关联表分区的方法和设备 | |
CN105550225A (zh) | 索引构建方法、查询方法及装置 | |
CN106649412B (zh) | 一种数据处理方法和设备 | |
US7113951B2 (en) | Method and system for detecting tables to be modified | |
US10877973B2 (en) | Method for efficient one-to-one join | |
US10599614B1 (en) | Intersection-based dynamic blocking | |
CN116126901A (zh) | 数据处理方法、装置、电子设备及计算机可读存储介质 | |
CN113918605A (zh) | 数据查询方法、装置、设备以及计算机存储介质 | |
CN115422205A (zh) | 数据处理方法、装置、电子设备及存储介质 | |
CN115329011A (zh) | 数据模型的构建方法、数据查询的方法、装置及存储介质 | |
CN117762949B (zh) | 数据抽取方法、装置、电子设备及存储介质 | |
CN117609181A (zh) | 一种用于TChouse数据库迁移方法和系统 | |
CN113625967B (zh) | 数据存储方法、数据查询方法及服务器 | |
CN110008239A (zh) | 基于预计算优化的逻辑执行优化方法及系统 | |
CN113360551B (zh) | 一种靶场中时序数据的存储与快速统计方法及系统 | |
CN115034917A (zh) | 一种社保资金发放数据风险信息的筛查方法及装置 | |
US9378229B1 (en) | Index selection based on a compressed workload | |
Farouzi et al. | Balanced parallel triangle enumeration with an adaptive algorithm | |
CN114564501A (zh) | 一种数据库数据存储、查询方法、装置、设备及介质 | |
CN113868267A (zh) | 注入时序数据的方法、查询时序数据的方法及数据库系统 | |
CN111241102B (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 |