CN117807061A - 数据补全的方法、装置、电子设备及存储介质 - Google Patents
数据补全的方法、装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN117807061A CN117807061A CN202311569370.2A CN202311569370A CN117807061A CN 117807061 A CN117807061 A CN 117807061A CN 202311569370 A CN202311569370 A CN 202311569370A CN 117807061 A CN117807061 A CN 117807061A
- Authority
- CN
- China
- Prior art keywords
- target
- data
- target area
- determining
- writing
- 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
- 238000000034 method Methods 0.000 title claims abstract description 43
- 230000000295 complement effect Effects 0.000 title claims abstract description 30
- 238000012163 sequencing technique Methods 0.000 claims abstract description 17
- 238000005070 sampling Methods 0.000 claims description 21
- 230000006870 function Effects 0.000 description 9
- 238000010586 diagram Methods 0.000 description 8
- 238000012545 processing Methods 0.000 description 8
- 238000004891 communication Methods 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 230000003044 adaptive effect Effects 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 2
- 238000010276 construction Methods 0.000 description 2
- 239000004973 liquid crystal related substance Substances 0.000 description 2
- 238000007726 management method Methods 0.000 description 2
- 230000008520 organization Effects 0.000 description 2
- 230000001133 acceleration Effects 0.000 description 1
- 238000013475 authorization Methods 0.000 description 1
- 238000004422 calculation algorithm Methods 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 239000000470 constituent Substances 0.000 description 1
- 238000007405 data analysis Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000004880 explosion Methods 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000010897 surface acoustic wave method Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请涉及数据库技术领域,具体提供了一种数据补全的方法、装置、电子设备及存储介质。一种数据补全的方法,包括根据待处理的目标表中的主键列,将目标表进行区域划分,获得至少一个目标区域;分别确定每一目标区域的行数;根据至少一个目标区域分别对应的行数,分别确定每一目标区域的起始行偏移值;根据各目标区域的起始行偏移值,将目标表中的至少一个目标列组合分别在各目标区域中对应的数据,分别写入相应目标列组合对应的基线排序字符串表。这样,不需要对所有列分别创建对应的列索引,也不需要通过列索引对各列的数据进行排序,简化了数据补全的繁琐步骤,减少了耗费的系统资源以及时间成本。
Description
技术领域
本申请涉及数据库技术领域,具体涉及一种数据补全的方法、装置、电子设备及存储介质。
背景技术
实际应用中,为可以同时支持不同类型的业务,通常根据业务需求,将表中的若干个列进行组合获得列组合(Column Group,CG)。同一个表中,可以设置有一个或多个CG。当针对表执行数据定义语言(Data Definition Language,DDL)时,通常需要对多个CG进行更新,具体的,将各CG更新后的数据,写入相应的基线排序字符串表(Sorted String Table,SSTable),这一过程即为数据补全。
现有技术下,通常分别针对表中的每一列创建列索引,以便可以根据列索引对CG进行数据补全。
但是,采用这种方式,需要针对所有的列创建列索引,这会耗费大量的系统资源。
发明内容
本申请实施例的目的在于提供一种数据补全的方法、装置、电子设备以及存储介质,用以在进行数据补全时,可以减少耗费的系统资源。
一方面,本申请实施方式提供了一种数据补全的方法,包括:
根据待处理的目标表中的主键列,将目标表进行区域划分,获得至少一个目标区域;
分别确定每一目标区域的行数;
根据至少一个目标区域分别对应的行数,分别确定每一目标区域的起始行偏移值;起始行偏移值用于对目标区域进行定位;
根据各目标区域的起始行偏移值,将目标表中的至少一个目标列组合分别在各目标区域中对应的数据,分别写入相应目标列组合对应的基线排序字符串表。
一种实施方式中,根据待处理的目标表中的主键列,将目标表进行区域划分,获得至少一个目标区域,包括:
对主键列中的数据进行采样,主键列的数据是顺序排序的;
对各采样值中的相邻采样值分别进行比较,获得相应的比较结果;
根据比较结果,确定至少一个数据划分行;
根据至少一个数据划分行,对目标表进行划分,获得至少一个目标区域。
一种实施方式中,根据至少一个目标区域分别对应的行数,分别确定每一目标区域的起始行偏移值,包括:
按照至少一个目标区域在目标表中由上到下的顺序,分别针对每一目标区域,执行以下步骤:
若目标区域为首个区域,则确定目标区域的起始行偏移值为指定起始值;
若目标区域为非首个区域,则根据目标区域之前的所有目标区域分别对应的行数以及指定起始值,确定目标区域的起始行偏移值。
一种实施方式中,根据各目标区域的起始行偏移值,将目标表中的至少一个目标列组合分别在各目标区域中对应的数据,分别写入相应目标列组合对应的基线排序字符串表,包括:
分别针对每一目标区域,通过目标区域对应的线程,执行以下步骤:
将至少一个目标列组合的组合数量,确定为初始的批量尺寸;
按照批量尺寸,基于目标区域的起始行偏移值,将至少一个目标列组合在目标区域中对应的数据,分别写入相应的基线排序字符串表;
若确定数据写入失败,则获取当前成功写入数据的目标列组合的最新成功数量;
根据批量尺寸以及最新成功数量,确定新的批量尺寸;
根据新的批量尺寸,针对未成功数据写入的目标列组合,执行数据写入操作。
一种实施方式中,根据新的批量尺寸,针对未成功数据写入的目标列组合,执行数据写入操作,包括:
循环执行以下步骤,直至确定数据写入成功,且不存在未成功数据写入的目标列组合:
根据新的批量尺寸,基于目标区域的起始行偏移值,将剩余目标列组合在目标区域中的数据,分别写入相应的基线排序字符串表;剩余目标列组合为当前未成功数据写入的目标列组合;
若确定数据写入失败,则获取当前成功写入数据的目标列组合的最新成功数量,并根据批量尺寸以及最新成功数量,确定新的批量尺;
若确定数据写入成功,且存在未成功数据写入的目标列组合,则基于设定比例,更新新的批量尺寸;
若确定数据写入成功,且不存在未成功数据写入的目标列组合,则确定数据补全流程结束。
一种实施方式中,根据批量尺寸以及最新成功数量,确定新的批量尺寸,包括:
确定批量尺寸与设定权重的乘积;
将乘积与最新成功数量中的最大值,确定为新的批量尺寸。
一种实施方式中,方法还包括:
若确定数据写入失败,则获取所有线程对应的批量尺寸的总和;
若总和不高于线程的数量,则确定内存资源不足,并结束数据补全流程。
一方面,本申请实施方式提供了一种数据补全的装置,包括:
划分单元,用于根据待处理的目标表中的主键列,将目标表进行区域划分,获得至少一个目标区域;
确定单元,用于分别确定每一目标区域的行数;
定位单元,用于根据至少一个目标区域分别对应的行数,分别确定每一目标区域的起始行偏移值;起始行偏移值用于对目标区域进行定位;
写入单元,用于根据各目标区域的起始行偏移值,将目标表中的至少一个目标列组合分别在各目标区域中对应的数据,分别写入相应目标列组合对应的基线排序字符串表。
一种实施方式中,划分单元用于:
对主键列中的数据进行采样,主键列的数据是顺序排序的;
对各采样值中的相邻采样值分别进行比较,获得相应的比较结果;
根据比较结果,确定至少一个数据划分行;
根据至少一个数据划分行,对目标表进行划分,获得至少一个目标区域。
一种实施方式中,定位单元用于:
按照至少一个目标区域在目标表中由上到下的顺序,分别针对每一目标区域,执行以下步骤:
若目标区域为首个区域,则确定目标区域的起始行偏移值为指定起始值;
若目标区域为非首个区域,则根据目标区域之前的所有目标区域分别对应的行数以及指定起始值,确定目标区域的起始行偏移值。
一种实施方式中,写入单元用于:
分别针对每一目标区域,通过目标区域对应的线程,执行以下步骤:
将至少一个目标列组合的组合数量,确定为初始的批量尺寸;
按照批量尺寸,基于目标区域的起始行偏移值,将至少一个目标列组合在目标区域中对应的数据,分别写入相应的基线排序字符串表;
若确定数据写入失败,则获取当前成功写入数据的目标列组合的最新成功数量;
根据批量尺寸以及最新成功数量,确定新的批量尺寸;
根据新的批量尺寸,针对未成功数据写入的目标列组合,执行数据写入操作。
一种实施方式中,写入单元用于:循环执行以下步骤,直至确定数据写入成功,且不存在未成功数据写入的目标列组合:
根据新的批量尺寸,基于目标区域的起始行偏移值,将剩余目标列组合在目标区域中的数据,分别写入相应的基线排序字符串表;剩余目标列组合为当前未成功数据写入的目标列组合;
若确定数据写入失败,则获取当前成功写入数据的目标列组合的最新成功数量,并根据批量尺寸以及最新成功数量,确定新的批量尺;
若确定数据写入成功,且存在未成功数据写入的目标列组合,则基于设定比例,更新新的批量尺寸;
若确定数据写入成功,且不存在未成功数据写入的目标列组合,则确定数据补全流程结束。
一种实施方式中,写入单元用于:确定批量尺寸与设定权重的乘积;
将乘积与最新成功数量中的最大值,确定为新的批量尺寸。
一种实施方式中,写入单元还用于:
若确定数据写入失败,则获取所有线程对应的批量尺寸的总和;
若总和不高于线程的数量,则确定内存资源不足,并结束数据补全流程。
一方面,本申请实施方式提供了一种电子设备,包括:
处理器;以及
存储器,存储有计算机指令,计算机指令用于使处理器执行如上述任一种数据补全的各种可选实现方式中提供的方法的步骤。
一方面,本申请实施方式提供了一种存储介质,存储有计算机指令,计算机指令用于使计算机执行如上述任一种数据补全的各种可选实现方式中提供的方法的步骤。
本申请实施例提供的数据补全的方法、装置、电子设备及存储介质中,根据待处理的目标表中的主键列,将目标表进行区域划分,获得至少一个目标区域;分别确定每一目标区域的行数;根据至少一个目标区域分别对应的行数,分别确定每一目标区域的起始行偏移值;起始行偏移值用于对目标区域进行定位;根据各目标区域的起始行偏移值,将目标表中的至少一个目标列组合分别在各目标区域中对应的数据,分别写入相应目标列组合对应的基线排序字符串表。这样,通过主键列对表进行区域划分,并通过各区域起始行的偏移,对各区域的数据进行定位,不需要对所有列分别创建对应的列索引,也不需要通过列索引对各列的数据进行排序,简化了数据补全的繁琐步骤,减少了耗费的系统资源以及时间成本。
附图说明
为了更清楚地说明本申请具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例中一种数据补全的方法的流程图。
图2为本申请实施例中一种确定起始行偏移值的示例图。
图3为本申请实施例中一种批量次数自适应调整的方法的示例图。
图4为本申请实施例中数据补全的装置的结构框图。
图5为本申请实施例中电子设备的结构示意图。
具体实施方式
下面将结合附图对本申请的技术方案进行清楚、完整地描述,显然,所描述的实施方式是本申请一部分实施方式,而不是全部的实施方式。基于本申请中的实施方式,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施方式,都属于本申请保护的范围。此外,下面所描述的本申请不同实施方式中所涉及的技术特征只要彼此之间未构成冲突就可以相互结合。
首先对本申请实施例中涉及的部分用语进行说明,以便于本领域技术人员理解。
终端设备:可以是移动终端、固定终端或便携式终端,例如移动手机、站点、单元、设备、多媒体计算机、多媒体平板、互联网节点、通信器、台式计算机、膝上型计算机、笔记本计算机、上网本计算机、平板计算机、个人通信系统设备、个人导航设备、个人数字助理、音频/视频播放器、数码相机/摄像机、定位设备、电视接收器、无线电广播接收器、电子书设备、游戏设备或者其任意组合,包括这些设备的配件和外设或者其任意组合。还可预见到的是,终端设备能够支持任意类型的针对用户的接口(例如可穿戴设备)等。
服务器:可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务以及大数据和人工智能平台等基础云计算服务的云服务器。
分布式关系型数据库(OceanBase,OB)是一种分布式的关系型数据库,其是持续可用的,具有可扩展以及高性能的特点。
联机事务处理(OnLine Transaction Processsing,OLTP):一般指行数少、耗时短的事务操作,例如,银行交易。
联机分析处理(On-Line Analysis Processing,OLAP):一般指行数多、耗时长的复杂数据分析,例如,报表统计。
日志结构合并树(Log Structured Merge Tree,LSM Tree):由多层独立的数据结构组成的数据存储结构。
基线SStable:是LSM Tree中持久化在磁盘中的数据结构,其由多个宏块组成。
宏块:包含多行已排序的数据,持久化在磁盘上,宏块大小可以固定为2M,由多个微块组成。
微块:是宏块的基本组成单位,包含多行已排序的数据,持久化在磁盘上,大小不固定通常为几KB,是从磁盘读取SSTable数据的最小单位。
下面对本申请的技术思想进行说明。
一些数据库场景中,为了可以同时支持不同类型的业务(如,OLTP业务和OLAP),一些数据库(如,OB数据库)开发有列式存储表功能,其允许用户在同一表中指定若干个CG。
例如,可以采用以下语句设置CG:create table t1(c1 int primary key,c2varchar(256),c3 int)with column group(all columns,each column)。其表示创建带有CG的表1。在存储层的数据组织上,表1有4个CG,依次为(c1,c2,c3),(c1),(c2)以及(c3),每一CG的数据组织为一个SSTable。也就是说,每一CG中的数据实际存储于对应的SSTable中。
当针对表执行DDL时,通常需要对多个CG进行数据补全。例如,当针对上述表1执行alter table t1 modify column c2 int时,需要针对(c1,c2,c3)和c2这两个CG进行数据补全。
传统技术下,通常在建表时针对全部的列创建列索引,若在建表时未创建列索引,则在需要创建索引时,通过构建(BUILD)流程创建列索引。
但是,分别针对每一列创建列索引并按照列数据进行排序,这会耗费大量的系统资源,再者,BUILD流程逐个创建列索引时,需要多次扫描主表数据,这会造成大量的输入输出(Input Output,IO)开销,构建时间也会比较长。
基于上述相关技术存在的缺陷,本申请实施方式提供了一种数据补全的方法、装置、电子设备及存储介质,旨在进行数据补全时,减少耗费的系统资源。
本申请实施方式提供了一种数据补全的方法,该方法可应用于电子设备,本申请对于电子设备的类型不作限制,其可以是任何适于实施的设备类型,例如,终端设备或者服务器等,本申请对此不再赘述。一种应用场景中,本申请实施例可以应用于OB数据库,在针对目标表执行DDL时,确定目标表中需要数据重整的目标列组合,并根据目标表中的主键列进行区域划分,并根据各目标区域起始行的偏移,对目标区域中的数据进行定位,进而可以根据各目标区域对应的偏移,将各目标列组合在目标区域中对应的数据,写入各目标列组合分别对应的SSTable,实现数据补全。
参阅图1所示,为本申请实施例中一种数据补全的方法的流程图,应用于电子设备,下面结合图1对该方法进行说明,该方法的具体实施流程如下:
步骤100:根据待处理的目标表中的主键列,将目标表进行区域划分,获得至少一个目标区域。
一种实施方式中,执行步骤100时,可以采用以下步骤:
S1001:对主键列中的数据进行采样,获得多个采样值。
一种实施方式中,设置目标表的主键,确定目标表中的主键列,对主键列中的数据进行排序,在确定需要数据补全(针对目标表执行DDL)时,按照设定采样间隔,对主键列中的数据进行采样,获得多个采样值。
其中,主键用于唯一标识一条记录(即一行数据),主键值不能有重复的,也不允许为空,本申请实施例中,主键列中的数据是顺序排序的。设定采样间隔可以为固定值,也可以为非固定值(如,可以是连续递增的)。实际应用中,可以根据实际应用场景设置设定采样间隔,如,设定采样间隔为5,在此不做限制。
其中,DDL用于定义关系模式、删除关系、修改关系模式,以及创建数据库中的各种对象。数据库中的对象可以为表、聚簇、索引、视图、函数、存储过程以及触发器等。
S1002:对各采样值中的相邻采样值分别进行比较,获得相应的比较结果。
一种实施方式中,采样值均为数值,按照采样值在主键列中的顺序,分别针对每一采样值,执行以下步骤:确定采样值与前一个采样值之间的差值,作为比较结果。
S1003:根据比较结果,确定至少一个数据划分行。
作为一个示例,若采样值与前一个采样值之间的差值高于设定差值(如,5),则将该采样值所在的行,确定为数据划分行。
实际应用中,设定差值可以根据实际应用场景进行设置,在此不做限制。
S1004:根据至少一个数据划分行,对目标表进行划分,获得至少一个目标区域。
这样,就可以将表划分为多个目标区域。
步骤101:分别确定每一目标区域的行数。
一种实施方式中,分别为每一目标区域分配一个线程,并将各目标区域的数据分别发送(shuffle)至对应的线程。各线程分别确定接收的目标区域的行数。需要说明的是,不同目标区域的行数可以相同,也可以不同。例如,一个目标区域的行数为10,另一个目标区域的行数为20。
可选的,每一线程可以对应一个或多个目标区域。各线程可以位于同一设备,也可以位于不同设备,在此不做限。
这样,就可以通过多个线程针对各目标区域并行处理,从而提高了数据处理效率。
步骤102:根据至少一个目标区域分别对应的行数,分别确定每一目标区域的起始行偏移值。
其中,起始行偏移值用于对目标区域进行定位。一种实施方式中,按照至少一个目标区域在目标表中由上到下的顺序,分别针对每一目标区域,执行以下步骤:
若目标区域为首个区域,则确定目标区域的起始行偏移值为指定起始值。作为一个示例,指定起始值可以为0。
若目标区域为非首个区域,则根据目标区域之前的所有目标区域分别对应的行数以及指定起始值,确定目标区域的起始行偏移值。
作为一个示例,指定起始值为0,目标表中首个区域的行数为10,第二个目标区域的行数为15,则第三个目标区域的起始行偏移值为0+10+15=25。
作为另一个示例,各线程分别统计对应的目标区域的行数。指定线程获取其它各线程的统计结果,并根据各线程的统计结果,确定各目标区域的起始行偏移值,以及将各目标区域的起始行偏移值,发送至相应目标区域对应的线程。
可选的,指定线程可以为预先指定的某一线程,也可以为随机选取的任一线程,还可以为最后完成行数统计的线程。实际应用中,可以根据实际应用场景确定指定线程,在此不做限制。
参阅图2所示,为一种确定起始行偏移值的示例图。图2中,线程1、线程2以及线程3分别统计各自对应的目标区域(即第一区域、第二区域以及第三区域)的行数,确定各目标区域的行数均为100,则确定第一区域的起始行偏移值为0,第二区域的起始行偏移值为100,第三区域的起始行偏移值为200。
由于非主键列的CG需要标识各数据行,因此,本申请实施例中,根据各目标区域的行数累加,确定各目标区域的起始行偏移值,这一过程可以称为行计数(row count),以便可以根据各目标区域的起始行偏移值,标识各目标区域中的各数据行,进而便于后续的数据补全,而不需要分别针对每一列建立列索引,简化了繁琐操作,减少了系统开销,提高了数据处理效率。
步骤103:根据各目标区域的起始行偏移值,将目标表中的至少一个目标列组合分别在各目标区域中对应的数据,分别写入相应目标列组合对应的基线排序字符串表。
一种实施方式中,分别针对每一目标区域,通过目标区域对应的线程,执行以下步骤:
S1031:将至少一个目标列组合的组合数量,确定为初始的批量尺寸。
一种实施方式中,获取目标表中待处理的目标CG的数量即组合数量,并将其确定为初始的批量尺寸batch_size。
作为一个示例,目标表中包含4个CG,则确定初始的batch_size为4。
其中,CG为表中多个列的组合,目标CG为各CG中需要重新数据整合的CG。
S1032:按照批量尺寸,基于目标区域的起始行偏移值,将至少一个目标列组合在目标区域中对应的数据,分别写入相应的基线排序字符串表。
作为一个示例,目标CG包括第一CG和第二CG。第一CG为C2列,第二CG为C3列和C4列,则目标CG的数量为2,批量尺寸为2。线程将目标区域中C1列的数据,写入第一CG对应的第一基线SSTable,并将目标区域中C3列和C4列的数据,写入第二CG对应的第二基线SSTable。
S1033:若确定数据写入失败,则获取当前成功写入数据的目标列组合的最新成功数量。
需要说明的是,由于内存资源限制,所以,各目标CG的数据可能无法完全成功写入相应的基线SSTable,但是,可能会有部分目标CG的数据成功写入了相应的基线SSTable,因此,确定数据写入失败时,获取该部分目标CG(即当前成功写入数据的目标CG)的数量即最新成功数量。
作为一个示例,批量尺寸为4,有3个目标CG写入成功,一个目标CG写入失败,则确定最新成功数量为3。
进一步地,若确定数据写入成功,各目标CG中的数据均已经成功写入相应的基线SSTable,则确定数据已经补全,结束数据补全流程。
S1034:根据批量尺寸以及最新成功数量,确定新的批量尺寸。
一种实施方式中,确定批量尺寸与设定权重的乘积;确定批量尺寸与设定权重的乘积;将乘积与最新成功数量中的最大值,确定为新的批量尺寸
其中,设定权重的取值范围为(0,1]。
作为一个示例,设定权重为0.5。实际应用中,设定权重可以根据实际应用场景进行设置,在此不作限制。
这样,若数据写入失败,则可以通过设定权重,减小批量尺寸。
S1035:根据新的批量尺寸,针对未成功数据写入的目标列组合,执行数据写入操作。
一种实施方式中,在执行S1035时,可以循环执行以下步骤,直至确定数据写入成功,且不存在未成功数据写入的目标列组合:
S1035-1:根据新的批量尺寸,基于目标区域的起始行偏移值,将剩余目标列组合在目标区域中的数据,分别写入相应的基线排序字符串表,执行S1035-2、S1035-3以及S1035-4中的任一步骤。
其中,剩余目标列组合为当前未成功数据写入的目标列组合。
作为一个示例,目标CG包括第一CG、第二CG和第三CG。其中,第二CG和第三CG均写入成功,第一CG写入失败,则第一CG即为剩余目标CG,由于第一CG仅包含C2列,因此,将C2列在目标区域中的数据,写入第一CG对应的第一基线SSTable。
S1035-2:若确定数据写入失败,则获取当前成功写入数据的目标列组合的最新成功数量,并根据批量尺寸以及最新成功数量,确定新的批量尺,执行S1035-1。
具体的,执行S1035-3时,具体步骤可以参见S1033和S1034,在此不做赘述。
S1035-3:若确定数据写入成功,且存在未成功数据写入的目标列组合,则基于设定比例,更新新的批量尺寸,执行S1035-1。
其中,设定比例可以不小于1,如,设定比例为2。
作为一个示例,若确定数据写入成功,且存在未成功数据写入的目标列组合,则将当前的批量尺寸(即新的批量尺寸)与设定比例的乘积,作为新的批量尺寸。实际应用中,设定比例可以根据实际应用场景进行设置,在此不作限制。
其中,未成功数据写入的目标列组合是指未成功将目标区域中对应的数据写入相应的基线SStable的目标列组合。
S1035-4:若确定数据写入成功,且不存在未成功数据写入的目标列组合,则确定数据补全流程结束。
进一步地,在数据补全过程中,确定数据写入失败时,均可以获取所有线程对应的批量尺寸的总和,若总和不高于线程的数量,则确定内存资源不足,并结束数据补全流程。
下面针对一个线程针对一个目标区域进行数据补全为例,对上述实施例进行说明。参阅图3所示,为一种批量次数自适应调整的方法的示例图。该方法的具体实施流程可以包括:
步骤300:将至少一个目标列组合的组合数量,确定为初始的批量尺寸。
步骤301:按照批量尺寸,将至少一个目标列组合在目标区域中对应的数据,分别写入相应的基线SStable。
步骤302:判断是否数据写入成功,若是,则执行步骤303,否则,执行步骤306。
步骤303:将批量尺寸乘以设定比例,获得新的批量尺寸。
步骤304:判断是否存在待写入数据的目标CG,若是,则执行步骤301,否则,执行步骤305。
其中,待写入数据的目标CG是指待将其在目标区域中对应的数据写入相应的基线SStable的CG。
步骤305:结束数据补全流程。
步骤306:获取所有线程对应的批量尺寸的总和。
步骤307:判断总和是否不高于线程的数量,若是,则执行步骤305,否则,执行步骤308。
步骤308:确定批量尺寸与设定权重的乘积。
步骤309:确定当前成功写入数据的目标列组合的最新成功数量。
步骤310:将该乘积和该最新成功数量中的最大值,确定为新的批量尺寸,执行步骤301。
具体的,步骤300-步骤310的具体步骤,具体参见上述步骤100-步骤103,在此不做赘述。
需要说明的是,通过线程将目标CG在相应目标区域中各行的数据,写入相应的基线SStable,这一过程可以称为再扫描(rescan)。由于需要维护至少宏块尺寸(如看,2M)的缓冲区(buffer),因此,在内存规格较小的场景,为避免内存打爆,需要多次扫描已排序的数据,在内存规格较大的场景,则希望尽可能减少扫描次数以节省磁盘IO开销。表的最大列数可以为4096,由于数据补全链路的内存消耗难以准确预留,因此,为减少开销,可以采用一些策略(如,贪心算法)进行数据补全。具体的,可以先将所有目标CG的数量N(N为正整数)作batch_size,并基于该batch_size执行rescan,若确定数据写入成功,则只需要rescan一次。若确定数据写入失败,则获取最新成功写入数据的CG的最新成功数量last_succ_cg_count,以及最新的批量次数last_batch_size,确定batch_size=max(last_batch_size/2,last_succ_cg_count,1)。进一步地,若所有线程的batch_size之和小于等于线程数量,则说明内存资源严重不足,不再重试,返回失败并退出。
本申请实施例中,不需要分别针对每一列均建立列索引,只需要设置有主键即可,节省了大量的计算开销。再者,由于CG对应的SSTable跟随主键的行顺序,因此,采用rowoffset来定位主表行,而无需冗余存储主键值,节省了主键值的存储开销。进一步地,还可以通过批量化的方式,在一次数据扫描时,将多个CG的数据进行数据补全,大量节省了列式存储的构建开销,以及还可以自适应调整batch_size的大小,进一步减少了rescan次数,极大地减少了系统开销和耗费的时间成本,提高了数据处理效率和数据补全性能。
本申请所涉及的用户信息(包括但不限于用户设备信息、用户个人信息等)和数据(包括但不限于用于分析的数据、存储的数据、展示的数据等),均为经用户授权或者经过各方充分授权的信息和数据,并且相关数据的收集、使用和处理需要遵守相关国家和地区的相关法律法规和标准,并提供有相应的操作入口,供用户选择授权或者拒绝。
基于同一发明构思,本申请实施方式还提供了一种数据补全的装置,由于上述装置及设备解决问题的原理与一种数据补全的方法相似,因此,上述装置的实施可以参见方法的实施,重复之处不再赘述。该装置可应用于电子设备,本申请对于电子设备的类型不作限制,其可以是任何适于实施的设备类型,例如智能手机、平板电脑等,本申请对此不再赘述。
参阅图4所示,为本申请实施例中数据补全的装置的结构框图。在一些实施方式中,本申请示例的数据补全的装置,包括:
划分单元401,用于根据待处理的目标表中的主键列,将目标表进行区域划分,获得至少一个目标区域;
确定单元402,用于分别确定每一目标区域的行数;
定位单元403,用于根据至少一个目标区域分别对应的行数,分别确定每一目标区域的起始行偏移值;起始行偏移值用于对目标区域进行定位;
写入单元404,用于根据各目标区域的起始行偏移值,将目标表中的至少一个目标列组合分别在各目标区域中对应的数据,分别写入相应目标列组合对应的基线排序字符串表。
一种实施方式中,划分单元401用于:
对主键列中的数据进行采样,主键列的数据是顺序排序的;
对各采样值中的相邻采样值分别进行比较,获得相应的比较结果;
根据比较结果,确定至少一个数据划分行;
根据至少一个数据划分行,对目标表进行划分,获得至少一个目标区域。
一种实施方式中,定位单元403用于:
按照至少一个目标区域在目标表中由上到下的顺序,分别针对每一目标区域,执行以下步骤:
若目标区域为首个区域,则确定目标区域的起始行偏移值为指定起始值;
若目标区域为非首个区域,则根据目标区域之前的所有目标区域分别对应的行数以及指定起始值,确定目标区域的起始行偏移值。
一种实施方式中,写入单元404用于:
分别针对每一目标区域,通过目标区域对应的线程,执行以下步骤:
将至少一个目标列组合的组合数量,确定为初始的批量尺寸;
按照批量尺寸,基于目标区域的起始行偏移值,将至少一个目标列组合在目标区域中对应的数据,分别写入相应的基线排序字符串表;
若确定数据写入失败,则获取当前成功写入数据的目标列组合的最新成功数量;
根据批量尺寸以及最新成功数量,确定新的批量尺寸;
根据新的批量尺寸,针对未成功数据写入的目标列组合,执行数据写入操作。
一种实施方式中,写入单元404用于:循环执行以下步骤,直至确定数据写入成功,且不存在未成功数据写入的目标列组合:
根据新的批量尺寸,基于目标区域的起始行偏移值,将剩余目标列组合在目标区域中的数据,分别写入相应的基线排序字符串表;剩余目标列组合为当前未成功数据写入的目标列组合;
若确定数据写入失败,则获取当前成功写入数据的目标列组合的最新成功数量,并根据批量尺寸以及最新成功数量,确定新的批量尺;
若确定数据写入成功,且存在未成功数据写入的目标列组合,则基于设定比例,更新新的批量尺寸;
若确定数据写入成功,且不存在未成功数据写入的目标列组合,则确定数据补全流程结束。
一种实施方式中,写入单元404用于:确定批量尺寸与设定权重的乘积;
将乘积与最新成功数量中的最大值,确定为新的批量尺寸。
一种实施方式中,写入单元404还用于:
若确定数据写入失败,则获取所有线程对应的批量尺寸的总和;
若总和不高于线程的数量,则确定内存资源不足,并结束数据补全流程。
一方面,本申请实施方式提供了一种电子设备,包括:
处理器;以及
存储器,存储有计算机指令,计算机指令用于使处理器执行如上述任一种数据补全的各种可选实现方式中提供的方法的步骤。
一方面,本申请实施方式提供了一种存储介质,存储有计算机指令,计算机指令用于使计算机执行如上述任一种数据补全的各种可选实现方式中提供的方法的步骤。
本申请实施例提供的数据补全的方法、装置、电子设备及存储介质中,根据待处理的目标表中的主键列,将目标表进行区域划分,获得至少一个目标区域;分别确定每一目标区域的行数;根据至少一个目标区域分别对应的行数,分别确定每一目标区域的起始行偏移值;起始行偏移值用于对目标区域进行定位;根据各目标区域的起始行偏移值,将目标表中的至少一个目标列组合分别在各目标区域中对应的数据,分别写入相应目标列组合对应的基线排序字符串表。这样,通过主键列对表进行区域划分,并通过各区域起始行的偏移,对各区域的数据进行定位,不需要对所有列分别创建对应的列索引,也不需要通过列索引对各列的数据进行排序,简化了数据补全的繁琐步骤,减少了耗费的系统资源以及时间成本。
本申请实施方式提供了一种电子设备,包括:
处理器;以及
存储器,存储有计算机指令,计算机指令用于使处理器执行上述任意实施方式的方法。
本申请实施方式提供了一种存储介质,存储有计算机指令,计算机指令用于使计算机执行上述任意实施方式的方法。
图5示出了一种电子设备5000的结构示意图。参阅图5所示,电子设备5000包括:处理器5010以及存储器5020,可选的,还可以包括电源5030、显示单元5040、输入单元5050。
处理器5010是电子设备5000的控制中心,利用各种接口和线路连接各个部件,通过运行或执行存储在存储器5020内的软件程序和/或数据,执行电子设备5000的各种功能。
本申请实施例中,处理器5010调用存储器5020中存储的计算机程序时执行上述实施例中的各个步骤。
可选的,处理器5010可包括一个或多个处理单元;优选的,处理器5010可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器5010中。在一些实施例中,处理器、存储器、可以在单一芯片上实现,在一些实施例中,它们也可以在独立的芯片上分别实现。
存储器5020可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、各种应用等;存储数据区可存储根据电子设备5000的使用所创建的数据等。此外,存储器5020可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件等。
电子设备5000还包括给各个部件供电的电源5030(比如电池),电源可以通过电源管理系统与处理器5010逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗等功能。
显示单元5040可用于显示由用户输入的信息或提供给用户的信息以及电子设备5000的各种菜单等,本申请实施例中主要用于显示电子设备5000中各应用的显示界面以及显示界面中显示的文本、图片等对象。显示单元5040可以包括显示面板5041。显示面板5041可以采用液晶显示屏(Liquid Crystal Display,LCD)、有机发光二极管(Organic Light-Emitting Diode,OLED)等形式来配置。
输入单元5050可用于接收用户输入的数字或字符等信息。输入单元5050可包括触控面板5051以及其他输入设备5052。其中,触控面板5051,也称为触摸屏,可收集用户在其上或附近的触摸操作(比如用户使用手指、触摸笔等任何适合的物体或附件在触控面板5051上或在触控面板5051附近的操作)。
具体的,触控面板5051可以检测用户的触摸操作,并检测触摸操作带来的信号,将这些信号转换成触点坐标,发送给处理器5010,并接收处理器5010发来的命令并加以执行。此外,可以采用电阻式、电容式、红外线以及表面声波等多种类型实现触控面板5051。其他输入设备5052可以包括但不限于物理键盘、功能键(比如音量控制按键、开关机按键等)、轨迹球、鼠标、操作杆等中的一种或多种。
当然,触控面板5051可覆盖显示面板5041,当触控面板5051检测到在其上或附近的触摸操作后,传送给处理器5010以确定触摸事件的类型,随后处理器5010根据触摸事件的类型在显示面板5041上提供相应的视觉输出。虽然在图5中,触控面板5051与显示面板5041是作为两个独立的部件来实现电子设备5000的输入和输出功能,但是在某些实施例中,可以将触控面板5051与显示面板5041集成而实现电子设备5000的输入和输出功能。
电子设备5000还可包括一个或多个传感器,例如压力传感器、重力加速度传感器、接近光传感器等。当然,根据具体应用中的需要,上述电子设备5000还可以包括摄像头等其它部件,由于这些部件不是本申请实施例中重点使用的部件,因此,在图5中没有示出,且不再详述。
本领域技术人员可以理解,图5仅仅是电子设备的举例,并不构成对电子设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件。
为了描述的方便,以上各部分按照功能划分为各模块(或单元)分别描述。当然,在实施本申请时可以把各模块(或单元)的功能在同一个或多个软件或硬件中实现。
显然,上述实施方式仅仅是为清楚地说明所作的举例,而并非对实施方式的限定。对于所属领域的普通技术人员来说,在上述说明的基础上还可以做出其它不同形式的变化或变动。这里无需也无法对所有的实施方式予以穷举。而由此所引伸出的显而易见的变化或变动仍处于本申请创造的保护范围之中。
Claims (10)
1.一种数据补全的方法,所述方法包括:
根据待处理的目标表中的主键列,将所述目标表进行区域划分,获得至少一个目标区域;
分别确定每一目标区域的行数;
根据所述至少一个目标区域分别对应的行数,分别确定每一目标区域的起始行偏移值;所述起始行偏移值用于对所述目标区域进行定位;
根据各目标区域的起始行偏移值,将所述目标表中的至少一个目标列组合分别在各目标区域中对应的数据,分别写入相应目标列组合对应的基线排序字符串表。
2.根据权利要求1所述的方法,所述根据待处理的目标表中的主键列,将所述目标表进行区域划分,获得至少一个目标区域,包括:
对所述主键列中的数据进行采样,所述主键列的数据是顺序排序的;
对各采样值中的相邻采样值分别进行比较,获得相应的比较结果;
根据所述比较结果,确定至少一个数据划分行;
根据所述至少一个数据划分行,对所述目标表进行划分,获得所述至少一个目标区域。
3.根据权利要求1所述的方法,所述根据所述至少一个目标区域分别对应的行数,分别确定每一目标区域的起始行偏移值,包括:
按照所述至少一个目标区域在所述目标表中由上到下的顺序,分别针对每一目标区域,执行以下步骤:
若所述目标区域为首个区域,则确定所述目标区域的起始行偏移值为指定起始值;
若所述目标区域为非首个区域,则根据所述目标区域之前的所有目标区域分别对应的行数以及所述指定起始值,确定所述目标区域的起始行偏移值。
4.根据权利要求1-3任一项所述的方法,所述根据各目标区域的起始行偏移值,将所述目标表中的至少一个目标列组合分别在各目标区域中对应的数据,分别写入相应目标列组合对应的基线排序字符串表,包括:
分别针对每一目标区域,通过所述目标区域对应的线程,执行以下步骤:
将所述至少一个目标列组合的组合数量,确定为初始的批量尺寸;
按照所述批量尺寸,基于所述目标区域的起始行偏移值,将所述至少一个目标列组合在所述目标区域中对应的数据,分别写入相应的基线排序字符串表;
若确定数据写入失败,则获取当前成功写入数据的目标列组合的最新成功数量;
根据所述批量尺寸以及所述最新成功数量,确定新的批量尺寸;
根据所述新的批量尺寸,针对未成功数据写入的目标列组合,执行数据写入操作。
5.根据权利要求4所述的方法,所述根据所述新的批量尺寸,针对未成功数据写入的目标列组合,执行数据写入操作,包括:
循环执行以下步骤,直至确定数据写入成功,且不存在未成功数据写入的目标列组合:
根据所述新的批量尺寸,基于所述目标区域的起始行偏移值,将剩余目标列组合在所述目标区域中的数据,分别写入相应的基线排序字符串表;所述剩余目标列组合为当前未成功数据写入的目标列组合;
若确定数据写入失败,则获取当前成功写入数据的目标列组合的最新成功数量,并根据所述批量尺寸以及所述最新成功数量,确定新的批量尺;
若确定数据写入成功,且存在未成功数据写入的目标列组合,则基于设定比例,更新所述新的批量尺寸;
若确定数据写入成功,且不存在未成功数据写入的目标列组合,则确定数据补全流程结束。
6.根据权利要求5所述的方法,所述根据所述批量尺寸以及所述最新成功数量,确定新的批量尺寸,包括:
确定所述批量尺寸与设定权重的乘积;
将所述乘积与所述最新成功数量中的最大值,确定为所述新的批量尺寸。
7.根据权利要求4所述的方法,所述方法还包括:
若确定数据写入失败,则获取所有线程对应的批量尺寸的总和;
若所述总和不高于所述线程的数量,则确定内存资源不足,并结束数据补全流程。
8.一种数据补全的装置,所述装置包括:
划分单元,用于根据待处理的目标表中的主键列,将所述目标表进行区域划分,获得至少一个目标区域;
确定单元,用于分别确定每一目标区域的行数;
定位单元,用于根据所述至少一个目标区域分别对应的行数,分别确定每一目标区域的起始行偏移值;所述起始行偏移值用于对所述目标区域进行定位;
写入单元,用于根据各目标区域的起始行偏移值,将所述目标表中的至少一个目标列组合分别在各目标区域中对应的数据,分别写入相应目标列组合对应的基线排序字符串表。
9.一种电子设备,包括:
处理器;以及
存储器,存储有计算机指令,所述计算机指令用于使所述处理器执行根据权利要求1-7任一项所述的方法。
10.一种存储介质,存储有计算机指令,所述计算机指令用于使计算机执行根据权利要求1-7任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311569370.2A CN117807061A (zh) | 2023-11-22 | 2023-11-22 | 数据补全的方法、装置、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311569370.2A CN117807061A (zh) | 2023-11-22 | 2023-11-22 | 数据补全的方法、装置、电子设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117807061A true CN117807061A (zh) | 2024-04-02 |
Family
ID=90427639
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311569370.2A Pending CN117807061A (zh) | 2023-11-22 | 2023-11-22 | 数据补全的方法、装置、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117807061A (zh) |
-
2023
- 2023-11-22 CN CN202311569370.2A patent/CN117807061A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9298775B2 (en) | Changing the compression level of query plans | |
CN111913955A (zh) | 数据的排序处理装置、方法和存储介质 | |
US20150032758A1 (en) | High Performance Index Creation | |
CN108205560B (zh) | 一种数据同步方法以及装置 | |
US9734177B2 (en) | Index merge ordering | |
CN110765143B (zh) | 数据处理方法、装置、服务器和存储介质 | |
WO2023066182A1 (zh) | 文件处理方法、装置、设备及存储介质 | |
US20240176770A1 (en) | Consistency checking for distributed analytical database systems | |
CN109597707A (zh) | 克隆卷数据拷贝方法、装置及计算机可读存储介质 | |
CN109614270A (zh) | 基于Hbase的数据读写方法、装置、设备及存储介质 | |
CN114780615A (zh) | 错误码管理方法及其装置 | |
WO2023216745A1 (zh) | 一种表格重建的方法及电子设备 | |
US20230394027A1 (en) | Transaction execution method, computing device, and storage medium | |
CN117807061A (zh) | 数据补全的方法、装置、电子设备及存储介质 | |
CN115113989B (zh) | 事务执行方法、装置、计算设备及存储介质 | |
CN111177141A (zh) | 利用MySQL并行复制恢复数据方法、设备及系统 | |
CN111813988B (zh) | 用于图像特征库的hnsw节点删除方法、系统、设备和介质 | |
CN111309988B (zh) | 基于编码的字符串检索方法、装置及电子设备 | |
CN114329155A (zh) | 一种包含时序数据库的多模态存储缓存系统及查询方法 | |
CN111858652A (zh) | 基于消息队列的跨数据源查询方法、系统及服务器节点 | |
CN113779117A (zh) | 一种数据监控方法、装置、存储介质和电子设备 | |
CN117216098A (zh) | 外键约束检测的方法、装置、电子设备及存储介质 | |
CN111427910A (zh) | 数据处理方法及装置 | |
JP7293544B2 (ja) | 質問回答システムの更新処理方法及び装置 | |
WO2024016789A1 (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 |