CN117194443A - 数据更新方法及其相关设备 - Google Patents
数据更新方法及其相关设备 Download PDFInfo
- Publication number
- CN117194443A CN117194443A CN202210619069.7A CN202210619069A CN117194443A CN 117194443 A CN117194443 A CN 117194443A CN 202210619069 A CN202210619069 A CN 202210619069A CN 117194443 A CN117194443 A CN 117194443A
- Authority
- CN
- China
- Prior art keywords
- data
- file
- updated
- column
- target
- 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 61
- 230000008859 change Effects 0.000 claims abstract description 25
- 238000004590 computer program Methods 0.000 claims description 12
- 230000005012 migration Effects 0.000 claims description 7
- 238000013508 migration Methods 0.000 claims description 7
- 230000008569 process Effects 0.000 abstract description 13
- 238000012545 processing Methods 0.000 abstract description 9
- 238000010586 diagram Methods 0.000 description 12
- 230000006870 function Effects 0.000 description 8
- 238000004891 communication Methods 0.000 description 7
- 230000006837 decompression Effects 0.000 description 5
- 230000003287 optical effect Effects 0.000 description 4
- 230000009471 action Effects 0.000 description 2
- 239000012634 fragment Substances 0.000 description 2
- 239000004973 liquid crystal related substance Substances 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000000644 propagated effect Effects 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 230000006978 adaptation Effects 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 230000009193 crawling Effects 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请提供了一种数据更新方法及其相关设备。该数据更新方法包括:获取待更新数据信息,所述待更新数据信息包括待更新数据以及所述待更新数据对应的主键、列名称;根据所述待更新数据对应的列名称,判断所述目标文件块中的各数据列是否为目标数据列,所述目标数据列为需要变更数据的数据列,所述目标文件块为需要变更数据的文件块;若所述数据列不为目标数据列,则将所述数据列的数据整列复制到更新文件中对应位置的数据列;若所述数据列为目标数据列,则按行读取所述数据列,并将对应的数据文件中的对应数据变更为所述待更新数据后写入更新文件中对应位置的数据列。本申请极大地减少了数据更新过程中的处理量,提高了数据变更的读写效率。
Description
技术领域
本申请涉及大数据技术领域,具体而言,涉及一种数据更新方法及其相关设备。
背景技术
Parquet是Hadoop生态圈中主流的列式存储格式,在Hadoop生态圈中主流的文件存储系统是HDFS,而HDFS上的文件创建写入完成之后,再次除了在文件末尾追加之外是不能对其数据进行更新的。
在Parquet中,数据变更(更新或者删除)主要有传统方式和hudi cow两种方式。当前,不论是哪种方式的实现方案一般均是,只要某个文件有数据需要变更,便将整个数据文件的数据一条条读取出来,进行完数据更新或者删除处理后再写入新的文件。
由于该方案会将该文件的所有数据都读出并一条条处理,即所有的数据都要被处理一遍,因此极大降低了读写效率。特别地,parquet存储的文件格式是列存格式,读取时还存在一个列转行的过程,写入时还存在一个行转列的过程,显然,此类文件按照目前方案进行处理时的读写效率将受到极大影响。
鉴于此,提供一种解决上述技术问题的方案,已经是本领域技术人员所亟需关注的。
发明内容
本申请的实施例提供了一种数据更新方法及其相关设备,进而至少在一定程度上可以克服高数据变更过程中的读写效率低的问题。
本申请的其他特性和优点将通过下面的详细描述变得显然,或部分地通过本申请的实践而习得。
根据本申请实施例的一个方面,提供了一种数据更新方法,应用于列式存储文件中,所述数据更新方法包括:获取待更新数据信息,所述待更新数据信息包括待更新数据以及所述待更新数据对应的主键、列名称;根据所述待更新数据对应的列名称,判断所述目标文件块中的各数据列是否为目标数据列,所述目标数据列为需要变更数据的数据列,所述目标文件块为需要变更数据的文件块;若所述数据列不为目标数据列,则将所述数据列的数据整列复制到更新文件中对应位置的数据列;若所述数据列为目标数据列,则按行读取所述数据列,并将对应的数据文件中的对应数据变更为所述待更新数据后写入更新文件中对应位置的数据列。
在本申请的一个实施例中,在所述获取待更新数据信息之后,所述根据所述待更新数据对应的列名称,判断所述目标文件块中的各数据列是否为目标数据列之前,所述方法还包括:根据所述待更新数据对应的主键,判断目标文件中的各文件块是否为目标文件块,所述目标文件为需要变更数据的文件。
在本申请的一个实施例中,所述根据所述待更新数据对应的主键,判断目标文件中的各文件块是否为目标文件块,具体包括:根据所述待更新数据对应的主键,查询索引数据库,所述索引数据库中存有各主键以及与各所述主键关联存储的各文件的文件编号以及各文件块的文件块序号;若能够从所述索引数据库中查询到所述待更新数据对应的主键,则判定与所述主键关联存储的文件编号对应的文件为目标文件,与所述主键关联存储的文件块序号对应的文件块为目标文件块。
在本申请的一个实施例中,在所述根据所述待更新数据对应的主键,查询索引数据库,所述索引数据库中存有各主键以及与各所述主键关联存储的各文件以及各文件块之后,所述方法还包括:若不能从所述索引数据库中查询到所述待更新数据对应的主键,则按照预定规则,为所述待更新数据分配一个文件作为目标文件,将所述待更新数据集中的数据新增至所述目标文件中。
在本申请的一个实施例中,所述若不能从所述索引数据库中查询到所述待更新数据对应的主键,则按照预定规则,为所述待更新数据分配一个文件作为目标文件,将所述待更新数据集中的数据新增至所述目标文件中具体包括:确定所有在所述索引数据库中查询不到的主键对应的所述待更新数据集所占的总资源量;若所述总资源量大于预定资源量阈值,新建一个文件作为所述待更新数据集对应的目标文件,将待更新数据集中的待更新数据全部写入新建的所述目标文件中;若所述总资源量小于预定资源量阈值,新建一个文件作为所述待更新数据集对应的目标文件,则在已有的文件中选择预定文件作为分配给该待更新数据集的目标文件,将待更新数据集中的待更新数据追加写入分配的目标文件中。
在本申请的一个实施例中,所述若所述数据列为目标数据列,则按行读取所述数据列,并将对应的数据文件中的对应数据变更为所述待更新数据后写入更新文件中对应位置的数据列,具体包括:根据所述待更新数据对应的主键,判断所述数据列中的各数据行是否为目标数据行,所述目标数据行为需要变更数据的数据行;若所述数据行不为目标数据行,则将所述数据行的数据复制到更新文件中对应位置的数据行;若所述数据行为目标数据行,则将所述待更新数据填入更新文件中对应位置的数据行。
在本申请的一个实施例中,判断所述数据列中的各数据行是否为目标数据行,具体包括:反序列化解压缩所述文件块中的主键列;查询所述主键列,根据主键确定待更新数据所在行的行号;根据所述行号,确定所述数据列中的各数据行是否为目标数据行。
根据本申请实施例的一个方面,提供了一种数据更新装置,所述数据更新装置包括:
信息获取模块,用于获取待更新数据信息,所述待更新数据信息包括待更新数据以及所述待更新数据对应的主键、列名称;
数据列判断模块,用于根据所述待更新数据对应的列名称,判断所述目标文件块中的各数据列是否为目标数据列,所述目标数据列为需要变更数据的数据列,所述目标文件块为需要变更数据的文件块;
数据列迁移模块,用于若所述数据列不为目标数据列,则将所述数据列的数据整列复制到更新文件中对应位置的数据列;
数据列替换模块,用于若所述数据列为目标数据列,则按行读取所述数据列,并将对应的数据文件中的对应数据变更为所述待更新数据后写入更新文件中对应位置的数据列。
在本申请的一个实施例中,所述数据更新装置还包括:文件块判断模块,用于根据所述待更新数据对应的主键,判断目标文件中的各文件块是否为目标文件块,所述目标文件为需要变更数据的文件。
在本申请的一个实施例中,所述文件块判断模块具体包括:查询子模块,用于根据所述待更新数据对应的主键,查询索引数据库,所述索引数据库中存有各主键以及与各所述主键关联存储的各文件的文件编号以及各文件块的文件块序号;判定子模块,用于若能够从所述索引数据库中查询到所述待更新数据对应的主键,则判定与所述主键关联存储的文件编号对应的文件为目标文件,与所述主键关联存储的文件块序号对应的文件块为目标文件块。
在本申请的一个实施例中,所述数据更新装置还包括:分配子模块,用于若不能从所述索引数据库中查询到所述待更新数据对应的主键,则按照预定规则,为所述待更新数据分配一个文件作为目标文件,将所述待更新数据集中的数据新增至所述目标文件中。
在本申请的一个实施例中,所述分配子模块具体包括:容量统计单元,用于确定所有在所述索引数据库中查询不到的主键对应的所述待更新数据集所占的总资源量;文件新建单元,用于若所述总资源量大于预定资源量阈值,新建一个文件作为所述待更新数据集对应的目标文件,将待更新数据集中的待更新数据全部写入新建的所述目标文件中;文件分配单元,用于若所述总资源量小于预定资源量阈值,新建一个文件作为所述待更新数据集对应的目标文件,则在已有的文件中选择预定文件作为分配给该待更新数据集的目标文件,将待更新数据集中的待更新数据追加写入分配的目标文件中。
在本申请的一个实施例中,所述数据列替换模块具体包括:判断子模块,用于根据所述待更新数据对应的主键,判断所述数据列中的各数据行是否为目标数据行,所述目标数据行为需要变更数据的数据行;迁移子模块,用于若所述数据行不为目标数据行,则将所述数据行的数据复制到更新文件中对应位置的数据行;替换子模块,用于若所述数据行为目标数据行,则将所述待更新数据填入更新文件中对应位置的数据行。
在本申请的一个实施例中,所述判断子模块具体包括:主键列读取单元,用于反序列化解压缩所述文件块中的主键列;主键列查询单元,用于查询所述主键列,根据主键确定待更新数据所在行的行号;数据行确定单元,用于根据所述行号,确定所述数据列中的各数据行是否为目标数据行。
根据本申请实施例的一个方面,提供了一种计算机可读介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如上述实施例中所述的数据更新方法。
根据本申请实施例的一个方面,提供了一种电子设备,包括:一个或多个处理器;存储装置,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现如上述实施例中所述的数据更新方法。
在本申请的一些实施例所提供的技术方案中,通过判断各目标文件的文件块中的各数据列中是否为需要进行数据更新的目标数据列,若不是目标数据列则直接迁移,若是目标数据列则进行更新,避免了将文件块中的所有数据都进行一一读出并进行列转行的不必要操作,极大地减少了数据更新过程中的处理量,提高了数据变更的读写效率。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本申请。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本申请的实施例,并与说明书一起用于解释本申请的原理。显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。在附图中:
图1示出了可以应用本申请实施例的技术方案的示例性系统架构的示意图。
图2示意性示出了根据本申请的一个实施例的数据更新方法的流程图。
图3是根据图2对应实施例示出的数据更新的方法中步骤S200的一种具体实现流程图。
图4是根据图3对应实施例示出的数据更新的方法中步骤S230的一种具体实现流程图。
图5是根据图2对应实施例示出的数据更新的方法中步骤S500的一种具体实现流程图。
图6是根据图5对应实施例示出的数据更新的方法中步骤S510的一种具体实现流程图。
图7示意性示出了根据本申请的一个实施例的数据更新装置的框图。
图8示出了适于用来实现本申请实施例的电子设备的计算机系统的结构示意图。
具体实施方式
现在将参考附图更全面地描述示例实施方式。然而,示例实施方式能够以多种形式实施,且不应被理解为限于在此阐述的范例;相反,提供这些实施方式使得本申请将更加全面和完整,并将示例实施方式的构思全面地传达给本领域的技术人员。
此外,所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施例中。在下面的描述中,提供许多具体细节从而给出对本申请的实施例的充分理解。然而,本领域技术人员将意识到,可以实践本申请的技术方案而没有特定细节中的一个或更多,或者可以采用其它的方法、组元、装置、步骤等。在其它情况下,不详细示出或描述公知方法、装置、实现或者操作以避免模糊本申请的各方面。
附图中所示的方框图仅仅是功能实体,不一定必须与物理上独立的实体相对应。即,可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。
附图中所示的流程图仅是示例性说明,不是必须包括所有的内容和操作/步骤,也不是必须按所描述的顺序执行。例如,有的操作/步骤还可以分解,而有的操作/步骤可以合并或部分合并,因此实际执行的顺序有可能根据实际情况改变。
图1示出了可以应用本申请实施例的技术方案的示例性系统架构的示意图。
如图1所示,系统架构可以包括终端设备(如图1中所示智能手机101、平板电脑102和便携式计算机103中的一种或多种,当然也可以是台式计算机等等)、网络104和服务器105。网络104用以在终端设备和服务器105之间提供通信链路的介质。网络104可以包括各种连接类型,例如有线通信链路、无线通信链路等等。
应该理解,图1中的终端设备、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和服务器。比如服务器105可以是多个服务器组成的服务器集群等。
用户可以使用终端设备通过网络104与服务器105交互,以接收或发送消息等。服务器105可以是提供各种服务的服务器。例如用户利用终端设备103(也可以是终端设备101或102)向服务器105上传了获取待更新数据信息,服务器105可以从该获取待更新数据信息中拆解得到待更新数据以及所述待更新数据对应的主键、列名称,然后根据所述待更新数据对应的列名称,判断所述目标文件块中的各数据列是否为目标数据列,所述目标数据列为需要变更数据的数据列,所述目标文件块为需要变更数据的文件块。若所述数据列不为目标数据列,则将所述数据列的数据整列复制到更新文件中对应位置的文件块中对应位置的数据列;若所述数据列为目标数据列,则对所述数据列进行反序列化解压缩,并将对应的数据文件中的对应数据变更为所述待更新数据后写入更新文件中对应位置的文件块中对应位置的数据列。
需要说明的是,本申请实施例所提供的数据更新方法一般由服务器105执行,相应地,数据更新装置一般设置于服务器105中。但是,在本申请的其它实施例中,终端设备也可以与服务器具有相似的功能,从而执行本申请实施例所提供的数据更新的方案。
在本申请的实施例中,数据呈表格形式列式存储于文件中。具体地,其存储形式为每个文件中的数据按块存储,形成多个文件块;每个文件块中均按列存储,形成多列数据列,每列数据列有多行数据行,每个数据列的数据行均存储有一格数据。
以下对本申请实施例的技术方案的实现细节进行详细阐述:
图2示出了根据本申请的一个实施例的数据更新方法的流程图,该数据更新方法可以由服务器来执行,该服务器可以是图1中所示的服务器。参照图2所示,该数据更新方法具体可以包括以下步骤:
步骤S100,获取待更新数据信息,所述待更新数据信息包括待更新数据以及所述待更新数据对应的主键、列名称。
步骤S300,根据所述待更新数据对应的列名称,判断所述目标文件块中的各数据列是否为目标数据列,所述目标数据列为需要变更数据的数据列,所述目标文件块为需要变更数据的文件块。
步骤S400,若所述数据列不为目标数据列,则将所述数据列的数据整列复制到更新文件中对应位置的数据列。
步骤S500,若所述数据列为目标数据列,则按行读取所述数据列,并将对应的数据文件中的对应数据变更为所述待更新数据后写入更新文件中对应位置的数据列。
在本实施例中,先获取待更新数据信息,待更新数据信息中记录有待更新数据以及待更新数据对应的主键、列名称。再在目标文件块中,根据待更新数据对应的列名称,遍历目标文件块中的各数据列,确定各数据列是否为需要变更数据的目标数据列。如果该列数据列不需要更新数据,即不是目标数据列,则对该数据列进行整体迁移,即将所述数据列的数据整列复制到更新文件中对应位置的文件块中对应位置的数据列。如果该列数据列需要更新数据,即是目标数据列,则对该数据列的数据进行反序列化解压缩后再更新,即按行读取所述数据列,并将对应的数据文件中的对应数据变更为所述待更新数据后写入更新文件中对应位置的数据列。
序列化在计算机科学的数据处理中,是指将数据结构或对象状态转换成可取用格式(例如存成文件,存于缓冲,或经由网络中发送),以留待后续在相同或另一台计算机环境中,能恢复原先状态的过程。反序列化即解除序列化的过程。
在本申请的实施例中,通过判断各目标文件的文件块中的各数据列中是否为需要进行数据更新的目标数据列,若不是目标数据列则直接迁移,若是目标数据列则进行更新,避免了将文件块中的所有数据都进行一一读出并进行列转行的不必要操作,极大地减少了数据更新过程中的处理量,提高了数据变更的读写效率。
在步骤S100中,获取待更新数据信息的方式可以是自动爬取,也可以是用户输入。在获取待更新数据信息后,可以对待更新数据信息进行解析,得到待更新数据、待更新数据对应的主键,以及待更新数据对应的列名称,并可以形成待更新数据集。具体地,对待更新数据信息进行解析的方式可以是通过SQL解析的方式。
在获取到待更新数据信息之后,该数据更新方法还可以包括如下步骤:
步骤S200,根据所述待更新数据对应的主键,判断目标文件中的各文件块是否为目标文件块,所述目标文件为需要变更数据的文件。
在步骤S200中,在获取到待更新数据信息之后,先根据待更新数据对应的主键,在目标文件中寻找到需要进行数据更新的目标文件块。
一份目标文件中存储有多个文件块,每个文件块均存储有一些数据。故需要先定位到需要进行数据更新的文件块,即目标文件块,然后再对目标文件块进行更新。
具体地,在定位过程中,若所述文件块不是目标文件块,则将所述文件块的数据整块复制到更新文件中对应位置的文件块。若所述文件块是目标文件块,则对所述文件块进行反序列化解压缩,并将对应的数据文件中的对应数据变更为所述待更新数据后写入更新文件中对应位置的文件块,即进行步骤S300以及之后的步骤。
具体地,在一些实施例中,步骤S200的具体实施方式可以参阅图3。图3是根据图2对应实施例示出的数据更新方法中步骤S200的细节描述,所述数据更新方法中,步骤S200可以包括以下步骤:
步骤S210,根据所述待更新数据对应的主键,查询索引数据库,所述索引数据库中存有各主键以及与各所述主键关联存储的各文件的文件编号以及各文件块的文件块序号。
步骤S220,若能够从所述索引数据库中查询到所述待更新数据对应的主键,则判定与所述主键关联存储的文件编号对应的文件为目标文件,与所述主键关联存储的文件块序号对应的文件块为目标文件块。
步骤S230,若不能从所述索引数据库中查询到所述待更新数据对应的主键,则按照预定规则,为所述待更新数据分配一个文件作为目标文件,将所述待更新数据集中的数据新增至所述目标文件中。
在本实施例中,先根据待更新数据集中的主键,查询索引数据库,索引数据库返回查询信息。该索引数据库中记录有各主键与各文件、各文件块的映射关系,亦即将各主键与其所在的文件、文件块关联存储。故根据待更新数据集中的主键,就可以定位到目标文件和目标文件块。亦即本申请的实施例中,在目标文件中寻找到需要进行数据更新的目标文件块的方式为,遍历目标文件中的各文件块,若该文件块的文件块序号和查询到的文件块序号一致,则说明该文件块为目标文件块,否则,该文件块就不为目标文件块。
在本申请的实施例中,索引数据库返回查询信息可以包括是否查询到待更新数据对应的主键以及与该主键关联存储的文件编号、文件块序号。所述索引数据库中存储有原数据库中各主键以及与各所述主键关联存储的各文件的文件编号以及各文件块的文件块序号,当需要查询原数据库中的数据时,可以先查询索引数据库进行定位,然后在原数据库中获取对应数据。
当索引数据库能够查询到待更新数据对应的主键时,同时返回与该主键关联存储的文件的编号、文件块的文件块序号等信息,然后就可以在存储有对应文件的数据库中根据文件的编号抓取到目标文件,并根据文件块序号确定目标文件中的目标文件块。
当索引数据库不能查询到待更新数据对应的主键时,证明该待更新数据信息是原数据库不存在的,为新增数据,其没有对应的文件和文件块,此时需要按照预定规则为所述待更新数据分配一个新文件作为目标文件,将所述待更新数据集中的数据新增至所述目标文件中。
具体的分配规则,即预定规则可以是分配一个仍存在剩余存储空间的文件进行存储,也可以是分配一个新建的文件进行存储。
具体地,在一些实施例中,步骤S230的具体实施方式可以参阅图4。图4是根据图3对应实施例示出的数据更新方法中步骤S230的细节描述,所述数据更新方法中,步骤S230可以包括以下步骤:
步骤S231,确定所有在所述索引数据库中查询不到的主键对应的所述待更新数据集所占的总资源量。
步骤S232,若所述总资源量大于预定资源量阈值,新建一个文件作为所述待更新数据集对应的目标文件,将待更新数据集中的待更新数据全部写入新建的所述目标文件中。
步骤S233,若所述总资源量小于预定资源量阈值,则在已有的文件中选择预定文件作为分配给该待更新数据集的目标文件,将待更新数据集中的待更新数据追加写入分配的目标文件中。
在本实施例中,通过对待更新数据的数据量进行统计,根据待更新数据的数据量的大小,决定分配目标文件的方式,若待更新数据集所占的总资源量过大,则直接新建文件作为目标文件对待更新数据进行存储。若待更新数据集所占的总资源量较小,则可以将一个还有剩余存储容量的文件作为目标文件,将待更新数据追加写入分配的目标文件中,以减少数据库中的文件碎片。
在步骤S233中,上述的预定资源量阈值的可以是事先确定的一个定值,也可以是和存储数据库中各文件剩余存储容量相关的动态值,例如可以是当前状态下存储数据库中各文件剩余存储容量中的最大值、最小值以及平均值等。对应地,分配的预定文件也可以是存储数据库中剩余存储容量最大的文件或者是剩余存储容量最接近该待更新数据集所占存储容量的文件。已有的文件原数据库中已存在的文件。
为新增的数据分配一个仍存在剩余存储空间的文件进行存储,可以提高文件资源的利用率,同时可以防止产生很多文件碎片。
在完成数据更新之后,即在步骤S220和步骤S230之后,该数据更新方法还包括:
将所述主键与所述目标文件的文件编号关联存储。
在完成数据更新之后,各主键和各文件的文件编号以及各文件块的文件块序号的关联关系出现改变,需要重新确定各主键和各文件、各文件块之间的关联关系,并进行存储。
具体地,当待更新数据是新增数据时,需要将分配给该待更新数据的目标文件的文件编号和该待更新数据写入的文件块的文件块序号记录,并和其对应的主键关联存储。当待更新数据是删除数据时,需要将相应地主键抹除。当待更新数据是对主键的变更时,需要将变更后的主键和对应的文件、文件块对应起来。
在确定了目标文件和目标文件块后,就可以执行步骤S300至步骤S500,逐步确定待更新数据对应的行和列。由于parquet文件为列式存储文件,故在步骤S300中,先确定目标数据列,即需要变更数据的数据列,亦即待更新数据对应的数据列。确定目标数据列的方式为,根据对待更新数据信息解析得到的列名称,遍历目标文件块各数据列的表头。若该列数据列表头的列名称和待更新数据信息中的列名称一致,则该列数据列为目标数据列;若该列数据列表头的列名称和待更新数据信息中的列名称不一致,则该列数据列不为目标数据列。
在步骤S400中,若判断该数据列不为目标数据列,则将该数据列的数据进行整体迁移,即将该数据列的数据整列复制到更新文件中对应位置的文件块中对应位置的数据列。
在步骤S500中,若判断该数据列为目标数据列,则对该数据列进行数据变更,具体的,对该数据列进行反序列化解压缩,并将对应的数据文件中的对应数据变更为所述待更新数据后写入更新文件中对应位置的文件块中对应位置的数据列。
具体的,在一些实施例中,步骤S500的具体实施方式可以参阅图5。图5是根据图2对应实施例示出的数据更新方法中步骤S500的细节描述,所述数据更新方法中,步骤S500可以包括以下步骤:
步骤S510,根据所述待更新数据对应的主键,判断所述数据列中的各数据行是否为目标数据行,所述目标数据行为需要变更数据的数据行。
步骤S520,若所述数据行不为目标数据行,则将所述数据行的数据复制到更新文件中对应位置的数据行。
步骤S530,若所述数据行为目标数据行,则将所述待更新数据填入更新文件中对应位置的数据行。
在本实施例中,对目标数据列进行数据变更的具体方式为,在目标文件块中,根据待更新数据对应的主键,确定各数据行是否为需要变更数据的目标数据行。如果该行数据行不需要更新数据,即不是目标数据行,则该数据行内的数据不需要变更,只将所述数据行的数据复制到更新文件中对应位置的文件块中对应位置的数据行即可。如果该列数据行需要更新数据,即是目标数据行,则对该数据行的数据替换为待更新数据后迁移至更新文件的对应位置中,即将待更新数据填入更新文件中对应位置的文件块中对应位置的数据行。
在本实施例中,在对数据列进行数据变更时,通过判断各目标数据列中的各数据行是否为需要进行数据更新的目标数据行,若不是目标数据行则直接迁移,若是目标数据行则进行更新。
在步骤S510中,确定目标数据行,即需要变更数据的数据行,亦即待更新数据对应的数据行。确定目标数据行的方式为,根据对待更新数据信息解析得到的主键。若该数据行的主键和待更新数据信息中的主键一致,则该数据行为目标数据行;若该数据行的主键和待更新数据信息中的主键不一致,则该数据行不为目标数据行。
具体的,在一些实施例中,步骤S510的具体实施方式可以参阅图6。图6是根据图5对应实施例示出的数据更新方法中步骤S510的细节描述,所述数据更新方法中,步骤S510可以包括以下步骤:
步骤S511,反序列化解压缩所述文件块中的主键列。
步骤S512,查询所述主键列,根据主键确定待更新数据所在行的行号。
步骤S513,根据所述行号,确定所述数据列中的各数据行是否为目标数据行。
在本实施例中,确定目标数据行的方式为,先反序列化解压缩主键列并读取主键列的主键数据,根据主键在主键列中查询待更新数据所在行的行号,在确定好行号后,根据行号在目标数据列中定位目标数据行。主键列是记载有主键信息的数据列。
其中,步骤S511和步骤S512可以和定位目标数据列的步骤S300同步执行乃至先于步骤S300执行。
在步骤S520中,若判断出该数据行不为目标数据行,则该数据行内的数据不需要变更,只将所述数据行的数据复制到更新文件中对应位置的文件块中对应位置的数据行即可,即将数据行的数据复制到更新文件中对应位置的文件块中对应位置的数据行。
在步骤S530中,若判断出该数据列为目标数据行,则对该数据行进行数据变更,具体的,将所述待更新数据填入更新文件中对应位置的文件块中对应位置的数据行。
在本申请的实施例中,通过判断各需要更新数据的目标文件中的各文件块是否为需要更新数据的目标文件块、各需要更新数据的目标文件块中的各数据列是否为需要进行数据更新的目标数据列、各需要更新数据的目标数据列中的各行数据行是否为需要进行数据更新的目标数据行,对于不为目标文件块的文件块、不为目标数据列的数据列、不为目标数据行的数据行,直接进行整体迁移,不需要做反序列化解压缩。仅对于目标文件块进行反序列化解压缩得到多条数据列,仅对于目标数据列进行反序列化解压缩得到多条数据行,进而将数据变更的粒度细分到文件块级别、数据列级别乃至数据行级别,有效避免了将目标文件中的所有数据都进行一一读出并进行列转行的不必要操作,极大地减少了数据更新过程中的处理量,提高了数据变更的读写效率。
图7示出了根据本申请的一个实施例的数据更新装置的框图。
参照图7所示,根据本申请的一个实施例的数据更新装置900,该数据更新装置900包括:信息获取模块910,用于获取待更新数据信息,所述待更新数据信息包括待更新数据以及所述待更新数据对应的主键、列名称;数据列判断模块930,用于根据所述待更新数据对应的列名称,判断所述目标文件块中的各数据列是否为目标数据列,所述目标数据列为需要变更数据的数据列,所述目标文件块为需要变更数据的文件块;数据列迁移模块940,用于若所述数据列不为目标数据列,则将所述数据列的数据整列复制到更新文件中对应位置的数据列;数据列替换模块950,用于若所述数据列为目标数据列,则按行读取所述数据列,并将对应的数据文件中的对应数据变更为所述待更新数据后写入更新文件中对应位置的数据列。
在本申请的一个实施例中,所述数据更新装置还包括:文件块判断模块,用于根据所述待更新数据对应的主键,判断目标文件中的各文件块是否为目标文件块,所述目标文件为需要变更数据的文件。
在本申请的一个实施例中,所述文件块判断模块具体包括:查询子模块,用于根据所述待更新数据对应的主键,查询索引数据库,所述索引数据库中存有各主键以及与各所述主键关联存储的各文件的文件编号以及各文件块的文件块序号;判定子模块,用于若能够从所述索引数据库中查询到所述待更新数据对应的主键,则判定与所述主键关联存储的文件编号对应的文件为目标文件,与所述主键关联存储的文件块序号对应的文件块为目标文件块。
在本申请的一个实施例中,所述数据更新装置还包括:分配子模块,用于若不能从所述索引数据库中查询到所述待更新数据对应的主键,则按照预定规则,为所述待更新数据分配一个文件作为目标文件,将所述待更新数据集中的数据新增至所述目标文件中。
在本申请的一个实施例中,所述分配子模块具体包括:容量统计单元,用于确定所有在所述索引数据库中查询不到的主键对应的所述待更新数据集所占的总资源量;文件新建单元,用于若所述总资源量大于预定资源量阈值,新建一个文件作为所述待更新数据集对应的目标文件,将待更新数据集中的待更新数据全部写入新建的所述目标文件中;文件分配单元,用于若所述总资源量小于预定资源量阈值,新建一个文件作为所述待更新数据集对应的目标文件,则在已有的文件中选择预定文件作为分配给该待更新数据集的目标文件,将待更新数据集中的待更新数据追加写入分配的目标文件中。
在本申请的一个实施例中,所述数据列替换模块具体包括:判断子模块,用于根据所述待更新数据对应的主键,判断所述数据列中的各数据行是否为目标数据行,所述目标数据行为需要变更数据的数据行;迁移子模块,用于若所述数据行不为目标数据行,则将所述数据行的数据复制到更新文件中对应位置的数据行;替换子模块,用于若所述数据行为目标数据行,则将所述待更新数据填入更新文件中对应位置的数据行。
在本申请的一个实施例中,所述判断子模块具体包括:主键列读取单元,用于反序列化解压缩所述文件块中的主键列;主键列查询单元,用于查询所述主键列,根据主键确定待更新数据所在行的行号;数据行确定单元,用于根据所述行号,确定所述数据列中的各数据行是否为目标数据行。
图8示出了适于用来实现本申请实施例的电子设备的计算机系统的结构示意图。
需要说明的是,图8示出的电子设备的计算机系统仅是一个示例,不应对本申请实施例的功能和使用范围带来任何限制。
如图8所示,计算机系统包括中央处理单元(Central Processing Unit,CPU)1801,其可以根据存储在只读存储器(Read-Only Memory,ROM)1802中的程序或者从存储部分1808加载到随机访问存储器(Random Access Memory,RAM)1803中的程序而执行各种适当的动作和处理,例如执行上述实施例中所述的方法。在RAM 1803中,还存储有系统操作所需的各种程序和数据。CPU 1801、ROM 1802以及RAM 1803通过总线1804彼此相连。输入/输出(Input/Output,I/O)接口1805也连接至总线1804。
以下部件连接至I/O接口1805:包括键盘、鼠标等的输入部分1806;包括诸如阴极射线管(Cathode Ray Tube,CRT)、液晶显示器(Liquid Crystal Display,LCD)等以及扬声器等的输出部分1807;包括硬盘等的存储部分1808;以及包括诸如LAN(Local AreaNetwork,局域网)卡、调制解调器等的网络接口卡的通信部分1809。通信部分1809经由诸如因特网的网络执行通信处理。驱动器1810也根据需要连接至I/O接口1805。可拆卸介质1811,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器1810上,以便于从其上读出的计算机程序根据需要被安装入存储部分1808。
特别地,根据本申请的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本申请的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的计算机程序。在这样的实施例中,该计算机程序可以通过通信部分1809从网络上被下载和安装,和/或从可拆卸介质1811被安装。在该计算机程序被中央处理单元(CPU)1801执行时,执行本申请的系统中限定的各种功能。
需要说明的是,本申请实施例所示的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(Erasable Programmable Read Only Memory,EPROM)、闪存、光纤、便携式紧凑磁盘只读存储器(Compact Disc Read-Only Memory,CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本申请中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本申请中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的计算机程序。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的计算机程序可以用任何适当的介质传输,包括但不限于:无线、有线等等,或者上述的任意合适的组合。
附图中的流程图和框图,图示了按照本申请各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。其中,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本申请实施例中所涉及到的单元可以通过软件的方式实现,也可以通过硬件的方式来实现,所描述的单元也可以设置在处理器中。其中,这些单元的名称在某种情况下并不构成对该单元本身的限定。
作为另一方面,本申请还提供了一种计算机可读介质,该计算机可读介质可以是上述实施例中描述的电子设备中所包含的;也可以是单独存在,而未装配入该电子设备中。上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被一个该电子设备执行时,使得该电子设备实现上述实施例中所述的方法。
应当注意,尽管在上文详细描述中提及了用于动作执行的设备的若干模块或者单元,但是这种划分并非强制性的。实际上,根据本申请的实施方式,上文描述的两个或更多模块或者单元的特征和功能可以在一个模块或者单元中具体化。反之,上文描述的一个模块或者单元的特征和功能可以进一步划分为由多个模块或者单元来具体化。
通过以上的实施方式的描述,本领域的技术人员易于理解,这里描述的示例实施方式可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,根据本申请实施方式的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、触控终端、或者网络设备等)执行根据本申请实施方式的方法。
本领域技术人员在考虑说明书及实践这里公开的实施方式后,将容易想到本申请的其它实施方案。本申请旨在涵盖本申请的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本申请的一般性原理并包括本申请未公开的本技术领域中的公知常识或惯用技术手段。
应当理解的是,本申请并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本申请的范围仅由所附的权利要求来限制。
Claims (10)
1.一种数据更新方法,其特征在于,应用于列式存储文件中,所述数据更新方法包括:
获取待更新数据信息,所述待更新数据信息包括待更新数据以及所述待更新数据对应的主键、列名称;
根据所述待更新数据对应的列名称,判断所述目标文件块中的各数据列是否为目标数据列,所述目标数据列为需要变更数据的数据列,所述目标文件块为需要变更数据的文件块;
若所述数据列不为目标数据列,则将所述数据列的数据整列复制到更新文件中对应位置的数据列;
若所述数据列为目标数据列,则按行读取所述数据列,并将对应的数据文件中的对应数据变更为所述待更新数据后写入更新文件中对应位置的数据列。
2.如权利要求1所述的数据更新方法,其特征在于,在所述获取待更新数据信息之后,所述根据所述待更新数据对应的列名称,判断所述目标文件块中的各数据列是否为目标数据列之前,所述方法还包括:
根据所述待更新数据对应的主键,判断目标文件中的各文件块是否为目标文件块,所述目标文件为需要变更数据的文件。
3.如权利要求2所述的数据更新方法,其特征在于,所述根据所述待更新数据对应的主键,判断目标文件中的各文件块是否为目标文件块,具体包括:
根据所述待更新数据对应的主键,查询索引数据库,所述索引数据库中存有各主键以及与各所述主键关联存储的各文件的文件编号以及各文件块的文件块序号;
若能够从所述索引数据库中查询到所述待更新数据对应的主键,则判定与所述主键关联存储的文件编号对应的文件为目标文件,与所述主键关联存储的文件块序号对应的文件块为目标文件块。
4.如权利要求3所述的数据更新方法,其特征在于,在根据所述待更新数据对应的主键,查询索引数据库之后,所述方法还包括:
若不能从所述索引数据库中查询到所述待更新数据对应的主键,则按照预定规则,为所述待更新数据分配一个文件作为目标文件,将所述待更新数据集中的数据新增至所述目标文件中。
5.如权利要求4所述的数据更新方法,其特征在于,所述若不能从所述索引数据库中查询到所述待更新数据对应的主键,则按照预定规则,为所述待更新数据分配一个文件作为目标文件,将所述待更新数据集中的数据新增至所述目标文件中具体包括:
确定所有在所述索引数据库中查询不到的主键对应的所述待更新数据集所占的总资源量;
若所述总资源量大于预定资源量阈值,新建一个文件作为所述待更新数据集对应的目标文件,将待更新数据集中的待更新数据全部写入新建的所述目标文件中;
若所述总资源量小于预定资源量阈值,则在已有的文件中选择预定文件作为分配给该待更新数据集的目标文件,将待更新数据集中的待更新数据追加写入分配的目标文件中。
6.如权利要求1所述的数据更新方法,其特征在于,所述若所述数据列为目标数据列,则按行读取所述数据列,并将对应的数据文件中的对应数据变更为所述待更新数据后写入更新文件中对应位置的数据列,具体包括:
根据所述待更新数据对应的主键,判断所述数据列中的各数据行是否为目标数据行,所述目标数据行为需要变更数据的数据行;
若所述数据行不为目标数据行,则将所述数据行的数据复制到更新文件中对应位置的数据行;
若所述数据行为目标数据行,则将所述待更新数据填入更新文件中对应位置的数据行。
7.如权利要求6所述的数据更新方法,其特征在于,所述判断所述数据列中的各数据行是否为目标数据行,具体包括:
反序列化解压缩所述文件块中的主键列;
查询所述主键列,根据主键确定待更新数据所在行的行号;
根据所述行号,确定所述数据列中的各数据行是否为目标数据行。
8.一种数据更新装置,其特征在于,所述数据更新装置包括:
信息获取模块,用于获取待更新数据信息,所述待更新数据信息包括待更新数据以及所述待更新数据对应的主键、列名称;
数据列判断模块,用于根据所述待更新数据对应的列名称,判断所述目标文件块中的各数据列是否为目标数据列,所述目标数据列为需要变更数据的数据列,所述目标文件块为需要变更数据的文件块;
数据列迁移模块,用于若所述数据列不为目标数据列,则将所述数据列的数据整列复制到更新文件中对应位置的数据列;
数据列替换模块,用于若所述数据列为目标数据列,则按行读取所述数据列,并将对应的数据文件中的对应数据变更为所述待更新数据后写入更新文件中对应位置的数据列。
9.一种计算机可读介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至7中任一项所述的数据更新方法。
10.一种电子设备,其特征在于,包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现如权利要求1至7中任一项所述的数据更新方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210619069.7A CN117194443A (zh) | 2022-06-01 | 2022-06-01 | 数据更新方法及其相关设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210619069.7A CN117194443A (zh) | 2022-06-01 | 2022-06-01 | 数据更新方法及其相关设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117194443A true CN117194443A (zh) | 2023-12-08 |
Family
ID=88998526
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210619069.7A Pending CN117194443A (zh) | 2022-06-01 | 2022-06-01 | 数据更新方法及其相关设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117194443A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117453707A (zh) * | 2023-12-09 | 2024-01-26 | 北京镜舟科技有限公司 | 数据更新方法、装置、电子设备及存储介质 |
-
2022
- 2022-06-01 CN CN202210619069.7A patent/CN117194443A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117453707A (zh) * | 2023-12-09 | 2024-01-26 | 北京镜舟科技有限公司 | 数据更新方法、装置、电子设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102240557B1 (ko) | 데이터 저장 방법, 장치 및 시스템 | |
US10459917B2 (en) | Pluggable storage system for distributed file systems | |
CN107526743B (zh) | 用于压缩文件系统元数据的方法和设备 | |
KR101994021B1 (ko) | 파일 조작 방법 및 장치 | |
US10061834B1 (en) | Incremental out-of-place updates for datasets in data stores | |
EP3252592A1 (en) | Method and device for storing and reading data | |
US9965207B2 (en) | Maintenance of cloned computer data | |
US10649905B2 (en) | Method and apparatus for storing data | |
CN110109868B (zh) | 用于索引文件的方法、装置和计算机程序产品 | |
CN112748863B (zh) | 用于处理数据的方法、电子设备和计算机程序产品 | |
CN109582231B (zh) | 数据存储方法、装置、电子设备及存储介质 | |
CN111291041B (zh) | 列数据的非统一分页 | |
CN117194443A (zh) | 数据更新方法及其相关设备 | |
CN115114232A (zh) | 一种历史版本对象列举方法、装置及其介质 | |
US11429311B1 (en) | Method and system for managing requests in a distributed system | |
CN105808451B (zh) | 一种数据缓存方法以及相关装置 | |
CN114138558A (zh) | 一种对象存储方法、装置、电子设备和存储介质 | |
CN111414422B (zh) | 一种数据分布方法、装置、设备和存储介质 | |
US11321374B2 (en) | External storage of unstructured database objects | |
CN108205559B (zh) | 一种数据管理方法及其设备 | |
CN113127438B (zh) | 用于存储数据的方法、装置、服务器和介质 | |
CN114238390A (zh) | 数据仓库优化方法、装置、设备及存储介质 | |
CN114297196A (zh) | 元数据存储方法、装置、电子设备及存储介质 | |
CN113779048A (zh) | 一种数据处理方法和装置 | |
CN109582938B (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 |