CN112015586B - 一种数据重构计算的方法以及相关装置 - Google Patents

一种数据重构计算的方法以及相关装置 Download PDF

Info

Publication number
CN112015586B
CN112015586B CN201910452614.6A CN201910452614A CN112015586B CN 112015586 B CN112015586 B CN 112015586B CN 201910452614 A CN201910452614 A CN 201910452614A CN 112015586 B CN112015586 B CN 112015586B
Authority
CN
China
Prior art keywords
log
reconstruction
data page
reconstructed
version number
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
Application number
CN201910452614.6A
Other languages
English (en)
Other versions
CN112015586A (zh
Inventor
周锐
刘强
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Cloud Computing Technologies Co Ltd
Original Assignee
Huawei Cloud Computing Technologies Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Huawei Cloud Computing Technologies Co Ltd filed Critical Huawei Cloud Computing Technologies Co Ltd
Priority to CN201910452614.6A priority Critical patent/CN112015586B/zh
Publication of CN112015586A publication Critical patent/CN112015586A/zh
Application granted granted Critical
Publication of CN112015586B publication Critical patent/CN112015586B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1456Hardware arrangements for backup
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1458Management of the backup or restore process
    • G06F11/1469Backup restoration techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1471Saving, restoring, recovering or retrying involving logging of persistent data for recovery
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/21Design, administration or maintenance of databases
    • G06F16/217Database tuning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Quality & Reliability (AREA)
  • Data Mining & Analysis (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请实施例公开了一种数据重构计算方法以及相关装置,用于节约内存资源,减少IO的放大,优化数据库的性能。本申请实施例方法包括获取同一个数据页中至少一个重构日志,每个重构日志对应一个版本号,每个版本号指示数据页被修改的顺序;将至少一个版本号聚合成第一重构日志,该第一重构日志占用单个重构日志条目,第一重构日志的版本号为数据页被修改的顺序的最大值;将第一重构日志写入存储介质,以用于对数据页进行重构计算。

Description

一种数据重构计算的方法以及相关装置
技术领域
本发明涉及数据库领域,具体涉及一种数据重构计算的方法以及相关装置。
背景技术
随着网络带宽的提高和移动应用的爆发,动态环境下管理数据在处理性能和数据规模上都对终端数据库提出了巨大的挑战。
数据库大多以磁盘、闪存等块存储设备作为持久化介质,磁盘/闪存在写入操作时以页为单位,如果在写入某一页时突然断电,会导致页上数据不完整。如果持久化时出现了某个数据页的“部分写”,在数据恢复时会找不到一个完整的数据页来配合日志做恢复。目前在对某一页的数据进行重构计算并重新写入磁盘时,首先是在将缓存区(buffer pool)中对某页中的数据进行修改时的重构(redo)日志写入磁盘后,之后,建立该页与redo日志的映射关系(log directory),当对该页进行重构计算时,通过该映射关系查询到页重构计算需要的redo日志,以此对该页重构完成后将新的页写入磁盘;例如:需要对第3页中的数据进行3次的修改才能得到最终版本的数据,那么此处产生的redo日志分别会有三个,即对该第3页的数据分别进行第一次修改、第二次修改、以及第三修改,那么此时从buffer pool中将这三个redo日志写入磁盘则需要放大三次输入/输出(input/output,IO);此外,这三个redo日志与该第3页之间也会分别存在三个log directory,占用较大的内存资源。
因此,如何能优化写操作成为提升数据库性能的关键。
发明内容
本发明实施例提供一种数据重构计算的方法以及相关装置,用于节省内存资源,优化数据库的性能。
有鉴于此,本申请实施例提供如下方案:
第一方面,本申请实施例提供一种数据重构计算的方法,该方法可以包括获取同一个数据页中至少一个重构日志,每个重构日志对应一个版本号,每个版本号指示数据页被更新的顺序;将至少一个版本号聚合成第一重构日志,该第一重构日志占用单个重构日志条目,第一重构日志的版本号为数据页被更新的顺序的最大值;将第一重构日志写入存储介质,以用于对数据页进行重构计算。由于写入存储介质的第一重构日志仅占用单个重构日志条目,不仅可以仅使用一个IO完成写入操作,极大减少了IO的放大,还可以节省较大的版本索引资源。
可选地,结合上述第一方面,在第一种可能的实现方式中,将至少一个版本号聚合成第一重构日志,可以包括:按照顺序将至少一个版本号聚合成第一重构日志。由于版本号指示数据页被更新的顺序,所以按照该被更新的顺序聚合版本号,能够为重构计算提供灵活性与便利性。
可选地,结合上述第一方面或第一方面第一种可能的实现方式,在第二种可能的实现方式中,在将至少一个版本号聚合成第一重构日志之后,还可以包括:创建第一重构日志与数据页之间的映射关系;将映射关系写入存储介质,映射关系用于查询对数据页进行数据重构时所需的重构日志。在数据重构计算时,通过映射关系能够查询到数据页以及数据页中的重构日志,提高了查询所需的重构日志的准确性。
可选地,结合上述第一方面第二种可能的实现方式,在第三种可能的实现方式中,以用于对数据页进行重构计算,可以包括:根据第一重构日志以及映射关系确定至少一个目标重构日志;获取至少一个目标重构日志所对应的版本号,并按照版本号的顺序将对应的目标重构日志对数据页进行重构计算。
可选地,结合上述第一方面、第一方面第一种至第三种可能的实现方式,在第四种可能的实现方式中,获取同一个数据页中至少一个重构日志之前,还可以包括:获取至少一个重构日志所携带的页码标识和表空间标识;根据页码标识和表空间标识与数据页的页码标识和表空间标识均相同确定至少一个重构日志产生于同一个数据页。通过页码标识和表空间标识的匹配,为确保所获取的重构日志都产生于相同的数据页中,即针对同一类的数据页中的重构日志能够为数据页的重构计算带去计算的便利性,而且还节约计算成本。
可选地,结合上述第一方面第四种可能的实现方式,在第五种可能的实现方式中,在将第一重构日志写入存储介质之后,还可以包括:获取第一重构日志的粒度,粒度用于确定第一重构日志的版本号;根据粒度更新读视图,更新后的读视图用于对数据页进行重构计算时查询当前所使用的重构日志的版本号。根据粒度更新读视图,使得用户可以查询到被更新后的数据页,且不会读取到中间的版本。
第二方面,本申请实施例提供了一种重构计算装置,该重构计算装置可以包括:获取模块,用于获取同一个数据页中至少一个重构日志,每个重构日志对应一个版本号,每个版本号指示数据页被更新的顺序;聚合模块,用于将获取模块获取的至少一个版本号聚合成第一重构日志,第一重构日志占用单个重构日志条目,第一重构日志的版本号为数据页被更新的顺序的最大值;处理模块,用于将聚合模块聚合的第一重构日志写入存储介质,以用于对数据页进行重构计算。
可选地,结合上述第二方面,在第一种可能的实现方式中,聚合模块,可以用于按照顺序将至少一个版本号聚合成第一重构日志。
可选地,结合上述第二方面或第一方面第一种可能的实现方式,在第二种可能的实现方式中,处理模块,还可以用于在聚合模块将至少一个版本号聚合成第一重构日志之后,创建第一重构日志与数据页之间的映射关系;将映射关系写入存储介质,映射关系用于查询对数据页进行数据重构时所需的重构日志。
可选地,结合上述第二方面第二种可能的实现方式,在第三种可能的实现方式中,处理模块,还可以用于根据聚合模块聚合的第一重构日志以及映射关系确定至少一个目标重构日志;获取模块,还用于获取处理模块确定的至少一个目标重构日志所对应的版本号,并按照版本号的顺序将对应的目标重构日志对数据页进行重构计算。
可选地,结合上述第二方面、第一方面第一种至第三种可能的实现方式,在第四种可能的实现方式中,获取模块,还可以用于在获取同一个数据页中至少一个重构日志之前,获取至少一个重构日志所携带的页码标识和表空间标识;处理模块,还可以用于根据获取模块获取的页码标识和表空间标识与数据页的页码标识和表空间标识均相同确定至少一个重构日志产生于同一个数据页。
可选地,结合上述第二方面第四种可能的实现方式,在第五种可能的实现方式中,获取模块,还用于在处理模块将第一重构日志写入存储介质之后,获取第一重构日志的粒度,粒度用于确定所述第一重构日志的版本号;处理模块,还用于根据获取模块获取的粒度更新读视图,更新后的读视图用于对数据页进行重构计算时查询当前所使用的重构日志的版本号。
第三方面,本申请实施例提供了一种计算机设备,该计算机设备可以包括:处理器和存储器;输入/输出(I/O)接口、处理器和存储器,该存储器中存储有程序指令;该处理器用于执行存储器中存储的程序指令,以使该计算机设备执行如上述第一方面、第一方面任意一种可能实现方式的数据重构计算的方法。
第四方面,本申请提供一种计算机可读存储介质,该计算机可读存储介质中存储有指令,当其在计算机设备上运行时,使得计算机设备可以如执行上述第一方面、第一方面任意一种可能实现方式的数据重构计算的方法。
第五方面,本申请提供一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机可以执行上述第一方面或第一方面任意一种可能实现方式的数据重构计算的方法。
第六方面,本申请提供一种芯片系统,该芯片系统包括处理器,用于支持重构计算装置实现上述第一方面或第一方面任意一种可能的实现方式中所涉及的功能。在一种可能的设计中,芯片系统还包括存储器,存储器,用于保存重构计算装置必要的程序指令和数据。该芯片系统,可以由芯片构成,也可以包含芯片和其他分立器件。
其中,第二方面至第六方面中任一种实现方式所带来的技术效果可参见第一方面中不同实现方式所带来的技术效果,此处不再赘述。
从以上技术方案可以看出,本申请实施例具有以下优点:
通过对同一个数据页中的至少一个重构日志的版本号进行聚合成第一重构日志,且该一重构日志仅占用单个重构日志条目,因此可以仅通过一个IO写入存储介质,节省了内存资源且减少了IO放大,优化了数据库性能。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例。
图1是系统架构示意图;
图2是现有技术进行数据重构计算的示意图;
图3是本申请实施例提供的数据重构计算的方法的一个实施例示意图;
图4是本申请实施例提供的数据重构计算的方法的另一个实施例示意图;
图5是本申请实施例提供的数据重构计算的方法的另一个实施例示意图;
图6是本申请实施例中重构计算装置一个实施例示意图;
图7是本申请实施例中的通信装置的硬件结构一个示意图。
具体实施方式
本申请实施例提供了一种数据重构计算的方法以及相关装置,用于节省内存资源,优化数据库的性能。
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请中出现的术语“和/或”,可以是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本申请中字符“/”,一般表示前后关联对象是一种“或”的关系。
本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
下面对本申请实施例涉及的一些术语进行介绍:
重构日志:是指对数据页进行修订或更新时,产生的日志记录。
版本号:在本申请实施例中,指对数据页更新后所产生重构日志的版本,即理解成该数据页被更新的顺序。
粒度:在本申请实施例中,指步长,用于确定第一重构日志的版本号,保证数据库中该数据页的其他版本号不会被读取。
下面对本申请实施例所适应的场景进行介绍:
图1是系统架构示意图。参照图1,MySQL是基于磁盘数据库时,通过buffer pool来弥补计算机系统中的CPU和磁盘速度之间的鸿沟,例如:对于某个文档,该文档存在多个数据页,通过对其中某个数据页(page3)进行数据的更新时,如果该数据页不存在于bufferpool,则需要先从磁盘中将该数据页加载到buffer pool中(如:实线箭头),才能进行更新,更新后的数据页需要重新加载到磁盘中以便于保存(如:虚线箭头)。同时,在对数据页进行更新时,只要进行一次更新,就会产生一个redo重构日志,为了便于在对该数据页进行重构计算能够快速且准确找到相应的重构日志,也需要将在该数据页中所产生的重构日志写入存储介质,避免掉电、挂机等原因无法恢复数据页。
图2是现有技术进行数据重构计算的示意图。从图2中可以看出,现有技术中对于这种情况的解决方式是在对数据页进行更新时,只要更新一次,就将相应的重构日志写入存储介质中,例如:对该page 3更新3次,分别产生重构日志v6.offset、v7.offset、v8.offset,该v6.offset表明数据页page3第6次被更新,该v7.offset表明数据页page3第7次被更新,该v8.offset表明数据页page3第8次被更新,此时通过3个IO将v6.offset、v7.offset、v8.offset与page 3的映射关系分别写入存储介质,内存资源消耗较大,并且使得在对数据页进行重构计算时,每读取一个重构日志就需要一个IO,导致IO放大严重。因此,针对现有技术中存在的上述问题,本申请实施例中对数据重构计算给出了新的方案,节省了内存资源,优化了存储介质的性能。在该数据重构计算的过程中,每个重构日志会对应的有一个版本号,虽然更新数据页时可以根据用户的选择等需求进行更新,但重构日志的生成则是按照更新的顺序来产生,因此对应于版本号也是按照顺序来生成的,那么将该数据页中的版本号聚合成仅占用单个重构日志条目的第一重构日志,从而将该第一重构日志写入存储介质便于对该数据页进行重构计算。
本申请实施例中,对于上述所提及的更新,可以是删除、替换或添加等方式,具体此处不做限定说明。
本申请实施例中,该存储介质,包括是计算机可以读取的介质,也可以是计算机能够存储的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。该可用介质可以是磁性介质(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、半导体介质(例如固态硬盘Solid State Disk(SSD))、或者是网盘、云盘等,具体此处不做限定。
为便于更好地理解本申请实施例所提出的方案,下面对本实施例中的具体流程进行介绍,请参阅图3,图3是本申请实施例提供的数据重构计算的方法的一个实施例示意图。
如图3所示,本申请实施例提供的数据重构计算的方法的一个实施例包括:
301、获取同一个数据页中至少一个重构日志,每个重构日志对应一个版本号。
本实施例中,同一个数据页可以被更新多次,每次更新后会生成一个重构日志,由于对数据页的更新可以是根据用户的选择对数据页中的某一句话、某个标点符号、某个错别字等字符的修订、更新,但对于计算机设备而言每次对数据页进行更新都是根据用户输入的更新请求,在接收到该更新请求后按照更新顺序依次进行更新,因此所提及的重构日志也是按照更新顺序依次生成,以及对应于每一个重构日志的版本号也是按照更新顺序依次排列产生的,所以可以将每一个版本号用来指示该数据页被更新的顺序,即当前的数据页是相对于从未被更新过的原始数据页而言是第几次被更新了。
可选地,在一些实施例中,还可以在获取同一个数据页中至少一个重构日志之前,首先要判断所生成的重构日志是否均来源于同一个数据页,目的是为后面聚合成一个有共性的大类提供便利;并且由于每一个重构日志都携带有各自的页码标识和表空间标识,该页码标识可以标识出该重构日志是哪个数据页被更新后产生,该表空间标识可以用来标识出每一个重构日志的物理存储位置。因此,可通过获取每一个重构日志所携带的页码标识和表空间标识,将其分别与数据页的页码标识和表空间标识匹配,若是均相同,则确定出所获取的至少一个重构日志均产生于同一个数据页。
302、将至少一个版本号聚合成第一重构日志,第一重构日志占用单个重构日志条目。
本实施例中,在获知至少一个重构日志对应的版本号后,可以将至少一个版本号聚合成第一重构日志,即形成占用单个重构日志条目的记录,此时该第一重构日志的版本号即为该数据页被更新的顺序的最大值,该第一重构日志的版本号可以用来指示出该数据页在即将下发至存储介质前最后更新的版本。
可选地,在一些实施例中,对于将至少一个版本号聚合成第一重构日志,可以按照顺序将这些版本号进行聚合,主要是因为版本号是按照该数据页被更新的顺序依次产生的,因此可以按照该顺序将版本号依次排列形成第一重构日志。
可选地,在另外一些实施例中,在将至少一个版本号聚合成第一重构日志后,还可以创建该第一重构日志和该数据页之间的映射关系,该映射关系主要用来查询在对数据页进行重构计算时所需要的重构日志,因此还需要将该映射关系写入该存储介质中,该映射关系也是占用单个重构日志条目,能够有效地节省内存资源。
303、将第一重构日志写入存储介质,以用于对数据页进行重构计算。
本实施例中,只有将重构日志写入存储介质后,才会避免在掉电、挂机等因素存在下还可以对已经被更新过的数据页重新进行重构计算,恢复至原始数据页。应当理解的是,由于该第一重构日志仅占用单个重构日志条目,因此在将该第一重构日志写入存储介质时可以只使用一个IO就能够完成写入的过程。
可选地,在一些实施例中,对于数据页进行重构计算可以通过该第一重构日志的版本号以及写入存储介质中的映射关系确定出至少一个目标重构日志,从而获取出该至少一个目标重构日志对应的版本号,在获取出版本号后依次按照顺序将对应的目标重构日志对该数据页进行重构计算,从而恢复至相应的未被更新的数据页。
本实施例中,通过对同一个数据页中的至少一个重构日志的版本号进行聚合成仅占用单个重构日志条目的第一重构日志,并仅通过一个IO写入存储介质,节省了内存资源且优化了数据库的性能。
为了便于理解,在上述图3的基础上,下面对本申请实施例中的具体流程进行具体介绍,请参阅图4,图4为本申请实施例中提供的数据重构计算的方法的另一个实施例示意图。
401、获取至少一个重构日志所携带的页码标识和表空间标识。
本实施例中,首先要判断所生成的重构日志是否均来源于同一个数据页,目的是为后面聚合成一个有共性的大类提供便利;并且由于每一个重构日志都携带有各自的页码标识和表空间标识,该页码标识可以标识出该重构日志是哪个数据页被更新后产生,该表空间标识可以用来标识出每一个重构日志的物理存储位置。
402、根据页码标识和表空间标识与数据页的页码标识和表空间标识均相同确定至少一个重构日志产生于同一个数据页。
本实施例中,将重构日志的页码标识、表空间标识分别与数据页中的页码标识和表空间标识进行匹配,若是匹配相同,则确定出所获取的至少一个重构日志均产生于同一个数据页。例如:对于某个WORD文档,包含多张数据页,只要对这多张数据页进行更新,便会生成多个重构日志,而对于这些重构日志有可能来自不同的数据页中,如:针对page1进行更新4次、针对page2进行更新5次、针对page3进行更新3次等等,那么对于重构计算时将对于同一数据页的重构日志进行归类,使用分别归类后的重构日志针对对应的数据页进行重构计算不仅会节省较大的内存资源而且还节约重构计算的时间成本。应当理解的是,针对上述对数据页的更新次数会视实际情况而定,具体此处不做限定。
403、获取同一个数据页中至少一个重构日志,每个重构日志对应一个版本号。
本实施例中,同一个数据页可以被更新多次,每次更新后会生成一个重构日志,由于对数据页的更新可以是根据用户的选择对数据页中的某一句话、某个标点符号、某个错别字等字符的修订、更新,但对于计算机设备而言每次对数据页进行更新都是根据用户输入的更新请求,在接收到该更新请求后按照更新顺序依次进行更新,因此所提及的重构日志也是按照更新顺序依次生成,以及对应于每一个重构日志的版本号也是按照更新顺序依次排列产生的,所以可以将每一个版本号用来指示该数据页被更新的顺序,即当前的数据页是相对于从未被更新过的原始数据页而言是第几次被更新。
例如:对于某个WORD文档,该文档包含100张数据页,选中其中一张数据页(如:page3)进行更新3次,如分别针对该page3中第一行的词语“天空”进行添加、针对第二行的不符合规范的标点符号“;”进行修改、针对倒数第一行的数字“9”进行删除,这便会产生3个重构日志,即:对“天空”添加后得到的更新页、对“;”修改后得到的更新页,对“9”删除后得到的更新页,并且由于“天空”的添加是第一次对数据页进行更新,“;”的修改是第二次对数据页进行更新,“9”的删除是第三次对数据页进行更新,因此会依次产生3个版本号,如:“天空”添加后得到的更新页对应的版本号标记为v1,“;”修改后得到的更新页对应的版本号标记为v2,“9”删除后得到的更新页对应的版本号标记为v3。
404、按照顺序将至少一个版本号聚合成第一重构日志,第一重构日志占用单个重构日志条目。
本实施例中,在获知至少一个重构日志对应的版本号后,由于版本号是按照该数据页被更新的顺序依次产生的,因此可以按照顺序将至少一个版本号聚合成第一重构日志,即形成占用单个重构日志条目的记录,此时该第一重构日志的版本号即为该数据页被更新的顺序的最大值,该第一重构日志的版本号可以用来指示出该数据页在即将下发至存储介质前最后更新的版本。例如:可以按照升序的方式将版本号“v1”、“v2”、“v3”聚合成占用单个重构日志条目的第一重构日志;也可以是按照降序的方式将版本号“v3”、“v2”、“v1”聚合成占用单个重构日志条目的第一重构日志;还可以按照先入先出的顺序将版本号“v1”、“v2”、“v3”聚合成占用单个重构日志条目的第一重构日志。具体可以视情况而定,此处不做限定。
405、创建第一重构日志和数据页之间的映射关系。
本实施例中,映射关系也是占用单个重构日志条目,并且该映射关系主要用来查询在对数据页进行重构计算时所需要的重构日志。例如:针对上述page3来说,建立第一重构日志与page3之间的映射关系,从中可以获知该page3被更新后所生成的版本号,从而根据版本号获知被更新后产生的重构日志,因此还需要将该映射关系写入该存储介质。
406、将映射关系写入存储介质。
407、将第一重构日志写入存储介质。
本实施例中,只有将第一重构日志写入存储介质后,才会避免在掉电、挂机等因素存在下还可以对已经被更新过的数据页重新进行重构计算,恢复至原始数据页。应当理解的是,由于该第一重构日志仅占用单个重构日志条目,因此在将该第一重构日志写入存储介质时可以只使用一个IO就能够完成写入的过程。
需要说明的是,对于步骤406与步骤407没有先后的执行顺序,具体的还可以先执行407后执行406,也可以同步执行406与407,具体此处不做限定。
408、根据第一重构日志以及映射关系确定至少一个目标重构日志。
本实施例中,根据该映射关系和第一重构日志可以获知是哪个数据页被更新了,因此可以在获知了该数据页后确定出该数据页中的至少一个目标重构日志。例如:针对第一重构日志与page3之间的映射关系可以获知page3是需要被进行重构计算的,因此可以获取该page3中至少一个重构日志,如对“天空”添加后得到的更新页、对“;”修改后得到的更新页或对“9”删除后得到的更新页。
409、获取至少一个目标重构日志所对应的版本号,并按照版本号的顺序将对应的目标重构日志对数据页进行重构计算。
本实施例中,在得到至少一个目标重构日志后,可以获知每一个所对应的版本号,从而按照版本号的顺序将目标重构日志对数据页进行重构计算。例如:针对上述的page3,在获取了对“天空”添加后得到的更新页、对“;”修改后得到的更新页或对“9”删除后得到的更新页的这3个重构日志所对应的版本号“v1”、“v2”、“v3”,可以按照步骤404所描述的顺序对page3进行重构计算。
本实施例中,通过对同一个数据页中的至少一个重构日志的版本号进行聚合成仅占用单个重构日志条目的第一重构日志,并且建立与数据页之间的映射关系,仅通过一个IO写入存储介质,节省了内存资源且优化了数据库的性能。
为了便于理解,在上述图4的基础上,下面对本申请实施例中的具体流程进行具体介绍,请参阅图5,图5为本申请实施例中提供的数据重构计算的方法的另一个实施例示意图。
501、获取至少一个重构日志所携带的页码标识和表空间标识。
502、根据页码标识和表空间标识与数据页的页码标识和表空间标识均相同确定至少一个重构日志产生于同一个数据页。
503、获取同一个数据页中至少一个重构日志,每个重构日志对应一个版本号。
504、按照顺序将至少一个版本号聚合成第一重构日志,第一重构日志占用单个重构日志条目。
505、创建第一重构日志和数据页之间的映射关系。
本实施例中,映射关系也是占用单个重构日志条目,并且该映射关系主要用来查询在对数据页进行重构计算时所需要的重构日志。例如:针对上述page3来说,建立第一重构日志与page3之间的映射关系,从中可以获知该page3被更新后所生成的版本号,从而根据版本号获知被更新后产生的重构日志,因此还需要将该映射关系写入该存储介质。
506、将映射关系写入存储介质。
507、将第一重构日志写入存储介质。
本实施例中,步骤501-507可以参照图4中的步骤401-407进行理解,具体此处不再赘述。需要说明的是,对于步骤506与步骤507没有先后的执行顺序,具体的还可以先执行507后执行506,也可以同步执行506与507,具体此处不做限定。
508、获取第一重构日志的粒度,粒度用于确定第一重构日志的版本号。
本实施例中,由于第一重构日志的版本号为数据页被更新的顺序的最大值,因此,此时针对客户端界面来说,只能读取到最终被更新后的版本数据。例如,针对上述page3,只能读取到被第三次更新后的版本数据,即对“9”进行删除后的更新页,所以可以根据粒度,即步长,可以用来说明该第一重构日志中所聚合的版本号的增值量来确定出第一重构日志的版本号。
509、根据粒度更新读视图,更新后的读视图用于对数据页进行重构计算时查询当前所使用的版本号。
本实施例中,读视图是为了便于客户端向用户展示对数据页进行重构计算的更新页,所以可以根据粒度更新读视图,使得更新后的读视图用于在对数据页进行重构时查询到当前所使用的版本号,从而获知已经进行到针对哪个中间版本的重构日志进行重构了,便于用户查询。
本实施例中,通过对同一个数据页中的至少一个重构日志的版本号进行聚合成仅占用单个重构日志条目的第一重构日志,并且建立与数据页之间的映射关系,仅通过一个IO写入存储介质,节省了内存资源且优化了数据库的性能,而且还根据粒度更新读视图,使得用户可以查询到被更新后的数据页,且不会读取到中间的版本。
上述主要对本申请实施例提供的方案进行了介绍。可以理解的是,上述重构计算装置为了实现上述功能,其包含了执行各个功能相应的硬件结构和/或软件模块。本领域技术人员应该很容易意识到,结合本文中所公开的实施例描述的各示例的模块及算法步骤,本申请能够以硬件或硬件和计算机软件的结合形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
本申请实施例可以根据上述方法示例对重构计算装置进行功能模块的划分,例如,可以对应各个功能划分各个功能模块,也可以将两个或两个以上的功能集成在一个处理模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。需要说明的是,本申请实施例中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。
下面对本申请中的重构计算装置进行详细描述,请参阅图6,图6是本申请实施例中重构计算装置一个实施例示意图,该重构计算装置60可以包括:
获取模块601,用于获取同一个数据页中至少一个重构日志,每个重构日志对应一个版本号,每个版本号指示数据页被更新的顺序;
聚合模块602,用于将获取模块601获取的至少一个版本号聚合成第一重构日志,第一重构日志占用单个重构日志条目,第一重构日志的版本号为数据页被更新的顺序的最大值;
处理模块603,用于将聚合模块602聚合的第一重构日志写入存储介质,以用于对数据页进行重构计算。
可选地,在一些实施例中,聚合模块602,用于按照顺序将至少一个版本号聚合成第一重构日志。
可选地,在一些实施例中,处理模块603,还用于在聚合模块602将至少一个版本号聚合成第一重构日志之后,创建第一重构日志与数据页之间的映射关系;将映射关系写入存储介质,映射关系用于查询对数据页进行数据重构时所需的重构日志。
可选地,在一些实施例中,处理模块603,还用于根据聚合模块602聚合的第一重构日志以及映射关系确定至少一个目标重构日志;
获取模块601,还用于获取处理模块603确定的至少一个目标重构日志所对应的版本号,并按照版本号的顺序将对应的目标重构日志对数据页进行重构计算。
可选地,在一些实施例中,获取模块601,还用于在获取同一个数据页中至少一个重构日志之前,获取至少一个重构日志所携带的页码标识和表空间标识;
处理模块603,还用于根据获取模块602获取的页码标识和表空间标识与数据页的页码标识和表空间标识均相同确定至少一个重构日志产生于同一个数据页。
可选地,在一些实施例中,获取模块601,还用于在处理模块603将第一重构日志写入存储介质之后,获取第一重构日志的粒度,粒度用于确定第一重构日志的版本号;
处理模块603,还用于根据获取模块601获取的粒度更新读视图,更新后的读视图用于对数据页进行重构计算时查询当前所使用的重构日志的版本号。
本实施例中,通过聚合模块602对同一个数据页中的至少一个重构日志的版本号聚合成第一重构日志,且该一重构日志仅占用单个重构日志条目,因此可以通过处理模块仅使用一个IO写入存储介质,节省了内存资源且减少了IO放大,优化了数据库的性能。
上面从模块化功能实体的角度对本申请实施例中的重构计算装置进行描述,下面从硬件处理的角度对本申请实施例中的重构计算装置进行描述。图7是本申请实施例中的通信装置的硬件结构一个示意图。如图7所示,该通信装置可以包括:
该通信装置包括至少一个处理器701,通信线路707,存储器703以及至少一个通信接口704。
处理器701可以是一个通用中央处理器(central processing unit,CPU),微处理器,特定应用集成电路(application-specific integrated circuit,服务器IC),或一个或多个用于控制本申请方案程序执行的集成电路。
通信线路707可包括一通路,在上述组件之间传送信息。
通信接口704,使用任何收发器一类的装置,用于与其他装置或通信网络通信,如以太网等。
存储器703可以是只读存储器(read-only memory,ROM)或可存储静态信息和指令的其他类型的静态存储装置,随机存取存储器(random access memory,RAM)或者可存储信息和指令的其他类型的动态存储装置,存储器可以是独立存在,通过通信线路707与处理器相连接。存储器也可以和处理器集成在一起。
其中,存储器703用于存储执行本申请方案的计算机执行指令,并由处理器701来控制执行。处理器701用于执行存储器703中存储的计算机执行指令,从而实现本申请上述实施例提供的数据重构计算方法。
可选的,本申请实施例中的计算机执行指令也可以称之为应用程序代码,本申请实施例对此不作具体限定。
在具体实现中,作为一种实施例,通信装置可以包括多个处理器,例如图7中的处理器701和处理器702。这些处理器中的每一个可以是一个单核(single-CPU)处理器,也可以是一个多核(multi-CPU)处理器。这里的处理器可以指一个或多个装置、电路、和/或用于处理数据(例如计算机程序指令)的处理核。
在具体实现中,作为一种实施例,通信装置还可以包括输出装置705和输入装置706。输出装置705和处理器701通信,可以以多种方式来显示信息。输入装置706和处理器701通信,可以以多种方式接收用户的输入。例如,输入装置706可以是鼠标、触摸屏装置或传感装置等。
上述的通信装置可以是一个通用装置或者是一个专用装置。在具体实现中,通信装置可以是台式机、便携式电脑、网络服务器、无线终端装置、嵌入式装置或有图7中类似结构的装置。本申请实施例不限定通信装置的类型。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的重构计算装置、单元以及模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的设备和方法,可以通过其它的方式实现。例如,以上所描述的重构计算装置的实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,模块或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。

Claims (12)

1.一种数据重构计算的方法,其特征在于,包括:
获取至少一个重构日志所携带的页码标识和表空间标识,所述页码标识用于标识因更新产生所述至少一个重构日志的数据页,所述表空间标识用于标识每个所述重构日志的物理存储位置;
根据所述页码标识和所述表空间标识与所述数据页的页码标识和表空间标识均相同确定所述至少一个重构日志产生于同一个所述数据页;
获取同一个所述数据页中至少一个重构日志,每个所述重构日志对应一个版本号,每个所述版本号指示所述数据页被更新的顺序;
将至少一个所述版本号聚合成第一重构日志,所述第一重构日志占用单个重构日志条目,所述第一重构日志的版本号为所述数据页被更新的顺序的最大值;
将所述第一重构日志写入存储介质,以用于对所述数据页进行重构计算。
2.根据权利要求1所述的方法,其特征在于,所述将至少一个所述版本号聚合成第一重构日志,包括:
按照顺序将至少一个所述版本号聚合成所述第一重构日志。
3.根据权利要求1或2所述的方法,其特征在于,在将所述至少一个版本号聚合成第一重构日志之后,还包括:
创建所述第一重构日志与所述数据页之间的映射关系;
将所述映射关系写入所述存储介质,所述映射关系用于查询对所述数据页进行数据重构时所需的重构日志。
4.根据权利要求3所述的方法,其特征在于,所述以用于对所述数据页进行重构计算,包括:
根据所述第一重构日志以及所述映射关系确定至少一个目标重构日志;
获取所述至少一个目标重构日志所对应的版本号,并按照所述版本号的顺序将对应的所述目标重构日志对所述数据页进行重构计算。
5.根据权利要求1至4中任一项所述的方法,其特征在于,在将所述第一重构日志写入存储介质之后,还包括:
获取所述第一重构日志的粒度,所述粒度用于确定所述第一重构日志的版本号;
根据所述粒度更新读视图,更新后的读视图用于对所述数据页进行重构计算时查询当前所使用的重构日志的版本号。
6.一种重构计算装置,其特征在于,包括:
获取模块,用于获取至少一个重构日志所携带的页码标识和表空间标识,所述页码标识用于标识因更新产生所述至少一个重构日志的数据页,所述表空间标识用于标识每个所述重构日志的物理存储位置;
处理模块,用于根据所述页码标识和所述表空间标识与所述数据页的页码标识和表空间标识均相同确定所述至少一个重构日志产生于同一个所述数据页;
所述获取模块,用于获取同一个所述数据页中至少一个重构日志,每个所述重构日志对应一个版本号,每个所述版本号指示所述数据页被更新的顺序;
聚合模块,用于将所述获取模块获取的至少一个所述版本号聚合成第一重构日志,所述第一重构日志占用单个重构日志条目,所述第一重构日志的版本号为所述数据页被更新的顺序的最大值;
所述处理模块,用于将所述聚合模块聚合的所述第一重构日志写入存储介质,以用于对所述数据页进行重构计算。
7.根据权利要求6所述的重构计算装置,其特征在于,
所述聚合模块,用于按照顺序将至少一个所述版本号聚合成所述第一重构日志。
8.根据权利要求6或7所述的重构计算装置,其特征在于,
所述处理模块,还用于在所述聚合模块将所述至少一个版本号聚合成第一重构日志之后,创建所述第一重构日志与所述数据页之间的映射关系;将所述映射关系写入所述存储介质,所述映射关系用于查询对所述数据页进行数据重构时所需的重构日志。
9.根据权利要求8所述的重构计算装置,其特征在于,
所述处理模块,还用于根据所述聚合模块聚合的所述第一重构日志以及所述映射关系确定至少一个目标重构日志;
所述获取模块,还用于获取所述处理模块确定的所述至少一个目标重构日志所对应的版本号,并按照所述版本号的顺序将对应的所述目标重构日志对所述数据页进行重构计算。
10.根据权利要求6至9中任一项所述的重构计算装置,其特征在于,
所述获取模块,还用于在所述处理模块将所述第一重构日志写入存储介质之后,获取所述第一重构日志的粒度,所述粒度用于确定所述第一重构日志的版本号;
所述处理模块,还用于根据所述获取模块获取的所述粒度更新读视图,更新后的读视图用于对所述数据页进行重构计算时查询当前所使用的重构日志的版本号。
11.一种计算机设备,其特征在于,所述计算机设备包括:输入/输出(I/O)接口、处理器和存储器,
所述存储器中存储有程序指令;
所述处理器用于执行存储器中存储的程序指令,执行如权利要求1-5中任一所述的方法。
12.一种计算机可读存储介质,包括指令,其特征在于,当所述指令在计算机设备上运行时,使得所述计算机设备执行如权利要求1-5中任一项所述的方法。
CN201910452614.6A 2019-05-28 2019-05-28 一种数据重构计算的方法以及相关装置 Active CN112015586B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910452614.6A CN112015586B (zh) 2019-05-28 2019-05-28 一种数据重构计算的方法以及相关装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910452614.6A CN112015586B (zh) 2019-05-28 2019-05-28 一种数据重构计算的方法以及相关装置

Publications (2)

Publication Number Publication Date
CN112015586A CN112015586A (zh) 2020-12-01
CN112015586B true CN112015586B (zh) 2024-04-26

Family

ID=73501031

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910452614.6A Active CN112015586B (zh) 2019-05-28 2019-05-28 一种数据重构计算的方法以及相关装置

Country Status (1)

Country Link
CN (1) CN112015586B (zh)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103412803A (zh) * 2013-08-15 2013-11-27 华为技术有限公司 数据恢复的方法及装置
CN105122241A (zh) * 2013-03-15 2015-12-02 亚马逊科技公司 具有数据库引擎和独立分布式存储服务的数据库系统
CN105190623A (zh) * 2013-03-15 2015-12-23 亚马逊科技公司 日志记录管理
US9223843B1 (en) * 2013-12-02 2015-12-29 Amazon Technologies, Inc. Optimized log storage for asynchronous log updates
US9870386B1 (en) * 2014-10-31 2018-01-16 Amazon Technologies, Inc. Reducing I/O operations for on-demand demand data page generation

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9244914B2 (en) * 2012-09-28 2016-01-26 Apple Inc. Schema versioning for cloud hosted databases

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105122241A (zh) * 2013-03-15 2015-12-02 亚马逊科技公司 具有数据库引擎和独立分布式存储服务的数据库系统
CN105190623A (zh) * 2013-03-15 2015-12-23 亚马逊科技公司 日志记录管理
CN103412803A (zh) * 2013-08-15 2013-11-27 华为技术有限公司 数据恢复的方法及装置
US9223843B1 (en) * 2013-12-02 2015-12-29 Amazon Technologies, Inc. Optimized log storage for asynchronous log updates
US9870386B1 (en) * 2014-10-31 2018-01-16 Amazon Technologies, Inc. Reducing I/O operations for on-demand demand data page generation

Also Published As

Publication number Publication date
CN112015586A (zh) 2020-12-01

Similar Documents

Publication Publication Date Title
JP6026738B2 (ja) 重複排除記憶システムのスケーラビリティを向上させるシステムおよび方法
US11263087B2 (en) Methods and systems for serverless data deduplication
US10606806B2 (en) Method and apparatus for storing time series data
EP3260993A1 (en) File operation method and device
US20130080397A1 (en) Database restore using incremental backups in reverse order
US10628200B2 (en) Base state for thin-provisioned volumes
CN108027713A (zh) 用于固态驱动器控制器的重复数据删除
CN105900093A (zh) 一种KeyValue数据库的数据表的更新方法与表数据更新装置
CN110704194A (zh) 管理内存数据及在内存中维护数据的方法和系统
WO2019071968A1 (zh) 薪资计算方法、应用服务器及计算机可读存储介质
CN107135662A (zh) 一种差异数据备份方法、存储系统和差异数据备份装置
CN114327278A (zh) 数据的追加写方法、装置、设备以及存储介质
WO2022257575A1 (zh) 一种数据处理方法、装置以及设备
CN107632779B (zh) 数据处理方法和装置、服务器
CN110352410B (zh) 跟踪索引节点的访问模式以及预提取索引节点
CN110019063B (zh) 计算节点数据容灾回放的方法、终端设备及存储介质
CN107329966B (zh) 机器数据存储方法及系统
US20180137055A1 (en) Log-Structured Storage Method and Server
CN110222046B (zh) 列表数据的处理方法、装置、服务器和存储介质
CN112860412B (zh) 业务数据处理方法、装置、电子设备及存储介质
JP2023553220A (ja) マルチインスタンスプロセスのためのプロセスマイニング
CN115249057A (zh) 用于图形节点采样的系统和由计算机实现的方法
US20180364942A1 (en) System and method for optimizing multiple packaging operations in a storage system
CN112015586B (zh) 一种数据重构计算的方法以及相关装置
US9471244B2 (en) Data sharing using difference-on-write

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
TA01 Transfer of patent application right

Effective date of registration: 20220209

Address after: 550025 Huawei cloud data center, jiaoxinggong Road, Qianzhong Avenue, Gui'an New District, Guiyang City, Guizhou Province

Applicant after: Huawei Cloud Computing Technology Co.,Ltd.

Address before: 518129 Bantian HUAWEI headquarters office building, Longgang District, Guangdong, Shenzhen

Applicant before: HUAWEI TECHNOLOGIES Co.,Ltd.

TA01 Transfer of patent application right
GR01 Patent grant
GR01 Patent grant