CN114816224A - 数据管理方法和数据管理装置 - Google Patents
数据管理方法和数据管理装置 Download PDFInfo
- Publication number
- CN114816224A CN114816224A CN202110121726.0A CN202110121726A CN114816224A CN 114816224 A CN114816224 A CN 114816224A CN 202110121726 A CN202110121726 A CN 202110121726A CN 114816224 A CN114816224 A CN 114816224A
- Authority
- CN
- China
- Prior art keywords
- page
- data
- transaction
- persistent memory
- data page
- 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 70
- 238000013523 data management Methods 0.000 title claims abstract description 48
- 230000002085 persistent effect Effects 0.000 claims abstract description 112
- 238000003860 storage Methods 0.000 claims abstract description 51
- 238000012545 processing Methods 0.000 claims description 24
- 230000004048 modification Effects 0.000 claims description 23
- 238000012986 modification Methods 0.000 claims description 23
- 239000000126 substance Substances 0.000 claims 1
- 238000007726 management method Methods 0.000 abstract description 31
- 230000008569 process Effects 0.000 description 12
- 238000010586 diagram Methods 0.000 description 10
- 238000002955 isolation Methods 0.000 description 5
- 238000011084 recovery Methods 0.000 description 5
- 239000002253 acid Substances 0.000 description 4
- 230000009471 action Effects 0.000 description 4
- 230000000694 effects Effects 0.000 description 4
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 230000001360 synchronised effect Effects 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 238000012217 deletion Methods 0.000 description 2
- 230000037430 deletion Effects 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 238000002360 preparation method Methods 0.000 description 2
- 230000010076 replication Effects 0.000 description 2
- XLYOFNOQVPJJNP-UHFFFAOYSA-N water Substances O XLYOFNOQVPJJNP-UHFFFAOYSA-N 0.000 description 2
- 230000001680 brushing effect Effects 0.000 description 1
- 239000003990 capacitor Substances 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000004927 fusion Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 239000002245 particle Substances 0.000 description 1
- 238000011112 process operation Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1009—Address translation using page tables, e.g. page table structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/21—Design, administration or maintenance of databases
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/062—Securing storage systems
- G06F3/0622—Securing storage systems in relation to access
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请实施例公开了一种数据管理方法,应用于包含持久化内存和磁盘的存储系统。本申请实施例方法包括:获取用户请求,所述用户请求用于指示对第一数据页的数据写操作;根据所述用户请求在所述持久化内存中修改所述第一数据页,并获取修改后的第一脏页;将所述第一脏页写入所述磁盘。该方法基于持久化内存的非易失特性,在持久化内存中对用户请求对应的数据页进行修改,无需维护日志文件,可以简化数据管理程序,降低数据库中事务管理的复杂度,提升数据库管理系统的效率及可维护性。
Description
技术领域
本申请涉及数据库技术领域,尤其涉及一种数据管理方法和数据管理装置。
背景技术
数据库管理系统(database management system,DBMS)是一种系统软件,以查询语言的方式为应用提供可靠的数据操作和管理。传统数据库的存储系统包括两个层级的存储结构,即易失性内存(通常为动态随机存取存储器(dynamic random access memory,DRAM))和持久化介质(一般指磁盘)。易失性内存中考虑到磁盘顺序写远胜于随机写的自然属性,在数据管理系统中,事务日志(transaction log)被广泛应用,通过顺序追加的方式最大程度利用持久化介质的快速顺序写入的特性。当硬件发生不可避免的故障时,事务日志可以用于保证事务的原子性,一致性和持久性。
预写式日志(write ahead log,WAL)为一种常用的事务日志技术,核心思想是对数据文件的修改只能发生在这些修改已经被持久化到事务日志之后。即免去了每次事务提交的时候把数据页刷到磁盘的过程,由于事务日志记录了数据的更改记录,因此在存储系统出现崩溃的情况下可以用事务日志来恢复数据,保证内存中记录的修改被恢复。
由于存储于磁盘的事务日志与CPU资源隔离,为了保证易失性内存中记录的数据修改内容(包括事务日志缓存和脏页)以及磁盘中物理文件(包括数据文件和事务日志)之间的一致性,现有的数据管理方法中通常需要不同的日志序列号(LSN)描述不同的逻辑操作进度,设计及实现较为复杂,对数据库的性能及可用性造成制约。
发明内容
本申请实施例提供了一种数据管理方法,应用于数据库管理系统,用于简化数据库中事务管理的复杂度,提升数据库管理系统的可维护性。
本申请实施例第一方面提供了一种数据管理方法,应用于包含持久化内存和磁盘的存储系统,包括:获取用户请求,所述用户请求用于指示对第一数据页的数据写操作;根据所述用户请求在所述持久化内存中修改所述第一数据页,并获取修改后的第一脏页;将所述第一脏页写入所述磁盘。本申请实施例中,持久化内存包括基于非易失介质的持久化内存,或基于易失性介质加保电模块模拟非易失功能的设备。对第一数据页的数据写操作包括写入数据或者更新数据。
在包含持久化内存和磁盘的存储系统中,基于持久化内存的非易失特性,在持久化内存中对用户请求对应的数据页进行修改,获取修改后的脏页,再将脏页写入磁盘,相较现有技术在易失性内存(本实施例中将易失性内存简称为内存)中修改并记录脏页,为保持内存中数据缓存和磁盘日志文件等的一致性,需要维护大量日志序列化,本实施提供的数据管理方法不需要维护日志文件,可以简化数据管理程序,降低数据库中事务管理的复杂度,提升数据库管理系统的效率及可维护性。
在第一方面的一种可能的实现方式中,所述方法还包括:确定所述用户请求对应的第一事务,所述第一事务包括对所述第一数据页的修改;在所述持久化内存中记录所述第一数据页的最大事务号为所述第一事务的事务标识。
本申请实施例提供的数据管理方法,数据管理装置可以为用户请求分配事务标识(ID),并基于事务进行脏页管理,可以保证事务的ACID特性。
在第一方面的一种可能的实现方式中,所述第一事务还包括:对第二数据页的修改;所述方法还包括:在所述持久化内存中修改所述第二数据页,获取修改后的第二脏页;将所述第二脏页写入所述磁盘。
本申请实施例提供的数据管理方法,用户请求对应的事务,可能包括对至少两个数据页的修改,类似的,数据管理装置可以在持久化内存中修改第二数据页,增加了方案实现的多样性。
在第一方面的一种可能的实现方式中,所述方法还包括:在所述持久化内存的有序哈希表中添加第一键值对,所述第一键值对的键为所述第一事务的事务标识,所述第一键值对的值为第一链表,所述第一链表包括所述第一脏页。
本申请实施例提供的数据管理方法,还可以在持久化内存中通过有序哈希表将事务与脏页链组织起来,既可以大幅简化事务记录和脏页的管理机制,也可以提供版本链查询的功能实现多版本并发控制协议(MVCC)。
在第一方面的一种可能的实现方式中,所述方法还包括:若所述第一事务提交,则在所述第一链表末端添加标记页,所述标记页用于指示所述第一链表为完整链表。
本申请实施例提供的数据管理方法,通过在链表末端添加标记页,可以保证事务可以保证事务的原子性。
在第一方面的一种可能的实现方式中,所述存储系统还包括易失性内存,所述方法还包括:在所述易失性内存中查找所述第一数据页;若所述易失性内存中存在所述第一数据页,则将所述第一数据页从所述易失性内存转存至所述持久化内存中;或者,若所述易失性内存中不存在所述第一数据页,且所述持久化内存中也不存在所述第一数据页,则从磁盘查找所述第一数据页并将所述第一数据页写入所述持久化内存。
本申请实施例提供的数据管理方法,应用于包含易失性内存、持久化内存和磁盘的三层存储结构时,可以在不同存储位置顺序查找数据页,增加了方案实施的完整性。
在第一方面的一种可能的实现方式中,所述将所述第一脏页写入所述磁盘,包括:根据用户请求,或根据预设时间间隔,或基于所述持久化内存的数据量大于预设阈值,将所述持久化内存中的第一脏页写入磁盘。
本申请实施例提供的数据管理方法,持久化内存中的脏页可以基于不同的条件写入磁盘,可以保证磁盘中的数据的有效性,提高了方案实现的多样性。
本申请实施例第二方面提供了一种数据管理装置,其特征在于,应用于包含持久化内存和磁盘的存储系统,所述装置包括:获取单元,用于获取用户请求,所述用户请求用于指示对第一数据页的数据写操作;所述获取单元,还用于根据所述用户请求在所述持久化内存中修改所述第一数据页,并获取修改后的第一脏页;处理单元,用于将所述第一脏页写入所述磁盘。
在第二方面的一种可能的实现方式中,所述装置还包括:确定单元,用于确定所述用户请求对应的第一事务,所述第一事务包括对所述第一数据页的修改;所述处理单元还用于,在所述持久化内存中记录所述第一数据页的最大事务号为所述第一事务的事务标识。
在第二方面的一种可能的实现方式中,所述第一事务还包括:对第二数据页的修改;所述获取单元,还用于在所述持久化内存中修改所述第二数据页,获取修改后的第二脏页;所述处理单元,还用于将所述第二脏页写入所述磁盘。
在第二方面的一种可能的实现方式中,所述处理单元,还用于:在所述持久化内存的有序哈希表中添加第一键值对,所述第一键值对的键为所述第一事务的事务标识,所述第一键值对的值为第一链表,所述第一链表包括所述第一脏页。
在第二方面的一种可能的实现方式中,所述处理单元,还用于:若所述第一事务提交,则在所述第一链表末端添加标记页,所述标记页用于指示所述第一链表为完整链表。
在第二方面的一种可能的实现方式中,所述存储系统还包括易失性内存;所述处理单元,还用于:在所述易失性内存中查找所述第一数据页;若所述易失性内存中存在所述第一数据页,则将所述第一数据页从所述易失性内存转存至所述持久化内存中;或者,若所述易失性内存中不存在所述第一数据页,且所述持久化内存中也不存在所述第一数据页,则从磁盘查找所述第一数据页并将所述第一数据页写入所述持久化内存。
在第二方面的一种可能的实现方式中,所述处理单元,具体用于:
根据用户请求,或根据预设时间间隔,或基于所述持久化内存的数据量大于预设阈值,将所述持久化内存中的第一脏页写入磁盘。
本申请实施例第三方面提供了一种计算机设备,包括:处理器和存储器;其中,所述存储器中存储程序代码;所述处理器读取所述程序代码以使所述计算机设备实现如前述第一方面或第一方面的各实现方式的步骤。
本申请实施例第四方面提供了一种计算机程序产品,包括指令,当所述指令在计算机上运行时,使得所述计算机执行如前述第一方面或第一方面的各实现方式的步骤。
本申请实施例第五方面提供了一种计算机可读存储介质,包括指令,当所述指令在计算机上运行时,使得所述计算机执行如前述第一方面或第一方面的各实现方式的步骤。
本申请实施例第六方面提供了一种数据库系统,其特征在于,包括网络接口,用于接收用户请求;计算机设备,用于响应于该存储过程请求,执行如前述第一方面或第一方面的各实现方式中任一项所述的方法。
中,第二方面至第六方面中任一种实现方式所带来的技术效果可参见第一方面中相应实现方式所带来的技术效果,此处不再赘述。
从以上技术方案可以看出,本申请实施例具有以下优点:
在包含持久化内存和磁盘的存储系统中,基于持久化内存的非易失特性,在持久化内存中对用户请求对应的数据页进行修改,获取修改后的脏页,再将脏页写入磁盘,相较现有技术在内存中修改并记录脏页,为保持内存中数据缓存和磁盘日志文件等的一致性,需要维护大量日志序列化,本实施提供的数据管理方法不需要维护日志文件,可以简化数据管理程序,降低数据库中事务管理的复杂度,提升数据库管理系统的效率及可维护性。
此外,本申请实施例提供的数据管理方法通过持久化内存记录脏页,在故障重启时无需进行故障恢复即可直接进行工作状态,效率更高。
附图说明
图1为一种数据库管理系统的架构图;
图2a为本申请实施例中数据库管理系统的一个架构图;
图2b为本申请实施例中数据库管理系统的另一个架构图;
图3为本申请实施例中数据管理方法的一个实施例示意图;
图4为本申请实施例中事务管理算法的一个实施例示意图;
图5为本申请实施例中故障恢复方法的一个实施例示意图;
图6为本申请实施例中数据管理装置的一个实施例示意图;
图7为本申请实施例中计算机设备的另一个实施例示意图。
具体实施方式
本申请实施例提供了一种数据管理方法,应用于数据库管理系统,用于简化数据库中事务管理的复杂度,提升数据库管理系统的可维护性。
为了便于理解,下面对本申请实施例涉及的部分技术术语进行简要介绍:
数据库管理系统(database management system,DBMS):数据库管理系统是一种系统软件,解决数据的完整性、一致性以及安全性等一系列的问题,并且屏蔽了硬件访问的复杂性和数据访问的复杂性,以查询语言的方式为应用提供可靠的数据操作和管理。常见的商用DBMS有Oracle,SQL Server,DB2等;常见的开源DBMS有MySQL,PostgreSQL或MongoDB等。
事务(transaction):DBMS执行过程操作中的基本逻辑单位,通常包含了一系列对数据库的读和写操作。当事务被提交给DBMS,则DBMS需要保证该事务中所有操作都成功完成且结果被持久化在DBMS中;如果事务中有操作没有成功完成,则事务中所有操作都需要回滚到事务执行前的状态;每个事务对数据库或者其它事务的执行互不影响,事务之间独立运行。
事务日志(transaction log):又称为重做日志,常简称日志。存储对数据库进行的修改记录,包括新建,删除、更新、删除、提交、回退等。事务日志保证了DBMS的数据完整性和一致性,是备份恢复的重要组件,也是多种DBMS数据复制的实现依赖。事务日志文件通常与数据文件分开存储。
检查点(checkpoint)同步:出于性能的原因,事务修改数据时候并不会直接修改磁盘数据文件,而是修改内存中的缓存页面,变成脏页;后台线程会定期或者按需将脏页的集合刷到磁盘中,这一过程称为检查点同步。
下面结合附图,对本申请的实施例进行描述,显然,所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例。本领域普通技术人员可知,随着技术的发展和新场景的出现,本申请实施例提供的技术方案对于类似的技术问题,同样适用。
本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或模块的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或模块,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或模块。在本申请中出现的对步骤进行的命名或者编号,并不意味着必须按照命名或者编号所指示的时间/逻辑先后顺序执行方法流程中的步骤,已经命名或者编号的流程步骤可以根据要实现的技术目的变更执行次序,只要能达到相同或者相类似的技术效果即可。
传统的数据库的存储系统包括两个层级的存储结构:内存和持久化存储介质例如磁盘。数据库管理系统在进行数据操作和管理时,需要对磁盘进行访问,将数据从磁盘读到内存,然后在内存上对数据进行处理,处理完成后再将内存中的数据写回磁盘。而磁盘由于机械设备的特性,I/O操作速度较慢,阻碍数据库的性能提高。现有技术中,通过在内存中创建缓存池,将近期数据存储在内存缓冲池中,以减少磁盘I/O操作。具体的,如图1所示,内存(DRAM)存放运行数据,包括日志缓存和脏页,磁盘(SSD或HDD)存放日志文件以及数据文件,基于日志确保数据的ACID特性(即原子性、一致性、隔离性和持久性),基于脏页实现缓冲区与磁盘一致性。
事务日志的诞生和优化都是来自和围绕于磁盘顺序写远胜于随机写的自然属性。为了同步并发事务的更新,必须通过例如锁、闩等同步机制来串行化并发操作。由于锁保护的内容是较为耗时的I/O操作,排队的事务等待的时间会指数级上升。此外,为维护日志缓冲区、操作系统页面缓存(page cache)、日志的物理文件以及脏页之间的一致性,需要维护大量的日志序列号(LSN),设计上繁琐,对实现的要求更高,可维护性非常低,使得数据库管理系统的效率较低。
随着存储介质的发展,持久化内存被应用于数据库领域。持久化内存(persistentmemory,PMEM),也称非易失性内存(non-volatile memory,NVM)或存储级内存(storage-class memory,SCM),NVM提供了比内存更大的容量同时也有比磁盘更快的访问速度。应用可以像访问传统的内存一样访问持久化内存,而无需在内存和存储器之间来回切换数据块。
本申请实施例提供的数据管理方法,基于持久化内存语义的数据库,将事务和数据页之间的关系简化并高效的组织起来,利用持久化内存的硬件能力将提供事务ACID能力,可以提高数据管理效率。
下面,对本申请实施例提供的数据管理方法适用的DBMS数据库框架进行简要介绍,请参阅图2a-图2b,该DBMS数据库框架包括SQL、存储引擎和存储介质。
SQL:数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。
存储引擎是数据库底层软件组织,数据库管理系统(DBMS)使用数据引擎进行创建、查询、更新和删除数据。
本申请实施例提供的数据管理方法适用的存储介质包括三层存储结构或者两层存储结构,请参阅图2a和图2b,下面分别对这两种存储架构进行介绍。
如图2a所示,该DBMS数据库的存储介质包括三层存储结构,即易失性内存(以下简称内存)、持久化内存和持久化存储介质。其中,易失性内存包括DRAM或者静态随机存取存储器(static random access memory,SRAM)等,本实施例及后续实施例中以DRAM为例进行介绍;持久化内存即NVM设备,可以是基于非易失介质的持久化内存,例如傲腾内存(OptaneNVM Memory);也可以是基于易失性介质加保电模块模拟非易失功能的设备,其中保电模块可以是备电电容,通过易失性介质加备电电容的结构,设备可以支持掉电后将数据写入磁盘,上电后从磁盘恢复数据的操作,从而达到模拟非易失性介质的效果。此处对于持久化内存的具体硬件形态不做限定。持久化存储介质为磁盘,包括固态硬盘(solid state disk/drive,SSD)或硬盘驱动器(hard disk drive,HDD)等。
具体地,DRAM用于存储数据缓存(data cache)等可丢失数据,这些数据可以在数据库掉电后丢失而不影响数据的一致性。
NVM用于记录数据库中修改的数据记录,包括事务顺序和修改后的脏页。存储内容主要包括:事务管理数据结构、事务号、脏页等,这些数据可以在机器掉电恢复后保持数据一致。本申请实施例中,上述功能通过设置于NVM的事务管理器(本申请实施例中也称事务管理模块)实现,逻辑上,事务管理器使用事务管理数据结构管理事务号和脏页直接的关系,具体地,事务管理数据结构包括有序哈希表。
磁盘(包括SSD或HDD等)用于做持久化数据的存储,包括存储数据文件、表元数据文件等,值得注意的是相较现有技术,磁盘中不再记录日志文件。
如图2b所示,该DBMS数据库的存储介质包括两层存储结构,即持久化内存和持久化存储介质。相较图2a所示的三层存储结构,图2b所示的存储结构的不同之处在于,内存被持久化内存所替代,持久化内存除了用于记录数据库中修改的数据记录,包括事务顺序和修改后的脏页之外,还用于存储数据缓存(data cache)等可丢失数据。
请参阅图3,下面以数据写入为例,对本申请实施例提供的数据管理方法进行介绍:
301、获取用户请求;
数据管理装置获取用户请求,通常,用户通过SQL语句对数据库进行操作,应用程序把查询SQL语句发给数据库服务器端。用户请求具体可以是对数据库中数据文件的写请求或者是修改请求等,该用户请求用于指示对第一数据页的数据写操作。
示例性的,用户输入一条UPDATE语句,例如“UPDATE TABLE t SET c=2WHERE id=1;”意为把表t中id为1的数据行中列c改为2。
302、确定该用户请求对应的数据页;
数据管理装置确定该用户请求对应的数据页,即写入或修改指示对应的目标。可选地,数据管理装置可以确定用户请求对应的事务,即确定事务ID,一个用户请求可以对应于一个或多个事务,具体此处不做限定,本实施例以用户请求对应于第一事务为例进行介绍,第一事务可能涉及对第一或多个数据页进行管理,第一事务包括对第一数据页的修改。即数据管理装置确定用户请求对应的数据页包括第一数据页。
通过数据表的索引可以定位该第一数据页的地址,包括数据页号和偏移地址。示例性的,数据库通过数据表的索引定位到id为1的这一行所在的数据页号和偏移地址。
303、在持久化内存中修改该数据页,以获取修改后的脏页;
数据管理装置根据数据页地址在储存介质中查找数据页。
可选地,对于如图2a所示的包含三层存储结构的存储介质,数据管理装置首先在DRAM中查询数据页,若从DRAM缓存(buffer pool)中查找到该数据页,则将该数据页从DRAM中的buffer pool中淘汰(evict),使得buffer pool中不再有该数据页,并将该数据页加入持久化内存;需要说明的是,本申请实施例提供的数据管理方法中,DRAM中的数据页为干净页,意为该数据页与磁盘中的真实物理页一模一样。若从DRAM中未查询到该数据页,则查询持久化内存,具体地,查找持久化内存中的脏页,若从持久化内存中查找到该数据页,则可以直接在持久化内存中对该数据页进行处理。若从DRAM及持久化内存中均未查询到该数据页,则查询磁盘,将从磁盘中查询到的该数据页读入持久化内存中。
可选地,对于如图2b所示的包含两层存储结构的存储介质,数据管理装置首先查找持久化内存中的脏页,若从持久化内存中查找到该数据页,则可以直接在持久化内存中对该数据页进行处理。若从DRAM及持久化内存中均未查询到该数据页,则查询磁盘,将从磁盘中查询到的该数据页读入持久化内存中。
然后,在持久化内存中对该数据页进行修改,根据用户请求,具体可以是在该数据页中写入数据或者修改数据。具体地,对数据页进行修改获取修改后的脏页,以及记录修改的事务顺序。示例性的,修改数据页中对应的ID=1所在的记录,定位到c列,修改其值为2。并修改数据页头文件中的最大事务号为本事务ID。
可选地,在持久化内存中通过事务ID标记修改的事务顺序。对加入脏页的数据页进行修改,还需要记录该数据页对应的事务ID。具体的,在持久化内存的有序哈希表中增加一个以当前事务ID为key的记录,值为一个链表,链表中有一个元素,即该数据页。
示例性的,修改数据页中对应的ID=1所在的记录,定位到c列,修改其值为2。并修改数据页头文件中的最大事务号为本事务ID。定位的具体实现方式是通过主键(ID)搜寻索引树,定位到数据行所在的页和偏移。可选地,修改数据页记录的记录头中对应的版本信息为当前事务ID。可选地,之前的版本信息存放到版本链中,用于实现多版本并发控制协议(MVCC)。可选地,由于一个事务会涉及多个数据页(P0,P1,…,PN)的修改,可以依次将对数据页的修改添加到有序哈希表的链表中。
可选地,如图4中所示。事务按照事务ID组织成有序哈希表,对于每一个事务而言,对多个页面的修改形成多个脏页,把这一组脏页通过链表管理后与事务ID组成键值对添加至有序哈希表中,其中,键值对中的键为事务ID(trx_id`),值为该事务ID对应的链表,或者说脏页链。可选地,当事务提交(commit)时,链表末端加入一个特殊页,参见图4中链表末端黑色页,需要说明的是,本申请实施例提供的方法中,特殊页是一个标记位,为空页但是页头中包含特殊字符,作用是标记所在链表的完整性,特殊字符例如可以是“COMMITED”字符串等。需要说明的是,与现有技术中全局脏页链不同,本申请实施例中的脏页链基于事务进行组织。
可选地,对事务中所有涉及的数据页修改完后,则可以返回用户线程事务成功或者失败的消息。
304、将脏页写入磁盘;
触发将脏页写入磁盘的条件有多种,可选地,当接收到用户的写入请求时,将持久化内存中的脏页写入磁盘;或者,根据预设时间间隔,事务管理器的后台换出线程定期将脏页从NVM写入到磁盘中,这样可以保证磁盘中的数据足够新,满足数据同步复制的需要;或者,基于所述持久化内存的数据量大于预设阈值,将所述持久化内存中的第一脏页写入磁盘,具体地,当NVM缓存已经超过总容量的低水位阈值的时候,就会启动换出线程将脏页刷入磁盘;当使用的NVM缓存超过总容量的高水位阈值的时候,会暂停数据库业务,强制启动换出线程将脏页刷入磁盘。
示例性的,请参阅图5,将持久化内存中的脏页写入磁盘的具体流程如下:
1、从NVM设备中获取事务管理器的句柄,获取有序哈希表的操作指针。
2、沿着事务发生的顺序,即哈希表中有序的事务ID的增长顺序扫描各自的脏页链表。以图3为例,现在需要依次恢复事务ID为102,103,104的事务动作。
3、事务102为完整事务(执行了commit动作)。依次对数据页P0,P1,P2同步脏页链中的数据,分别更新为a,A,α。
4、事务103未执行commit动作,直接跳过。
5、事务104为完整事务(执行了commit动作)。对P1同步脏页链中的数据,更新为B。
6、继续对其它事务ID按递增的顺序执行脏页与数据页的同步。
本申请实施例提供的数据管理方法中,基于持久化内存的存储架构,不需要在DRAM中记录事务日志缓存,直接在持久化内存中,解决了基于内存和磁盘融合的复杂实现,重构了传统事务日志的WAL实现,简化了事务管理的复杂度,提升了DBMS的可维护性。
此外,受益于NVM的非易失特性,当数据库管理系统发生系统故障,引起数据库重启和故障恢复时,本申请实施例提供的数据管理方法中,本申请实施例提供的数据管理方法中,当数据库发生故障时,可以直接开机恢复,NVM中存储的脏页和事务序列号保障了事务的可恢复性,数据不会丢失,可以保持与磁盘中数据文件的一致性。因此,无需要经历传统数据库的故障恢复流程,即可直接进入工作模式,简化了故障恢复流程。
对于本申请实施例提供的数据管理装置,持久化事务管理器处理并发控制的算法有如下两种方式。
1、2PL(two phase lock)
2PL在资源的准备阶段会申请所有需要的锁,事务管理器在获知要修改的页面集后就会对相对应的资源做保护,然后结束后统一释放。以图5为例,事务105修改了P0,P1,P2三个页面,那么事务105在开始事务准备的时候会获取事务管理器(有序哈希表)的写锁,预留事务ID的key,然后获取P0,P1,P2的数据页写锁,然后根据事务实际操作修改页面中对应的值,事务完成后安全提交。
2、OCC(optimistic concurrency control)
OCC在资源的访问和修改中并不会统一提前做保护,而是采取一种乐观的思想只有在真正需要访问资源颗粒的时候再做保护,如果碰到冲突,则回退整个事务操作。以图5描述的算法为例,事务会在一开始预留注册自己的事务ID,例如105,并在事务的本地资源中按实际情况修改P0,P1,P2的数据内容,生成OCC算法中依赖的Readset,Writeset,在事务提交的时候观察事务过程中,P0,P1,P2是否有其它事务修改,如果发生被修改,则回退本地事务重试,否则提交。
对于本申请实施例提供的数据管理装置,如果在读数据页的时候有正在写的事务,则根据两个事务的先后顺序和事务的隔离级别设置判断其可见性。查询数据的历史数据通过遍历持久化事务管理器中的事务管理数据结构和比较事务序列号,获取满足当前事务可见性的脏页。
下面对本申请实施例提供的数据管理方法中事务的ACID特性进行分析:
1、原子性:将脏页链在事务管理器外单独更新,然后通过原子操作加到事务列表链上。
2、一致性:每条事务记录都由事务链保证完整性,可以确保事务前后的状态一致性。同时对数据的完整性和规范没有影响。
3、隔离性:每个脏页都会记录修改的事务ID,确保基于事务ID的事务隔离性可以在不同的隔离级别设置下都能找到满足自己可见性的数据版本。
4、持久性:内存即持久化;数据结构即文件,事务管理器本身就是持久化的数据结构。
上面介绍了本申请提供的数据管理方法,下面对实现该数据管理方法的数据管理装置进行介绍,请参阅图6,为本申请实施例中数据管理装置的一个实施例示意图。
图6中的各个模块的只一个或多个可以软件、硬件、固件或其结合实现。所述软件或固件包括但不限于计算机程序指令或代码,并可以被硬件处理器所执行。所述硬件包括但不限于各类集成电路,如中央处理单元(CPU)、数字信号处理器(DSP)、现场可编程门阵列(FPGA)或专用集成电路(ASIC)。
该数据管理装置,应用于包含持久化内存和磁盘的存储系统,所述装置包括:
获取单元601,用于获取用户请求,所述用户请求用于指示写数据或更新数据;
确定单元602,用于确定所述用户请求对应的第一数据页;
所述获取单元601,还用于根据所述用户请求在所述持久化内存中修改所述第一数据页,以获取修改后的第一脏页;
处理单元603,用于将所述第一脏页写入所述磁盘。
可选地,所述确定单元602还用于,确定所述用户请求对应的第一事务,所述第一事务包括对所述第一数据页的修改;所述处理单元603还用于,在所述持久化内存中记录所述第一数据页的最大事务号为所述第一事务的事务标识。
可选地,所述第一事务还包括:对第二数据页的修改;所述获取单元601,还用于在所述持久化内存中修改所述第二数据页,获取修改后的第二脏页;所述处理单元603,还用于将所述第二脏页写入所述磁盘。
可选地,所述处理单元603,还用于:在所述持久化内存的有序哈希表中添加第一键值对,所述第一键值对的键为所述第一事务的事务标识,所述第一键值对的值为第一链表,所述第一链表包括所述第一脏页。
可选地,所述处理单元603,还用于:若所述第一事务提交,则在所述第一链表末端添加标记页,所述标记页用于指示所述第一链表为完整链表。
可选地,所述存储系统还包括内存DRAM;所述处理单元603,还用于:在所述易失性内存中查找所述第一数据页;若所述易失性内存中存在所述第一数据页,则将所述第一数据页从所述易失性内存转存至所述持久化内存中;或者,若所述易失性内存中不存在所述第一数据页,且所述持久化内存中也不存在所述第一数据页,则从磁盘查找所述第一数据页并将所述第一数据页写入所述持久化内存。
可选地,所述处理单元603,具体用于:
根据用户请求,或根据预设时间间隔,或基于所述持久化内存的数据量大于预设阈值,将所述持久化内存中的第一脏页写入磁盘。
请参阅图7,为本申请实施例中计算机设备的另一个实施例示意图;
本实施例提供的计算机设备,可以为服务器等电子设备,本申请实施例中对其具体设备形态不做限定。
该计算机设备700可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上处理器701和存储器702,该存储器702中存储有程序或数据。
其中,存储器702包括如图2a或图2b所示的存储介质,具体结构存储不再赘述。可选地,处理器701是一个或多个CPU,该CPU可以是单核CPU,也可以是多核CPU。处理器701可以与存储器702通信,在计算机设备700上执行存储器702中的一系列指令。
该计算机设备700还包括一个或一个以上有线或无线网络接口703,例如以太网接口。
可选地,尽管图7中未示出,计算机设备700还可以包括一个或一个以上电源;一个或一个以上输入输出接口,输入输出接口可以用于连接显示器、鼠标、键盘、触摸屏设备或传感设备等,输入输出接口为可选部件,可以存在也可以不存在,此处不做限定。
本实施例中计算机设备700中的处理器701所执行的流程可以参考前述方法实施例中描述的方法流程,此处不加赘述。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。
Claims (15)
1.一种数据管理方法,其特征在于,应用于包含持久化内存和磁盘的存储系统,包括:
获取用户请求,所述用户请求用于指示对第一数据页的数据写操作;
根据所述用户请求在所述持久化内存中修改所述第一数据页,并获取修改后的第一脏页;
将所述第一脏页写入所述磁盘。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
确定所述用户请求对应的第一事务,所述第一事务包括对所述第一数据页的修改;
在所述持久化内存中记录所述第一数据页的最大事务号为所述第一事务的事务标识。
3.根据权利要求2所述的方法,其特征在于,所述第一事务还包括:对第二数据页的修改,所述方法还包括:
在所述持久化内存中修改所述第二数据页,获取修改后的第二脏页;
将所述第二脏页写入所述磁盘。
4.根据权利要求2或3所述的方法,其特征在于,所述方法还包括:
在所述持久化内存的有序哈希表中添加第一键值对,所述第一键值对的键为所述第一事务的事务标识,所述第一键值对的值为第一链表,所述第一链表包括所述第一脏页。
5.根据权利要求4所述的方法,其特征在于,所述方法还包括:
若所述第一事务提交,则在所述第一链表末端添加标记页,所述标记页用于指示所述第一链表为完整链表。
6.根据权利要求1至5中任一项所述的方法,其特征在于,所述存储系统还包括易失性内存,所述方法还包括:
在所述易失性内存中查找所述第一数据页;
若所述易失性内存中存在所述第一数据页,则将所述第一数据页从所述易失性内存转存至所述持久化内存中;或者
若所述易失性内存中不存在所述第一数据页,且所述持久化内存中也不存在所述第一数据页,则从磁盘查找所述第一数据页并将所述第一数据页写入所述持久化内存。
7.根据权利要求1至6所述的方法,其特征在于,所述将所述第一脏页写入所述磁盘,包括:
根据用户请求,或根据预设时间间隔,或基于所述持久化内存的数据量大于预设阈值,将所述持久化内存中的第一脏页写入磁盘。
8.一种数据管理装置,其特征在于,应用于包含持久化内存和磁盘的存储系统,所述装置包括:
获取单元,用于获取用户请求,所述用户请求用于指示对第一数据页的数据写操作;
所述获取单元,还用于根据所述用户请求在所述持久化内存中修改所述第一数据页,并获取修改后的第一脏页;
处理单元,用于将所述第一脏页写入所述磁盘。
9.根据权利要求8所述的装置,其特征在于,所述装置还包括:
确定单元,用于确定所述用户请求对应的第一事务,所述第一事务包括对所述第一数据页的修改;
所述处理单元还用于,在所述持久化内存中记录所述第一数据页的最大事务号为所述第一事务的事务标识。
10.根据权利要求9所述的装置,其特征在于,所述第一事务还包括:对第二数据页的修改;
所述获取单元,还用于在所述持久化内存中修改所述第二数据页,获取修改后的第二脏页;
所述处理单元,还用于将所述第二脏页写入所述磁盘。
11.根据权利要求9或10所述的装置,其特征在于,所述处理单元,还用于:
在所述持久化内存的有序哈希表中添加第一键值对,所述第一键值对的键为所述第一事务的事务标识,所述第一键值对的值为第一链表,所述第一链表包括所述第一脏页。
12.根据权利要求11所述的装置,其特征在于,所述处理单元,还用于:
若所述第一事务提交,则在所述第一链表末端添加标记页,所述标记页用于指示所述第一链表为完整链表。
13.根据权利要求8至12中任一项所述的装置,其特征在于,所述存储系统还包括易失性内存;
所述处理单元,还用于:
在所述易失性内存中查找所述第一数据页;
若所述易失性内存中存在所述第一数据页,则将所述第一数据页从所述易失性内存转存至所述持久化内存中;或者,
若所述易失性内存中不存在所述第一数据页,且所述持久化内存中也不存在所述第一数据页,则从磁盘查找所述第一数据页并将所述第一数据页写入所述持久化内存。
14.根据权利要求8至13所述的装置,其特征在于,所述处理单元,具体用于:
根据用户请求,或根据预设时间间隔,或基于所述持久化内存的数据量大于预设阈值,将所述持久化内存中的第一脏页写入磁盘。
15.一种计算机设备,其特征在于,包括:处理器和存储器;其中,
所述存储器中存储程序代码;
所述处理器读取所述程序代码以使所述计算机设备实现如权利要求1至7中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110121726.0A CN114816224A (zh) | 2021-01-28 | 2021-01-28 | 数据管理方法和数据管理装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110121726.0A CN114816224A (zh) | 2021-01-28 | 2021-01-28 | 数据管理方法和数据管理装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114816224A true CN114816224A (zh) | 2022-07-29 |
Family
ID=82525333
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110121726.0A Pending CN114816224A (zh) | 2021-01-28 | 2021-01-28 | 数据管理方法和数据管理装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114816224A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115202588A (zh) * | 2022-09-14 | 2022-10-18 | 云和恩墨(北京)信息技术有限公司 | 数据存储方法及装置、数据恢复方法及装置 |
-
2021
- 2021-01-28 CN CN202110121726.0A patent/CN114816224A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115202588A (zh) * | 2022-09-14 | 2022-10-18 | 云和恩墨(北京)信息技术有限公司 | 数据存储方法及装置、数据恢复方法及装置 |
CN115202588B (zh) * | 2022-09-14 | 2022-12-27 | 本原数据(北京)信息技术有限公司 | 数据存储方法及装置、数据恢复方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11288252B2 (en) | Transactional key-value store | |
US11023453B2 (en) | Hash index | |
AU2016250260B2 (en) | Backup and restore in a distributed database utilizing consistent database snapshots | |
Arulraj et al. | Write-behind logging | |
US20180011892A1 (en) | Foster twin data structure | |
US20170351543A1 (en) | Heap data structure | |
US5280611A (en) | Method for managing database recovery from failure of a shared store in a system including a plurality of transaction-based systems of the write-ahead logging type | |
Levandoski et al. | LLAMA: A cache/storage subsystem for modern hardware | |
US10754854B2 (en) | Consistent query of local indexes | |
US9576038B1 (en) | Consistent query of local indexes | |
US11100083B2 (en) | Read only bufferpool | |
US9471622B2 (en) | SCM-conscious transactional key-value store | |
Graefe | A survey of B-tree logging and recovery techniques | |
US11755427B2 (en) | Fast recovery and replication of key-value stores | |
Haubenschild et al. | Rethinking logging, checkpoints, and recovery for high-performance storage engines | |
JP7101566B2 (ja) | 不揮発性メモリにおけるマルチバージョン同時実行制御(mvcc) | |
JPH0812631B2 (ja) | データベース・トランザクション及び照会処理システム | |
US11468011B2 (en) | Database management system | |
Graefe et al. | Instant recovery with write-ahead logging | |
US11829291B2 (en) | Garbage collection of tree structure with page mappings | |
US10325030B2 (en) | Durable multiversion B+-tree | |
CN114816224A (zh) | 数据管理方法和数据管理装置 | |
Lomet et al. | High performance temporal indexing on modern hardware | |
Sauer et al. | A novel recovery mechanism enabling fine-granularity locking and fast, REDO-only recovery | |
Magalhaes et al. | MM-DIRECT: Main memory database instant recovery with tuple consistent checkpoint |
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 |