CN118035260A - 数据更新方法、装置、计算机可读存储介质和电子设备 - Google Patents
数据更新方法、装置、计算机可读存储介质和电子设备 Download PDFInfo
- Publication number
- CN118035260A CN118035260A CN202410177655.XA CN202410177655A CN118035260A CN 118035260 A CN118035260 A CN 118035260A CN 202410177655 A CN202410177655 A CN 202410177655A CN 118035260 A CN118035260 A CN 118035260A
- Authority
- CN
- China
- Prior art keywords
- statement
- data
- target metadata
- metadata
- clause
- 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 117
- 238000003860 storage Methods 0.000 title claims abstract description 34
- 238000003780 insertion Methods 0.000 claims abstract description 26
- 230000037431 insertion Effects 0.000 claims abstract description 26
- 238000012217 deletion Methods 0.000 claims description 33
- 230000037430 deletion Effects 0.000 claims description 33
- 238000005192 partition Methods 0.000 claims description 13
- 230000008569 process Effects 0.000 description 20
- 238000012545 processing Methods 0.000 description 18
- 238000004590 computer program Methods 0.000 description 11
- 238000010586 diagram Methods 0.000 description 11
- 230000006870 function Effects 0.000 description 9
- 230000007246 mechanism Effects 0.000 description 9
- 238000011084 recovery Methods 0.000 description 9
- 230000000694 effects Effects 0.000 description 8
- 230000005540 biological transmission Effects 0.000 description 7
- 238000012986 modification Methods 0.000 description 7
- 230000004048 modification Effects 0.000 description 7
- 238000005516 engineering process Methods 0.000 description 6
- 241000533950 Leucojum Species 0.000 description 4
- 238000007405 data analysis Methods 0.000 description 3
- 230000008520 organization Effects 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 230000006835 compression Effects 0.000 description 2
- 238000007906 compression Methods 0.000 description 2
- 238000007418 data mining Methods 0.000 description 2
- 230000007547 defect Effects 0.000 description 2
- 230000001934 delay Effects 0.000 description 2
- 230000003111 delayed effect Effects 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- 239000002253 acid Substances 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000004140 cleaning Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 239000002360 explosive Substances 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 230000035772 mutation Effects 0.000 description 1
- 230000010076 replication Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请提供了一种数据更新方法、装置、计算机可读存储介质和电子设备。该方法包括:获取更新语句,其中,更新语句为表征需要对目标元数据进行更新的语句,更新语句至少包括第一分句和第二分句,第一分句表示目标元数据的位置,第二分句表示目标元数据的更新方式,目标元数据为需要更新的元数据;根据更新语句中的第一分句生成第一查询语句,执行第一查询语句,得到目标元数据,并获取目标元数据的行记录标识,将行记录标识写入失效数据记录表;根据更新语句中的第二分句生成插入语句,执行插入语句,以更新失效数据记录表中的行记录标识对应的目标元数据。通过本申请,缓解了现有技术中数据更新时占用内存空间大的问题。
Description
技术领域
本申请涉及大数据技术领域,具体而言,涉及一种数据更新方法、装置、计算机可读存储介质和电子设备。
背景技术
Hive是基于Hadoop的数据仓库基础架构,旨在提供一个简化的查询和分析大规模数据的方法。Hive引入了类似于SQL的查询语言,称为HQL,使非技术用户能够通过熟悉的SQL语法进行数据查询和分析。Hive的主要优势在于其易用性和灵活性。它允许用户轻松地处理结构化和半结构化数据,并能够与现有的商业智能工具和数据集成。此外,Hive还支持用户自定义函数和复杂的数据处理操作,使其在大数据分析和数据挖掘领域具有广泛的应用。
然而,随着大数据技术的快速发展,Hive也面临着一些挑战,最主要可以概括为两方面的问题,其中之一是性能问题,因为Hive的查询需要通过多个MapReduce任务执行,可能导致较长的延迟;另一方面,更为重要的问题是Hive原生版本目前还不支持sql中典型的update、delete操作,这对于进行数据清洗、加工十分不友好。目前最为常见的实现Hive实时更新数据操作的方法是将Hive与HBase结合,借助HBase的能力,在Hive操作时实现更新数据。虽然HBase与Hive的结合在实现实时数据更新方面具有巨大潜力,但我们也不能忽视HBase在内存占用方面的缺点。HBase的内存占用是一个不可忽视的挑战,特别是在面对大规模数据和高并发写入的情况下。内存占用的增加可能导致多个问题。首先,高内存需求意味着需要投入更多的硬件资源来支持HBase集群,这可能会带来昂贵的成本。其次,内存资源的限制可能会限制HBase的可伸缩性和性能,特别是在面对大规模数据集和高并发写入时。此外,频繁的垃圾回收(GC)操作也可能成为性能瓶颈,导致延迟和不稳定性。
因此,需要一种在不依赖大量内存开销的情况下实现Hive的数据更新与删除等操作的方法。
发明内容
本申请的主要目的在于提供一种数据更新方法、装置、计算机可读存储介质和电子设备,以至少解决现有技术中数据更新占用内存大的问题。
为了实现上述目的,根据本申请的一个方面,提供了一种数据更新方法,包括:获取更新语句,其中,所述更新语句为表征需要对目标元数据进行更新的语句,所述更新语句至少包括第一分句和第二分句,所述第一分句表示所述目标元数据的位置,所述第二分句表示所述目标元数据的更新方式,所述目标元数据为需要更新的元数据;根据所述更新语句中的所述第一分句生成第一查询语句,执行所述第一查询语句,得到目标元数据,并获取所述目标元数据的行记录标识,将所述行记录标识写入失效数据记录表,其中,所述第一查询语句用于查询所述目标元数据,所述失效数据记录表中的所述行记录标识表示对应的所述目标元数据失效;根据所述更新语句中的所述第二分句生成插入语句,执行所述插入语句,以更新所述失效数据记录表中的所述行记录标识对应的所述目标元数据,其中,所述插入语句用于更新所述目标元数据。
可选地,在获取更新语句之前,所述数据更新方法还包括:获取目标元数据,随机生成所述目标元数据对应的所述行记录标识,其中,所述目标元数据至少包括数据库、表、列和分区,所述行记录标识由一组随机数字组成;在所述目标元数据的所述表中创建行记录标识字段,将所述行记录标识存储至所述行记录标识字段。
可选地,在将所述行记录标识存储至所述行记录标识字段之后,所述数据更新方法还包括:在所述目标元数据需要更新的情况下,创建每个所述元数据的所述失效数据记录表,其中,所述失效数据记录表包括所述行记录标识、写入所述行记录标识对应的时间和所述元数据的版本。
可选地,根据所述更新语句中的所述第一分句生成第一查询语句,包括:将查询关键词与所述第一分句中的所述目标元数据的位置进行组合,生成所述第一查询语句,其中,所述查询关键词为程序代码中用于查询的关键词;根据所述更新语句中的所述第二分句生成插入语句,包括:将插入关键词与所述第二分句中的所述目标元数据的更新方式进行组合,生成所述插入语句,其中,所述插入关键词为程序代码中用于插入的关键词。
可选地,在更新所述失效数据记录表中的所述行记录标识对应的所述目标元数据之后,所述方法还包括:获取各所述失效数据记录表的内存大小,将源文件中所述内存最大的所述失效数据记录表中的所述行记录标识对应的所述目标元数据删除,以对所述源文件进行更新。
可选地,在更新所述失效数据记录表中的所述行记录标识对应的所述目标元数据之后,所述方法还包括:将所述失效数据记录表备份至磁盘,并将所述失效数据记录表从内存中删除;在需要回滚的情况下,从所述磁盘中恢复所述失效数据记录表。
可选地,所述更新语句为删除语句,所述删除语句包括所述第一分句,所述方法还包括:根据所述删除语句中的所述第一分句生成第二查询语句,执行所述第二查询语句,得到目标删除元数据,其中,所述目标删除元数据为需要删除的元数据;将所述目标删除元数据进行删除。
根据本申请的另一方面,提供了一种数据更新装置,包括:第一获取单元,用于获取更新语句,其中,所述更新语句为表征需要对目标元数据进行更新的语句,所述更新语句至少包括第一分句和第二分句,所述第一分句表示目标元数据的位置,所述第二分句表示所述目标元数据的更新方式,所述目标元数据表示需要更新的元数据;写入单元,用于根据所述更新语句中的所述第一分句生成第一查询语句,执行所述第一查询语句,得到目标元数据,并获取所述目标元数据的行记录标识,将所述行记录标识写入失效数据记录表,其中,所述第一查询语句用于查询所述目标元数据,所述失效数据记录表中的所述行记录标识表示对应的所述目标元数据失效;更新单元,用于根据所述更新语句中的所述第二分句生成插入语句,执行所述插入语句,以更新所述失效数据记录表中的所述行记录标识对应的所述目标元数据,其中,所述插入语句用于更新所述目标元数据。
根据本申请的再一方面,提供了一种计算机可读存储介质,所述计算机可读存储介质包括存储的程序,其中,在所述程序运行时控制所述计算机可读存储介质所在设备执行任意一种所述的数据更新方法。
根据本申请的又一方面,提供了一种电子设备,包括:一个或多个处理器,存储器,以及一个或多个程序,其中,所述一个或多个程序被存储在所述存储器中,并且被配置为由所述一个或多个处理器执行,所述一个或多个程序包括用于执行任意一种所述的数据更新方法。
应用本申请的技术方案,获取更新语句,更新语句表示目标元数据需要进行更新,根据更新语句中的第一分句生成第一查询语句,执行第一查询语句,得到目标元数据,并获取目标元数据的行记录标识,将行记录标识写入失效数据记录表,失效数据记录表中的行记录标识表示对应的目标元数据失效;根据更新语句中的第二分句生成插入语句,执行插入语句,就可以更新目标元数据。与现有技术中,数据在更新的时候结合HBase,需要维护大量的内存结构来支持高吞吐量和快速写入的能力,消耗大量的内存资源的方法相比,本申请只需维护失效数据记录表,可以在无需大量占用内存的情况下,实现对于表中的数据的修改,保证了数据的顺序性和准确性。因此,能够缓解现有技术中数据更新需要占用大量内存的问题,达到减少内存占用的效果。
附图说明
构成本申请的一部分的说明书附图用来提供对本申请的进一步理解,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1示出了本申请的实施例提供的一种执行数据更新方法的移动终端的硬件结构框图;
图2示出了本申请的实施例提供的一种数据更新方法的流程示意图;
图3示出了本申请的实施例提供的一种具体的数据更新方法的流程示意图;
图4示出了本申请的实施例提供的一种失效数据记录表的结构示意图;
图5示出了本申请的实施例提供的一种基于失效数据记录表的数据处理方法的流程示意图;
图6示出了本申请的实施例提供的一种数据更新装置的结构框图。
其中,上述附图包括以下附图标记:
102、处理器;104、存储器;106、传输设备;108、输入输出设备。
具体实施方式
需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本申请。
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
近年来,大数据技术的广泛应用和发展导致了数据量的爆发式增长,这使得传统的单机存储和计算能力无法满足实际应用的需求。为了应对这种挑战,分布式水平扩展成为了大数据系统的必然选择。特别是在面向分析的大数据系统中,需要处理大量的历史数据和新生数据,这更加迫切地要求系统能够实现大规模的水平扩展。
在这个背景下,Hadoop生态系统应运而生。Hadoop是一个开源的分布式计算框架,旨在解决大规模数据集的存储和计算问题,并提供高可靠性和高性能的解决方案。它由Hadoop分布式文件系统(HDFS)和MapReduce计算模型组成。
首先,Hadoop分布式文件系统(HDFS)是一个可靠且高容错性的分布式文件系统,它可以将大规模数据集分布在集群的多个节点上,实现数据的并行存储和访问。HDFS通过数据切块、复制和故障恢复等机制,确保了数据的安全性和可靠性。
其次,Hadoop的计算模型是基于MapReduce的,它将大规模数据集划分为多个小的子任务,分发到集群中的多个计算节点上进行并行计算,最后将结果进行汇总。这种分布式计算模型充分利用了集群中的计算资源,实现了高效的数据处理能力。
Hive是一个基于Hadoop的数据仓库基础架构,最初由Facebook开发并于2008年开源。Hive的设计目标是提供一个简化的查询和分析大规模数据的方法,特别是针对非技术用户。
Hive引入了类似于SQL的查询语言,称为HiveQL(类似于SQL),使非技术用户能够使用熟悉的SQL语法进行数据查询和分析。Hive将用户的查询转换为一系列的MapReduce任务,并在底层使用Hadoop来执行这些任务。
Hive的主要优势在于其易用性和灵活性。它允许用户轻松地处理结构化和半结构化数据,并能够与现有的商业智能工具和数据集成。此外,Hive还支持用户自定义函数和复杂的数据处理操作,使其在大数据分析和数据挖掘领域具有广泛的应用。
然而,Hive在设计上并不支持实时数据处理和数据更新操作。它更适用于批处理和历史数据分析,对于需要实时查询和数据更新的场景,需要结合其他技术或扩展工具来实现。
已有专利提出了一种基于Hive Mutation API进行数据更新的方法,该方法通过创建Hive的行级ACID事务桶表,更新数据时先计算需要更新的数据,对需要写入的更新数据进行排序,获取原始数据与需要写入的更新数据合并为新的更新数据,调用接口进行数据更新;该专利实现的方法需要多次读取磁盘,且每次更新时需要首先排序数据,才能与源数据合并,且每次都会重写磁盘数据,十分消耗时间,使得sql运行效率大大降低。
另外,目前最为常见的实现hive实时更新数据操作的方法是将hive与HBase结合,借助HBase的能力,在hive操作时实现更新数据。HBase是一个分布式的列式数据库,构建在Hadoop之上。它提供了快速、可扩展、高容错性的数据存储和查询能力。
主要实现原理是将Hive表与HBase表进行映射,即在Hive中创建外部表,并将其映射到HBase的表结构上。当Hive进行数据更新操作时,实际上是通过HBase的API进行数据的写入、更新或删除。Hive通过HBase存储处理实现了数据的实时更新能力。
HBase作为基于Hadoop的分布式列式数据库,依赖于Log-Structured Merge Tree(LSM-Tree)数据结构来实现高效的数据更新和存储。LSM-Tree是一种高效的数据结构,专门用于处理大规模写入和更新操作的场景。它将这些操作分为两个阶段:内存写入和磁盘写入。LSM-Tree由多个层级组成,包括内存层和磁盘层。内存层使用有序的内存数据结构(如Skip List或红黑树)来存储最新的写入和更新操作,而磁盘层使用稀疏的有序数据文件(如SSTable)来持久化存储数据。HBase将数据组织成列族并以多个文件的形式存储在Hadoop分布式文件系统(HDFS)上。每个列族维护一个独立的LSM-Tree数据结构,负责处理特定列族的写入和更新操作。
在数据写入HBase时,首先会将新数据写入到内存中的MemStore,它是一个有序的内存数据结构。内存写入阶段允许高速的随机写入操作,因为数据不需要立即持久化到磁盘。
当MemStore中的数据达到一定大小阈值或特定事件发生时(例如时间戳超过一定范围),数据将被刷新到磁盘上的一个或多个SSTable文件中。SSTable文件是一种有序且不可变的数据文件,其中的数据按键进行排序。
随着时间的推移,HBase定期执行合并和压缩操作,以优化数据存储的性能和空间利用率。合并操作将多个SSTable文件合并成一个较大的SSTable文件,减少磁盘上的数据文件数量。压缩操作将相邻键范围内的数据进行合并,进一步减少存储空间占用。
在HBase中更新数据时,采用了写时复制(Copy-on-Write)策略。具体过程如下:更新操作发生时,首先创建一个新的MemStore用于存储更新后的数据;旧数据仍存在于磁盘上,但在内存中被视为无效;在读取数据时,HBase首先检查新的MemStore,如果数据存在其中,则返回更新后的数据;如果数据不在新的MemStore中,HBase继续检查磁盘上的SSTable文件,直到找到最新的数据版本。
虽然HBase与Hive的结合在实现实时数据更新方面具有巨大潜力,但我们也不能忽视HBase在内存占用方面的缺点。
HBase的内存占用是一个不可忽视的挑战,特别是在面对大规模数据和高并发写入的情况下。HBase作为一个分布式列式数据库,需要维护大量的内存结构来支持其高吞吐量和快速写入的能力。每个列族都需要一个MemStore来缓存写入和更新的数据,而这些MemStore会消耗大量的内存资源。随着数据规模的增加和写入频率的提高,HBase的内存需求也会呈指数级增长;同样,这种方式导致HBase无法处理超大表的情况。
内存占用的增加可能导致多个问题。首先,高内存需求意味着需要投入更多的硬件资源来支持HBase集群,这可能会带来昂贵的成本。其次,内存资源的限制可能会限制HBase的可伸缩性和性能,特别是在面对大规模数据集和高并发写入时。此外,频繁的垃圾回收(GC)操作也可能成为性能瓶颈,导致延迟和不稳定性。
正如上述背景技术中所介绍的,现有技术中进行Hive数据更新时内存占用大,为解决内存占用大的问题,本申请的实施例提供了一种数据更新方法、装置、计算机可读存储介质和电子设备。
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。
本申请实施例中所提供的方法实施例可以在移动终端、计算机终端或者类似的运算装置中执行。以运行在移动终端上为例,图1是本发明实施例的一种数据更新方法的移动终端的硬件结构框图。如图1所示,移动终端可以包括一个或多个(图1中仅示出一个)处理器102(处理器102可以包括但不限于微处理器MCU或可编程逻辑器件FPGA等的处理装置)和用于存储数据的存储器104,其中,上述移动终端还可以包括用于通信功能的传输设备106以及输入输出设备108。本领域普通技术人员可以理解,图1所示的结构仅为示意,其并不对上述移动终端的结构造成限定。例如,移动终端还可包括比图1中所示更多或者更少的组件,或者具有与图1所示不同的配置。
存储器104可用于存储计算机程序,例如,应用软件的软件程序以及模块,如本发明实施例中的数据更新方法对应的计算机程序,处理器102通过运行存储在存储器104内的计算机程序,从而执行各种功能应用以及数据处理,即实现上述的方法。存储器104可包括高速随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器104可进一步包括相对于处理器102远程设置的存储器,这些远程存储器可以通过网络连接至移动终端。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。传输设备106用于经由一个网络接收或者发送数据。上述的网络具体实例可包括移动终端的通信供应商提供的无线网络。在一个实例中,传输设备106包括一个网络适配器(Network Interface Controller,简称为NIC),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例中,传输设备106可以为射频(Radio Frequency,简称为RF)模块,其用于通过无线方式与互联网进行通讯。
在本实施例中提供了一种运行于移动终端、计算机终端或者类似的运算装置的数据更新方法,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
图2是根据本申请实施例的数据更新方法的流程图。如图2所示,该方法包括以下步骤:
步骤S201,获取更新语句,其中,上述更新语句为表征需要对目标元数据进行更新的语句,上述更新语句至少包括第一分句和第二分句,上述第一分句表示上述目标元数据的位置,上述第二分句表示上述目标元数据的更新方式,上述目标元数据为需要更新的元数据;
具体地,目标元数据为Hive元数据,Hive元数据原始结构主要包括:Database(数据库)、Table(表)、Column(列)、Partition(分区)、SerDe(序列化/反序列化)、StorageHandler(存储处理程序)、Table Location(表的存储位置)。其中,表是元数据中的核心对象,用于描述结构化数据的组织方式,表包含列、分区等信息,并指向数据文件或外部数据的位置;列定义了表中的数据字段,描述每个数据项的名称、数据类型和其他属性,表由多个列组成,列的定义遵循特定的数据类型规范。在进行数据更新时,首先获取更新语句即update语句,update语句包括两部分,即第一分句和第二分句,分别为where语句和set语句。
步骤S202,根据上述更新语句中的上述第一分句生成第一查询语句,执行上述第一查询语句,得到目标元数据,并获取上述目标元数据的行记录标识,将上述行记录标识写入失效数据记录表,其中,上述第一查询语句用于查询上述目标元数据,上述失效数据记录表中的上述行记录标识表示对应的上述目标元数据失效;
具体地,在获取到更新语句即update语句之后,需要将update语句进行转换,首先根据第一分句where语句后的条件生成第一查询语句可以记为select查询语句,并执行该查询,接下来根据查询到的目标元数据进行以下两步操作:第一步,检查失效数据记录表,在内存中检查当前数据表即目标元数据的表对应的失效数据记录表是否已经存在,若不存在,则创建该失效数据记录表,并将查询到的目标元数据的行记录标识写入失效数据记录表,以表示对应的目标元数据无效。
步骤S203,根据上述更新语句中的上述第二分句生成插入语句,执行上述插入语句,以更新上述失效数据记录表中的上述行记录标识对应的上述目标元数据,其中,上述插入语句用于更新上述目标元数据。
具体地,根据查询到的目标元数据进行的第二步操作:组装insert语句,根据查询到的目标元数据和第二分句即set部分生成插入语句记为insert语句,并执行该语句,新的元数据会被插入,这样就完成了目标元数据的更新。
通过本实施例,获取更新语句,更新语句表示目标元数据需要进行更新,根据更新语句中的第一分句生成第一查询语句,执行第一查询语句,得到目标元数据,并获取目标元数据的行记录标识,将行记录标识写入失效数据记录表,失效数据记录表中的行记录标识表示对应的目标元数据失效;根据更新语句中的第二分句生成插入语句,执行插入语句,就可以更新目标元数据。与现有技术中,数据在更新的时候结合HBase,需要维护大量的内存结构来支持高吞吐量和快速写入的能力,消耗大量的内存资源的方法相比,本申请只需维护失效数据记录表,可以在无需大量占用内存的情况下,实现对于表中的数据的修改,保证了数据的顺序性和准确性。因此,能够缓解现有技术中数据更新需要占用大量内存的问题,达到减少内存占用的效果。
具体实现过程中,在上述步骤S201获取更新语句之前,上述数据更新方法还包括以下步骤:获取目标元数据,随机生成上述目标元数据对应的上述行记录标识,其中,上述目标元数据至少包括数据库、表、列和分区,上述行记录标识由一组随机数字组成;在上述目标元数据的上述表中创建行记录标识字段,将上述行记录标识存储至上述行记录标识字段。该方法通过上述步骤生成行记录标识,这样可以唯一标识每个元数据。
具体地,在数据插入过程中,系统会自动生成唯一的标识ID,并将其填充到行记录标识字段中。这个唯一标识ID可以使用各种算法来生成,如UUID、雪花算法等,可以自由指定,默认为雪花算法。通过这种方式,每一行数据都被赋予了一个独一无二的标识,确保了行级别数据的唯一性。数据表的行记录标识填充:每当向数据表插入一条元数据时,会自动填充行记录标识字段。
在一些可选的实施方式中,在上述步骤S202将上述行记录标识存储至上述行记录标识字段之后,上述数据更新方法还包括以下步骤:在上述目标元数据需要更新的情况下,创建每个上述元数据的上述失效数据记录表,其中,上述失效数据记录表包括上述行记录标识、写入上述行记录标识对应的时间和上述元数据的版本。该方法在数据更新时才创建失效数据记录表,这样可以节省内存空间。
具体实现过程中,填充行记录标识字段并不会在数据插入时立即在内存中创建失效数据记录表,而是延迟到更新数据时才进行操作,即只有在更新数据时才会真正在内存中维护失效数据记录表,这种延迟创建失效数据记录表的方式有效节省了内存空间。
为了准确生成第一查询语句和插入语句,上述步骤S202根据上述更新语句中的上述第一分句生成第一查询语句,可以通过以下步骤实现:将查询关键词与上述第一分句中的上述目标元数据的位置进行组合,生成上述第一查询语句,其中,上述查询关键词为程序代码中用于查询的关键词;上述步骤S203根据上述更新语句中的上述第二分句生成插入语句,可以通过以下步骤实现:将插入关键词与上述第二分句中的上述目标元数据的更新方式进行组合,生成上述插入语句,其中,上述插入关键词为程序代码中用于插入的关键词。该方法通过上述步骤生成查询和插入语句,这样便于准确查询并插入新的数据。
具体地,首先根据where后的条件生成一条select第一查询语句,并执行该查询。再根据查询到的数据和update语句中的set部分,生成insert插入语句,并执行该语句。
在一些可选的实施方式中,在上述步骤S203更新上述失效数据记录表中的上述行记录标识对应的上述目标元数据之后,上述方法还包括以下步骤:获取各上述失效数据记录表的内存大小,将源文件中上述内存最大的上述失效数据记录表中的上述行记录标识对应的上述目标元数据删除,以对上述源文件进行更新。该方法将内存占用最大的失效数据记录表进行删除,这样可以减小内存压力和磁盘消耗。
具体实现过程中,为了减小内存压力和磁盘消耗,设计了脏数据回收机制。一个数据回收线程会定期检测Hive中所有的失效数据记录表。当内存占用达到一定阈值、HDFS吞吐量较低或系统压力较小时,数据回收线程会启动回收机制。步骤包括:选择内存占用最大的失效数据记录表及相应源数据表;对选定的源数据表进行整个源文件的重写操作,在此过程中,所有的失效数据将被删除,重写后的源文件将完全不包含失效数据。
在一些可选的实施方式中,在上述步骤S203更新上述失效数据记录表中的上述行记录标识对应的上述目标元数据之后,上述方法还包括以下步骤:将上述失效数据记录表备份至磁盘,并将上述失效数据记录表从内存中删除;在需要回滚的情况下,从上述磁盘中恢复上述失效数据记录表。该方法通过备份失效数据并在原内存中进行删除来释放内存占用,并进行回滚,这样可以确保数据的一致性和完整性。
具体地,还需要备份失效数据log,将内存中的失效数据记录表写入到磁盘的固定位置作为log备份。同时,清空内存中的失效数据记录表以释放内存占用。还设置了回滚机制:利用失效数据log实现了回滚机制,当发生错误或需要回滚操作时,可以根据失效数据log进行相应的恢复操作,确保数据的一致性和完整性。
为了实现元数据的删除操作,上述更新语句为删除语句,上述删除语句包括上述第一分句,上述方法还包括以下步骤:根据上述删除语句中的上述第一分句生成第二查询语句,执行上述第二查询语句,得到目标删除元数据,其中,上述目标删除元数据为需要删除的元数据;将上述目标删除元数据进行删除。该方法在更新语句为删除语句的情况下只通过生成第二查询语句查询得到目标删除元数据并进行删除,这样可以在不占用大量内存的情况下实现元数据的删除。
具体实现过程中,删除语句仅包含第一分句即where部分,将where后的语句复制至select之后生成第二查询语句,执行第二查询语句得到需要删除的目标删除元数据,对其进行删除。当然,也对该目标删除元数据进行脏数据回收、备份等操作。基于上述步骤改造Hive元数据后,每次查询sql执行时都会自动关联内存中的失效数据记录表,因此相对于原生查询语句确实会带来一些时间开销;但是因为失效数据记录表本身存储在内存中,因此带来的时间开销在分钟级的逻辑处理时可以忽略。经过测试,数据量1000W,字段50个,复杂查询sql原生执行时间约为12分钟左右,改造后的Hive-sql执行额外消耗了20秒左右。
为了使得本领域技术人员能够更加清楚地了解本申请的技术方案,以下将结合具体的实施例对本申请的数据更新方法的实现过程进行详细说明。
本实施例涉及一种具体的数据更新方法,如图3所示,包括如下步骤:
步骤S1:开始更新;
步骤S2:是否有失效记录表(失效数据记录表),在是的情况下,定位至失效记录表(失效数据记录表),在否的情况下,创建失效记录表(失效数据记录表),失效数据记录表如图4所示,包括行记录标识、时间戳和版本;
步骤S3:查询原记录将其失效,将新纪录插入到源数据表,同时进行脏数据回收;
步骤S4:结束更新。
基于失效数据记录表,改造Hive实现Hive-sql更新、删除数据操作的数据处理流程图如图5所示,分为主线程和脏数据回收线程两部分,包括如下步骤:
步骤S5:在主线程中插入数据,自动填充行记录标识;
步骤S6:更新数据时,首先进行hive-sql转换;
步骤S7:生成select语句;
步骤S8:是否存在失效数据记录表,在是的情况下定位至失效数据记录表,否的情况下创建失效数据记录表;
步骤S9:失效原数据,也就是将失效数据记录表中行记录标识对应的原数据失效;
步骤S10:组装insert语句,插入数据表源文件;
步骤S11:在脏数据回收线程,判断是否有条件触发,即时效数据记录表是否内存占用最大或是否到达内存阈值,依据条件选择数据表,重写数据表源文件;
步骤S12:将内存数据写入磁盘并清空内存,对失效数据记录表进行备份,得到失效数据log。
本申请实施例还提供了一种数据更新装置,需要说明的是,本申请实施例的数据更新装置可以用于执行本申请实施例所提供的用于数据更新装置。该装置用于实现上述实施例及优选实施方式,已经进行过说明的不再赘述。如以下所使用的,术语“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。
以下对本申请实施例提供的数据更新装置进行介绍。
图6是根据本申请实施例的数据更新装置的示意图。如图6所示,该装置包括:
第一获取单元10,用于获取更新语句,其中,上述更新语句为表征需要对目标元数据进行更新的语句,上述更新语句至少包括第一分句和第二分句,上述第一分句表示目标元数据的位置,上述第二分句表示上述目标元数据的更新方式,上述目标元数据表示需要更新的元数据;
具体地,目标元数据为Hive元数据,Hive元数据原始结构主要包括:Database(数据库)、Table(表)、Column(列)、Partition(分区)、SerDe(序列化/反序列化)、StorageHandler(存储处理程序)、Table Location(表的存储位置)。其中,表是元数据中的核心对象,用于描述结构化数据的组织方式,表包含列、分区等信息,并指向数据文件或外部数据的位置;列定义了表中的数据字段,描述每个数据项的名称、数据类型和其他属性,表由多个列组成,列的定义遵循特定的数据类型规范。在进行数据更新时,首先获取更新语句即update语句,update语句包括两部分,即第一分句和第二分句,分别为where语句和set语句。
写入单元20,用于根据上述更新语句中的上述第一分句生成第一查询语句,执行上述第一查询语句,得到目标元数据,并获取上述目标元数据的行记录标识,将上述行记录标识写入失效数据记录表,其中,上述第一查询语句用于查询上述目标元数据,上述失效数据记录表中的上述行记录标识表示对应的上述目标元数据失效;
具体地,在获取到更新语句即update语句之后,需要将update语句进行转换,首先根据第一分句where语句后的条件生成第一查询语句可以记为select查询语句,并执行该查询,接下来根据查询到的目标元数据进行以下两步操作:第一步,检查失效数据记录表,在内存中检查当前数据表即目标元数据的表对应的失效数据记录表是否已经存在,若不存在,则创建该失效数据记录表,并将查询到的目标元数据的行记录标识写入失效数据记录表,以表示对应的目标元数据无效。
更新单元30,用于根据上述更新语句中的上述第二分句生成插入语句,执行上述插入语句,以更新上述失效数据记录表中的上述行记录标识对应的上述目标元数据,其中,上述插入语句用于更新上述目标元数据。
具体地,根据查询到的目标元数据进行的第二步操作:组装insert语句,根据查询到的目标元数据和第二分句即set部分生成插入语句记为insert语句,并执行该语句,新的元数据会被插入,这样就完成了目标元数据的更新。
通过本实施例,获取更新语句,更新语句表示目标元数据需要进行更新,根据更新语句中的第一分句生成第一查询语句,执行第一查询语句,得到目标元数据,并获取目标元数据的行记录标识,将行记录标识写入失效数据记录表,失效数据记录表中的行记录标识表示对应的目标元数据失效;根据更新语句中的第二分句生成插入语句,执行插入语句,就可以更新目标元数据。与现有技术中,数据在更新的时候结合HBase,需要维护大量的内存结构来支持高吞吐量和快速写入的能力,消耗大量的内存资源的装置相比,本申请只需维护失效数据记录表,可以在无需大量占用内存的情况下,实现对于表中的数据的修改,保证了数据的顺序性和准确性。因此,能够缓解现有技术中数据更新需要占用大量内存的问题,达到减少内存占用的效果。
具体实现过程中,上述数据更新装置还包括第二获取单元和存储单元,其中,第二获取单元用于获取目标元数据,随机生成上述目标元数据对应的上述行记录标识,其中,上述目标元数据至少包括数据库、表、列和分区,上述行记录标识由一组随机数字组成;存储单元用于在上述目标元数据的上述表中创建行记录标识字段,将上述行记录标识存储至上述行记录标识字段。该装置通过上述步骤生成行记录标识,这样可以唯一标识每个元数据。
具体地,在数据插入过程中,系统会自动生成唯一的标识ID,并将其填充到行记录标识字段中。这个唯一标识ID可以使用各种算法来生成,如UUID、雪花算法等,可以自由指定,默认为雪花算法。通过这种方式,每一行数据都被赋予了一个独一无二的标识,确保了行级别数据的唯一性。数据表的行记录标识填充:每当向数据表插入一条元数据时,会自动填充行记录标识字段。
在一些可选的实施方式中,上述数据更新装置还包括创建单元,用于在上述目标元数据需要更新的情况下,创建每个上述元数据的上述失效数据记录表,其中,上述失效数据记录表包括上述行记录标识、写入上述行记录标识对应的时间和上述元数据的版本。该装置在数据更新时才创建失效数据记录表,这样可以节省内存空间。
具体实现过程中,填充行记录标识字段并不会在数据插入时立即在内存中创建失效数据记录表,而是延迟到更新数据时才进行操作,即只有在更新数据时才会真正在内存中维护失效数据记录表,这种延迟创建失效数据记录表的方式有效节省了内存空间。
为了准确生成第一查询语句和插入语句,上述写入单元包括第一生成模块,用于将查询关键词与上述第一分句中的上述目标元数据的位置进行组合,生成上述第一查询语句,其中,上述查询关键词为程序代码中用于查询的关键词;上述更新单元包括第二生成模块,用于将插入关键词与上述第二分句中的上述目标元数据的更新方式进行组合,生成上述插入语句,其中,上述插入关键词为程序代码中用于插入的关键词。该装置通过上述步骤生成查询和插入语句,这样便于准确查询并插入新的数据。
具体地,首先根据where后的条件生成一条select第一查询语句,并执行该查询。再根据查询到的数据和update语句中的set部分,生成insert插入语句,并执行该语句。
在一些可选的实施方式中,上述装置还包括删除单元,用于获取各上述失效数据记录表的内存大小,将源文件中上述内存最大的上述失效数据记录表中的上述行记录标识对应的上述目标元数据删除,以对上述源文件进行更新。该装置将内存占用最大的失效数据记录表进行删除,这样可以减小内存压力和磁盘消耗。
具体实现过程中,为了减小内存压力和磁盘消耗,设计了脏数据回收机制。一个数据回收线程会定期检测Hive中所有的失效数据记录表。当内存占用达到一定阈值、HDFS吞吐量较低或系统压力较小时,数据回收线程会启动回收机制。步骤包括:选择内存占用最大的失效数据记录表及相应源数据表;对选定的源数据表进行整个源文件的重写操作,在此过程中,所有的失效数据将被删除,重写后的源文件将完全不包含失效数据。
在一些可选的实施方式中,上述装置还包括备份单元和恢复单元,其中,备份单元用于将上述失效数据记录表备份至磁盘,并将上述失效数据记录表从内存中删除;恢复单元用于在需要回滚的情况下,从上述磁盘中恢复上述失效数据记录表。该装置通过备份失效数据并在原内存中进行删除来释放内存占用,并进行回滚,这样可以确保数据的一致性和完整性。
具体地,还需要备份失效数据log,将内存中的失效数据记录表写入到磁盘的固定位置作为log备份。同时,清空内存中的失效数据记录表以释放内存占用。还设置了回滚机制:利用失效数据log实现了回滚机制,当发生错误或需要回滚操作时,可以根据失效数据log进行相应的恢复操作,确保数据的一致性和完整性。
为了实现元数据的删除操作,上述更新语句为删除语句,上述删除语句包括上述第一分句,上述装置还包括执行单元,用于根据上述删除语句中的上述第一分句生成第二查询语句,执行上述第二查询语句,得到目标删除元数据,其中,上述目标删除元数据为需要删除的元数据;将上述目标删除元数据进行删除。该装置在更新语句为删除语句的情况下只通过生成第二查询语句查询得到目标删除元数据并进行删除,这样可以在不占用大量内存的情况下实现元数据的删除。
具体实现过程中,删除语句仅包含第一分句即where部分,将where后的语句复制至select之后生成第二查询语句,执行第二查询语句得到需要删除的目标删除元数据,对其进行删除。当然,也对该目标删除元数据进行脏数据回收、备份等操作。基于上述步骤改造Hive元数据后,每次查询sql执行时都会自动关联内存中的失效数据记录表,因此相对于原生查询语句确实会带来一些时间开销;但是因为失效数据记录表本身存储在内存中,因此带来的时间开销在分钟级的逻辑处理时可以忽略。经过测试,数据量1000W,字段50个,复杂查询sql原生执行时间约为12分钟左右,改造后的Hive-sql执行额外消耗了20秒左右。
上述数据更新装置包括处理器和存储器,上述第一获取单元、写入单元和更新单元等均作为程序单元存储在存储器中,由处理器执行存储在存储器中的上述程序单元来实现相应的功能。上述模块均位于同一处理器中;或者,上述各个模块以任意组合的形式分别位于不同的处理器中。
处理器中包含内核,由内核去存储器中调取相应的程序单元。内核可以设置一个或以上,通过调整内核参数来缓解现有技术中数据更新时占用内存空间大的问题。
存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM),存储器包括至少一个存储芯片。
本发明实施例提供了一种计算机可读存储介质,上述计算机可读存储介质包括存储的程序,其中,在上述程序运行时控制上述计算机可读存储介质所在设备执行上述数据更新方法。
具体地,数据更新方法包括:
步骤S201,获取更新语句,其中,上述更新语句为表征需要对目标元数据进行更新的语句,上述更新语句至少包括第一分句和第二分句,上述第一分句表示上述目标元数据的位置,上述第二分句表示上述目标元数据的更新方式,上述目标元数据为需要更新的元数据;
具体地,目标元数据为Hive元数据,Hive元数据原始结构主要包括:Database(数据库)、Table(表)、Column(列)、Partition(分区)、SerDe(序列化/反序列化)、StorageHandler(存储处理程序)、Table Location(表的存储位置)。其中,表是元数据中的核心对象,用于描述结构化数据的组织方式,表包含列、分区等信息,并指向数据文件或外部数据的位置;列定义了表中的数据字段,描述每个数据项的名称、数据类型和其他属性,表由多个列组成,列的定义遵循特定的数据类型规范。在进行数据更新时,首先获取更新语句即update语句,update语句包括两部分,即第一分句和第二分句,分别为where语句和set语句。
步骤S202,根据上述更新语句中的上述第一分句生成第一查询语句,执行上述第一查询语句,得到目标元数据,并获取上述目标元数据的行记录标识,将上述行记录标识写入失效数据记录表,其中,上述第一查询语句用于查询上述目标元数据,上述失效数据记录表中的上述行记录标识表示对应的上述目标元数据失效;
具体地,在获取到更新语句即update语句之后,需要将update语句进行转换,首先根据第一分句where语句后的条件生成第一查询语句可以记为select查询语句,并执行该查询,接下来根据查询到的目标元数据进行以下两步操作:第一步,检查失效数据记录表,在内存中检查当前数据表即目标元数据的表对应的失效数据记录表是否已经存在,若不存在,则创建该失效数据记录表,并将查询到的目标元数据的行记录标识写入失效数据记录表,以表示对应的目标元数据无效。
步骤S203,根据上述更新语句中的上述第二分句生成插入语句,执行上述插入语句,以更新上述失效数据记录表中的上述行记录标识对应的上述目标元数据,其中,上述插入语句用于更新上述目标元数据。
具体地,根据查询到的目标元数据进行的第二步操作:组装insert语句,根据查询到的目标元数据和第二分句即set部分生成插入语句记为insert语句,并执行该语句,新的元数据会被插入,这样就完成了目标元数据的更新。
可选地,在获取更新语句之前,上述数据更新方法还包括:获取目标元数据,随机生成上述目标元数据对应的上述行记录标识,其中,上述目标元数据至少包括数据库、表、列和分区,上述行记录标识由一组随机数字组成;在上述目标元数据的上述表中创建行记录标识字段,将上述行记录标识存储至上述行记录标识字段。
可选地,在将上述行记录标识存储至上述行记录标识字段之后,上述数据更新方法还包括:在上述目标元数据需要更新的情况下,创建每个上述元数据的上述失效数据记录表,其中,上述失效数据记录表包括上述行记录标识、写入上述行记录标识对应的时间和上述元数据的版本。
可选地,根据上述更新语句中的上述第一分句生成第一查询语句,包括:将查询关键词与上述第一分句中的上述目标元数据的位置进行组合,生成上述第一查询语句,其中,上述查询关键词为程序代码中用于查询的关键词;根据上述更新语句中的上述第二分句生成插入语句,包括:将插入关键词与上述第二分句中的上述目标元数据的更新方式进行组合,生成上述插入语句,其中,上述插入关键词为程序代码中用于插入的关键词。
可选地,在更新上述失效数据记录表中的上述行记录标识对应的上述目标元数据之后,上述方法还包括:获取各上述失效数据记录表的内存大小,将源文件中上述内存最大的上述失效数据记录表中的上述行记录标识对应的上述目标元数据删除,以对上述源文件进行更新。
可选地,在更新上述失效数据记录表中的上述行记录标识对应的上述目标元数据之后,上述方法还包括:将上述失效数据记录表备份至磁盘,并将上述失效数据记录表从内存中删除;在需要回滚的情况下,从上述磁盘中恢复上述失效数据记录表。
可选地,上述更新语句为删除语句,上述删除语句包括上述第一分句,上述方法还包括:根据上述删除语句中的上述第一分句生成第二查询语句,执行上述第二查询语句,得到目标删除元数据,其中,上述目标删除元数据为需要删除的元数据;将上述目标删除元数据进行删除。
本发明实施例提供了一种电子设备,包括处理器、存储器及存储在存储器上并可在处理器上运行的程序,处理器执行程序时实现至少以下步骤:
步骤S201,获取更新语句,其中,上述更新语句为表征需要对目标元数据进行更新的语句,上述更新语句至少包括第一分句和第二分句,上述第一分句表示上述目标元数据的位置,上述第二分句表示上述目标元数据的更新方式,上述目标元数据为需要更新的元数据;
步骤S202,根据上述更新语句中的上述第一分句生成第一查询语句,执行上述第一查询语句,得到目标元数据,并获取上述目标元数据的行记录标识,将上述行记录标识写入失效数据记录表,其中,上述第一查询语句用于查询上述目标元数据,上述失效数据记录表中的上述行记录标识表示对应的上述目标元数据失效;
步骤S203,根据上述更新语句中的上述第二分句生成插入语句,执行上述插入语句,以更新上述失效数据记录表中的上述行记录标识对应的上述目标元数据,其中,上述插入语句用于更新上述目标元数据。
本文中的设备可以是服务器、PC、PAD、手机等。
可选地,在获取更新语句之前,上述数据更新方法还包括:获取目标元数据,随机生成上述目标元数据对应的上述行记录标识,其中,上述目标元数据至少包括数据库、表、列和分区,上述行记录标识由一组随机数字组成;在上述目标元数据的上述表中创建行记录标识字段,将上述行记录标识存储至上述行记录标识字段。
可选地,在将上述行记录标识存储至上述行记录标识字段之后,上述数据更新方法还包括:在上述目标元数据需要更新的情况下,创建每个上述元数据的上述失效数据记录表,其中,上述失效数据记录表包括上述行记录标识、写入上述行记录标识对应的时间和上述元数据的版本。
可选地,根据上述更新语句中的上述第一分句生成第一查询语句,包括:将查询关键词与上述第一分句中的上述目标元数据的位置进行组合,生成上述第一查询语句,其中,上述查询关键词为程序代码中用于查询的关键词;根据上述更新语句中的上述第二分句生成插入语句,包括:将插入关键词与上述第二分句中的上述目标元数据的更新方式进行组合,生成上述插入语句,其中,上述插入关键词为程序代码中用于插入的关键词。
可选地,在更新上述失效数据记录表中的上述行记录标识对应的上述目标元数据之后,上述方法还包括:获取各上述失效数据记录表的内存大小,将源文件中上述内存最大的上述失效数据记录表中的上述行记录标识对应的上述目标元数据删除,以对上述源文件进行更新。
可选地,在更新上述失效数据记录表中的上述行记录标识对应的上述目标元数据之后,上述方法还包括:将上述失效数据记录表备份至磁盘,并将上述失效数据记录表从内存中删除;在需要回滚的情况下,从上述磁盘中恢复上述失效数据记录表。
可选地,上述更新语句为删除语句,上述删除语句包括上述第一分句,上述方法还包括:根据上述删除语句中的上述第一分句生成第二查询语句,执行上述第二查询语句,得到目标删除元数据,其中,上述目标删除元数据为需要删除的元数据;将上述目标删除元数据进行删除。
本申请还提供了一种计算机程序产品,当在数据处理设备上执行时,适于执行初始化有至少如下方法步骤的程序:
步骤S201,获取更新语句,其中,上述更新语句为表征需要对目标元数据进行更新的语句,上述更新语句至少包括第一分句和第二分句,上述第一分句表示上述目标元数据的位置,上述第二分句表示上述目标元数据的更新方式,上述目标元数据为需要更新的元数据;
步骤S202,根据上述更新语句中的上述第一分句生成第一查询语句,执行上述第一查询语句,得到目标元数据,并获取上述目标元数据的行记录标识,将上述行记录标识写入失效数据记录表,其中,上述第一查询语句用于查询上述目标元数据,上述失效数据记录表中的上述行记录标识表示对应的上述目标元数据失效;
步骤S203,根据上述更新语句中的上述第二分句生成插入语句,执行上述插入语句,以更新上述失效数据记录表中的上述行记录标识对应的上述目标元数据,其中,上述插入语句用于更新上述目标元数据。
可选地,在获取更新语句之前,上述数据更新方法还包括:获取目标元数据,随机生成上述目标元数据对应的上述行记录标识,其中,上述目标元数据至少包括数据库、表、列和分区,上述行记录标识由一组随机数字组成;在上述目标元数据的上述表中创建行记录标识字段,将上述行记录标识存储至上述行记录标识字段。
可选地,在将上述行记录标识存储至上述行记录标识字段之后,上述数据更新方法还包括:在上述目标元数据需要更新的情况下,创建每个上述元数据的上述失效数据记录表,其中,上述失效数据记录表包括上述行记录标识、写入上述行记录标识对应的时间和上述元数据的版本。
可选地,根据上述更新语句中的上述第一分句生成第一查询语句,包括:将查询关键词与上述第一分句中的上述目标元数据的位置进行组合,生成上述第一查询语句,其中,上述查询关键词为程序代码中用于查询的关键词;根据上述更新语句中的上述第二分句生成插入语句,包括:将插入关键词与上述第二分句中的上述目标元数据的更新方式进行组合,生成上述插入语句,其中,上述插入关键词为程序代码中用于插入的关键词。
可选地,在更新上述失效数据记录表中的上述行记录标识对应的上述目标元数据之后,上述方法还包括:获取各上述失效数据记录表的内存大小,将源文件中上述内存最大的上述失效数据记录表中的上述行记录标识对应的上述目标元数据删除,以对上述源文件进行更新。
可选地,在更新上述失效数据记录表中的上述行记录标识对应的上述目标元数据之后,上述方法还包括:将上述失效数据记录表备份至磁盘,并将上述失效数据记录表从内存中删除;在需要回滚的情况下,从上述磁盘中恢复上述失效数据记录表。
可选地,上述更新语句为删除语句,上述删除语句包括上述第一分句,上述方法还包括:根据上述删除语句中的上述第一分句生成第二查询语句,执行上述第二查询语句,得到目标删除元数据,其中,上述目标删除元数据为需要删除的元数据;将上述目标删除元数据进行删除。
显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。存储器是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括要素的过程、方法、商品或者设备中还存在另外的相同要素。
从以上的描述中,可以看出,本申请上述的实施例实现了如下技术效果:
1)、本申请的数据更新方法中,获取更新语句,更新语句表示目标元数据需要进行更新,根据更新语句中的第一分句生成第一查询语句,执行第一查询语句,得到目标元数据,并获取目标元数据的行记录标识,将行记录标识写入失效数据记录表,失效数据记录表中的行记录标识表示对应的目标元数据失效;根据更新语句中的第二分句生成插入语句,执行插入语句,就可以更新目标元数据。与现有技术中,数据在更新的时候结合HBase,需要维护大量的内存结构来支持高吞吐量和快速写入的能力,消耗大量的内存资源的方法相比,本申请只需维护失效数据记录表,可以在无需大量占用内存的情况下,实现对于表中的数据的修改,保证了数据的顺序性和准确性。因此,能够缓解现有技术中数据更新需要占用大量内存的问题,达到减少内存占用的效果。
2)、本申请的数据更新装置中,获取更新语句,更新语句表示目标元数据需要进行更新,根据更新语句中的第一分句生成第一查询语句,执行第一查询语句,得到目标元数据,并获取目标元数据的行记录标识,将行记录标识写入失效数据记录表,失效数据记录表中的行记录标识表示对应的目标元数据失效;根据更新语句中的第二分句生成插入语句,执行插入语句,就可以更新目标元数据。与现有技术中,数据在更新的时候结合HBase,需要维护大量的内存结构来支持高吞吐量和快速写入的能力,消耗大量的内存资源的装置相比,本申请只需维护失效数据记录表,可以在无需大量占用内存的情况下,实现对于表中的数据的修改,保证了数据的顺序性和准确性。因此,能够缓解现有技术中数据更新需要占用大量内存的问题,达到减少内存占用的效果。
以上所述仅为本申请的优选实施例而已,并不用于限制本申请,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
Claims (10)
1.一种数据更新方法,其特征在于,包括:
获取更新语句,其中,所述更新语句为表征需要对目标元数据进行更新的语句,所述更新语句至少包括第一分句和第二分句,所述第一分句表示所述目标元数据的位置,所述第二分句表示所述目标元数据的更新方式,所述目标元数据为需要更新的元数据;
根据所述更新语句中的所述第一分句生成第一查询语句,执行所述第一查询语句,得到目标元数据,并获取所述目标元数据的行记录标识,将所述行记录标识写入失效数据记录表,其中,所述第一查询语句用于查询所述目标元数据,所述失效数据记录表中的所述行记录标识表示对应的所述目标元数据失效;
根据所述更新语句中的所述第二分句生成插入语句,执行所述插入语句,以更新所述失效数据记录表中的所述行记录标识对应的所述目标元数据,其中,所述插入语句用于更新所述目标元数据。
2.根据权利要求1所述的数据更新方法,其特征在于,在获取更新语句之前,所述数据更新方法还包括:
获取目标元数据,随机生成所述目标元数据对应的所述行记录标识,其中,所述目标元数据至少包括数据库、表、列和分区,所述行记录标识由一组随机数字组成;
在所述目标元数据的所述表中创建行记录标识字段,将所述行记录标识存储至所述行记录标识字段。
3.根据权利要求2所述的数据更新方法,其特征在于,在将所述行记录标识存储至所述行记录标识字段之后,所述数据更新方法还包括:
在所述目标元数据需要更新的情况下,创建每个所述元数据的所述失效数据记录表,其中,所述失效数据记录表包括所述行记录标识、写入所述行记录标识对应的时间和所述元数据的版本。
4.根据权利要求1所述的数据更新方法,其特征在于,根据所述更新语句中的所述第一分句生成第一查询语句,包括:
将查询关键词与所述第一分句中的所述目标元数据的位置进行组合,生成所述第一查询语句,其中,所述查询关键词为程序代码中用于查询的关键词;
根据所述更新语句中的所述第二分句生成插入语句,包括:
将插入关键词与所述第二分句中的所述目标元数据的更新方式进行组合,生成所述插入语句,其中,所述插入关键词为程序代码中用于插入的关键词。
5.根据权利要求1所述的数据更新方法,其特征在于,在更新所述失效数据记录表中的所述行记录标识对应的所述目标元数据之后,所述方法还包括:
获取各所述失效数据记录表的内存大小,将源文件中所述内存最大的所述失效数据记录表中的所述行记录标识对应的所述目标元数据删除,以对所述源文件进行更新。
6.根据权利要求1所述的数据更新方法,其特征在于,在更新所述失效数据记录表中的所述行记录标识对应的所述目标元数据之后,所述方法还包括:
将所述失效数据记录表备份至磁盘,并将所述失效数据记录表从内存中删除;
在需要回滚的情况下,从所述磁盘中恢复所述失效数据记录表。
7.根据权利要求1所述的数据更新方法,其特征在于,所述更新语句为删除语句,所述删除语句包括所述第一分句,所述方法还包括:
根据所述删除语句中的所述第一分句生成第二查询语句,执行所述第二查询语句,得到目标删除元数据,其中,所述目标删除元数据为需要删除的元数据;
将所述目标删除元数据进行删除。
8.一种数据更新装置,其特征在于,包括:
第一获取单元,用于获取更新语句,其中,所述更新语句为表征需要对目标元数据进行更新的语句,所述更新语句至少包括第一分句和第二分句,所述第一分句表示目标元数据的位置,所述第二分句表示所述目标元数据的更新方式,所述目标元数据表示需要更新的元数据;
写入单元,用于根据所述更新语句中的所述第一分句生成第一查询语句,执行所述第一查询语句,得到目标元数据,并获取所述目标元数据的行记录标识,将所述行记录标识写入失效数据记录表,其中,所述第一查询语句用于查询所述目标元数据,所述失效数据记录表中的所述行记录标识表示对应的所述目标元数据失效;
更新单元,用于根据所述更新语句中的所述第二分句生成插入语句,执行所述插入语句,以更新所述失效数据记录表中的所述行记录标识对应的所述目标元数据,其中,所述插入语句用于更新所述目标元数据。
9.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质包括存储的程序,其中,在所述程序运行时控制所述计算机可读存储介质所在设备执行权利要求1至7中任意一项所述的数据更新方法。
10.一种电子设备,其特征在于,包括:一个或多个处理器,存储器,以及一个或多个程序,其中,所述一个或多个程序被存储在所述存储器中,并且被配置为由所述一个或多个处理器执行,所述一个或多个程序包括用于执行权利要求1至7中任意一项所述的数据更新方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410177655.XA CN118035260A (zh) | 2024-02-08 | 2024-02-08 | 数据更新方法、装置、计算机可读存储介质和电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410177655.XA CN118035260A (zh) | 2024-02-08 | 2024-02-08 | 数据更新方法、装置、计算机可读存储介质和电子设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN118035260A true CN118035260A (zh) | 2024-05-14 |
Family
ID=90994652
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202410177655.XA Pending CN118035260A (zh) | 2024-02-08 | 2024-02-08 | 数据更新方法、装置、计算机可读存储介质和电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN118035260A (zh) |
-
2024
- 2024-02-08 CN CN202410177655.XA patent/CN118035260A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11068501B2 (en) | Single phase transaction commits for distributed database transactions | |
Vora | Hadoop-HBase for large-scale data | |
US10853242B2 (en) | Deduplication and garbage collection across logical databases | |
JP6280872B2 (ja) | モジュール式ブロックおよび関連付けられたログファイルを伴う分散型データベース | |
US10061834B1 (en) | Incremental out-of-place updates for datasets in data stores | |
US20200265068A1 (en) | Replicating Big Data | |
KR102031588B1 (ko) | 파일 저장 시의 색인 구현 방법 및 시스템 | |
CN108509462B (zh) | 一种同步活动事务表的方法及装置 | |
Mundkur et al. | Disco: a computing platform for large-scale data analytics | |
CN104239377A (zh) | 跨平台的数据检索方法及装置 | |
CN110807013B (zh) | 用于分布式数据存储集群的数据迁移方法和装置 | |
US11726743B2 (en) | Merging multiple sorted lists in a distributed computing system | |
Mukhopadhyay et al. | Addressing name node scalability issue in Hadoop distributed file system using cache approach | |
Zhou et al. | Sfmapreduce: An optimized mapreduce framework for small files | |
CN105956041A (zh) | 基于Spring Data for MongoDB集群的数据模型处理方法 | |
CN111459913B (zh) | 分布式数据库的容量扩展方法、装置及电子设备 | |
CN112506432A (zh) | 一种动静分离的电力自动化系统实时数据存储和管理方法及装置 | |
CN113515518A (zh) | 数据存储方法、装置、计算机设备和存储介质 | |
US20200226060A1 (en) | In-place garbage collection of a sharded, replicated distributed state machine based on mergeable operations | |
CN118035260A (zh) | 数据更新方法、装置、计算机可读存储介质和电子设备 | |
CN114297196A (zh) | 元数据存储方法、装置、电子设备及存储介质 | |
US12007983B2 (en) | Optimization of application of transactional information for a hybrid transactional and analytical processing architecture | |
US20240004860A1 (en) | Handshake protocol for efficient exchange of transactional information for a hybrid transactional and analytical processing architecture | |
US20240004897A1 (en) | Hybrid transactional and analytical processing architecture for optimization of real-time analytical querying | |
McGlothlin et al. | Scalable queries for large datasets using cloud computing: a case study |
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 |