CN107438829A - 分区内存数据集的重做日志记录 - Google Patents
分区内存数据集的重做日志记录 Download PDFInfo
- Publication number
- CN107438829A CN107438829A CN201680015875.6A CN201680015875A CN107438829A CN 107438829 A CN107438829 A CN 107438829A CN 201680015875 A CN201680015875 A CN 201680015875A CN 107438829 A CN107438829 A CN 107438829A
- Authority
- CN
- China
- Prior art keywords
- memory module
- storage device
- request
- data storage
- data set
- 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.)
- Granted
Links
- 230000015654 memory Effects 0.000 claims abstract description 146
- 238000013500 data storage Methods 0.000 claims abstract description 45
- 230000003139 buffering effect Effects 0.000 claims abstract description 38
- 238000000034 method Methods 0.000 claims abstract description 23
- 230000001360 synchronised effect Effects 0.000 claims abstract description 3
- 230000002085 persistent effect Effects 0.000 claims description 4
- 125000004122 cyclic group Chemical group 0.000 claims description 2
- 230000006399 behavior Effects 0.000 claims 1
- 238000004891 communication Methods 0.000 description 30
- 230000004044 response Effects 0.000 description 11
- 230000008569 process Effects 0.000 description 10
- 238000012545 processing Methods 0.000 description 10
- 238000013507 mapping Methods 0.000 description 8
- 230000004048 modification Effects 0.000 description 8
- 238000012986 modification Methods 0.000 description 8
- 230000008859 change Effects 0.000 description 7
- 238000013461 design Methods 0.000 description 6
- 238000002407 reforming Methods 0.000 description 6
- 238000007689 inspection Methods 0.000 description 5
- 238000012795 verification Methods 0.000 description 5
- 230000006870 function Effects 0.000 description 4
- 238000011084 recovery Methods 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 2
- 238000007726 management method Methods 0.000 description 2
- 238000004321 preservation Methods 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 239000012141 concentrate Substances 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000003780 insertion Methods 0.000 description 1
- 230000037431 insertion Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 230000000737 periodic effect Effects 0.000 description 1
- 230000002688 persistence Effects 0.000 description 1
- 238000006116 polymerization reaction Methods 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 230000008439 repair process Effects 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000000638 solvent extraction Methods 0.000 description 1
- 239000013589 supplement Substances 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 230000007306 turnover Effects 0.000 description 1
Classifications
-
- 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/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0656—Data buffering arrangements
-
- 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/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
- G06F16/273—Asynchronous replication or reconciliation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/26—Power supply means, e.g. regulation thereof
- G06F1/32—Means for saving power
- G06F1/3203—Power management, i.e. event-based initiation of a power-saving mode
- G06F1/3206—Monitoring of events, devices or parameters that trigger a change in power modality
- G06F1/3215—Monitoring of peripheral devices
- G06F1/3221—Monitoring of peripheral devices of disk drive devices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1415—Saving, restoring, recovering or retrying at system level
- G06F11/1438—Restarting or rejuvenating
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/20—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
- G06F11/2053—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
- G06F11/2056—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant by mirroring
- G06F11/2058—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant by mirroring using more than 2 mirrored copies
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/20—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
- G06F11/2053—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
- G06F11/2094—Redundant storage or storage space
-
- 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/0614—Improving the reliability of storage systems
- G06F3/0619—Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
-
- 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/0625—Power saving in storage systems
-
- 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/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/065—Replication mechanisms
-
- 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/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- 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/0683—Plurality of storage devices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1471—Saving, restoring, recovering or retrying involving logging of persistent data for recovery
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/80—Database-specific techniques
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/805—Real-time
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/82—Solving problems relating to consistency
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)
- Quality & Reliability (AREA)
- Computer Security & Cryptography (AREA)
- Databases & Information Systems (AREA)
- Computing Systems (AREA)
- Data Mining & Analysis (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供了一种数据存储设备(10),包括控制模块(100)、第一存储模块(110)、第二存储模块(120)、第三存储模块(125)和缓冲区(130)。所述第一存储模块(110)用于存储多个数据集。所述控制模块(100)用于接收对将在所述第一存储模块(110)中的所述多个数据集上执行的操作的请求,执行所述接收的请求以及在预定时间将所述第一存储模块(120)中的所述多个数据集复制到所述第二存储模块(120)。所述控制模块还用于将所述接收的对操作的请求添加到所述缓冲区(130)中以及通过同步方法将所述缓冲区(130)保存到所述第三存储模块(125)中。所述数据存储设备用于从所述第二存储模块(120)中初始化所述第一存储模块(110)中的所述多个数据集,以及在恢复场景中执行对应于所述第三存储模块(125)中的所述请求的操作。
Description
技术领域
本发明涉及数据存储技术领域,尤其涉及一种数据存储设备,例如,一种用于存储和管理特别大量的数据和用于将这些数据提供给客户端以供读或写操作的计算机设备。
背景技术
大型内存数据库目前正在生产基地上使用,充当键值存储、联机事务处理(onlinetransaction processing,OLTP)数据库、大规模网络应用、大型联机多人游戏、软件定义网络(software defined network,SDN)控制器网络视图、科学模拟等。建立这些应用以使用多个执行上下文,例如非一致性内存访问(non-uniform memory access,NUMA)全共享架构中的线程,来维持高事务率,由此,数据集被逻辑划分,每个分区与一个执行上下文关联,该执行上下文负责处理其分区上的事务。
可在内存数据集中使用点校验和逻辑重做日志以在系统故障的情况下启用数据集恢复。更新事务的持久性通过以下两方面提供:周期性点校验进程刷新一致的瞬时状态到永久性存储器,逻辑重做日志记录连续检查点之间的所有修改请求。发生系统故障后,恢复进程使用最近的永久性检查点初始化内存状态,以及使用重放流程重放重做日志以在故障时间之前的点处重创建应用状态。
面对数据集高更新率,重做日志记录的设计仍然是一个对数据库设计者持续存在的挑战。重做日志记录与点校验紧密耦合。点校验进程必须为低开销且高效率的,以便支持高更新率以及频繁的点校验,从而减小重做日志的大小及其在恢复时间内的所关联日志重放持续时间。由于检查点反复运行,所以通常可利用增量点校验,由此,仅对象被改变,这是因为先前的检查点被检测和保存。
逻辑重做日志记录通常将修改请求保存到数据库中,而这些修改在内存数据集中生效。由于更新永久性存储设备的速率通常明显低于更新内存的速率,所以减慢事务处理以保存这些事务的更完整日志之间可能存在矛盾。
Tuan Cao等人:“用于经常一致的应用的快速检查点恢复算法(Fast CheckpointRecovery Algorithms for Frequently Consistent Applications)”,SIGMOD'11,2011年6月,希腊雅典,描述了一种利用专用存储设备支持实现在全内存速度下的事务日志记录的方法。
发明内容
本发明的目的是提供一种数据存储设备,所述数据存储设备减少在与数据集有关的重做日志记录期间对事务处理的干扰。
该目的由独立权利要求的特征来解决。更多实施例在从属权利要求和以下描述中说明。
根据本发明的一个方面,提供了一种数据存储设备,所述数据存储设备包括控制模块、第一存储模块、第二存储模块、第三存储模块以及缓冲区。所述第一存储模块用于存储多个数据集,所述控制模块用于接收对在所述第一存储模块中的所述多个数据集上执行的操作的请求,执行所述接收的请求以及在预定时间将存储或包含在所述第一存储模块中的所述多个数据集复制到所述第二存储模块。所述控制模块还用于将所述接收的对操作的请求添加到所述缓冲区中以及通过同步方法将所述缓冲区保存到所述第三存储模块中。所述数据存储设备用于从所述第二存储模块中初始化所述第一存储模块中的所述多个数据集,以及在恢复场景中执行对应于所述第三存储模块中的所述请求的操作。
本文所提及的控制模块可为处理器或所述数据存储设备的中央处理器单元,例如,用于提供数据集服务给多个请求设备或客户端的任意类型的计算机。所述第一存储模块可为非永久性存储,第二存储模块可为永久性存储,例如,硬盘或任何其它类型的永久性存储单元。所述缓冲区包含请求表项和重做日志的所有列表。数据集可涉及包括至少一个键值表项的分条。
控制单元可用于分配所述缓冲区和所述第三存储模块之间的直接关联。例如,所述缓冲区可映射到所述第三存储模块,从而分配所述缓冲区与所述第三存储模块的直接每字节(byte-for-byte)关联等。为了将所述缓冲区映射到所述第三存储模块,可使用所述数据存储设备的操作系统的适当函数,例如,Unix系统的mmap()函数。特别地,映射的或内存映射的段可为存储模块的内存段,所述内存段可通过指针或文件描述符直接引用。然后,另一功能单元,例如所述数据存储设备的任一所述模块,可使用这种每字节关联,就好像其是各个所述模块的内存段一样。将所述缓冲区保存到所述第三存储模块可通过系统调用等方式进行。
在恢复场景中,重放未处理或未执行的已存储请求。例如,在发生故障以及所述第一存储模块随后从所述第二存储模块中恢复的情况下,在所述第一存储模块上执行(=重放)存储在所述第三存储模块中的请求,以便在发生所述故障或系统崩溃时初始化数据。
所述第二存储模块包含检查点,所述检查点已在上文描述,所述第三存储模块包含重做日志文件。所述缓冲区包含映射到所述文件的所述重做日志。所述存储模块和所述缓冲区可为一个和相同物理内存设备的分区。
所述第二存储模块可用于在预定时间包含所述多个数据集的一致状态的永久性副本,所述永久性副本来自所述第一存储模块。所述控制模块可用于分配所述缓冲区与所述第三存储模块的直接关联。
这种数据存储设备使请求缓冲区用于更新所述第三存储模块的内容。特别地,相同的存储单元用于所述请求和日志表项,使得所述重做日志未被写入单独的存储单元。因此,不再要求单独重做日志的写操作。
根据本发明的一实施例,所述第二存储模块用于在多个预定时间点包含所述多个数据集的一致状态的永久性副本,所述永久性副本来自所述第一存储模块。
所述永久性副本可在周期性重复的时间点创建,所述永久性副本之间具有恒定或变化的时间差。所述第二存储模块仅包含一个副本,所述副本在每次进行更新过程时被替换为新副本,或者所述第二存储模块可包含来自最近N个更新过程的一个以上副本,其中,N可为常量,最老的副本被覆盖。
根据本发明的又一实施例,所述控制模块用于接收对将在所述第一存储模块中的所述多个数据集上执行的操作的请求,执行所述接收的请求以及在多个后续预定时间点将所述第一存储模块中的所述多个数据集复制到所述第二存储模块。
所述第一存储模块中的所述多个数据集可周期性地和反复地复制到所述第二存储模块,后续复制过程之间具有恒定或变化的时间差。
根据本发明的又一实施例,所述缓冲区为循环缓冲区。
因此,所述请求表项从任意偏移开始被写入所述缓冲区中并环绕所述缓冲区的开始。所述缓冲区的大小可限为预定值。
根据本发明的又一实施例,所述缓冲区用于使用相同的缓冲区单元添加所述接收的对将在所述第一存储模块上执行的操作的请求以及更新所述第三存储模块。
因此,保存所述日志文件不需要所述缓冲区中的任何副本,因为所述缓冲区中的所述相同单元用于请求表项和日志表项。
根据本发明的又一实施例,所述控制模块用于标记对所述在所述第一存储模块中的所述数据集上执行的操作的请求,所述请求已用于更新所述第三存储模块。
可通过将指针指向包含请求的存储单元或逻辑内存位置或通过使用标识一个请求的标签来标记请求,所述使用标签标识一个请求已经在磁盘上执行。
因此,已被写入或已被用于更新所述第三存储模块的所述请求表项可在环形缓冲区中被覆盖。未被标记的请求表项不能被覆盖,因为更新所述第二存储模块需要这些表项。
根据本发明的又一实施例,所述控制模块用于反复更新所述第二存储模块中的所述数据集。
因此,可调整连续的更新过程之间的周期,使得所述缓冲区的大小和更新所述第二存储模块所需的时间可优化,具体而言是减少。此外,可考虑所述第二存储模块的更新速度,特别是当由于磁盘等永久性存储器上的物理写操作导致所述第二存储模块上的写操作很耗时的时候。
根据本发明的又一实施例,所述控制模块用于验证所述第二存储模块中的所述数据集的更新是否成功,以及在所述更新不成功的情况下,不将各个请求标记为已在所述第二存储模块中更新。
换言之,只有已更新到所述第二存储模块中的那些请求表项被标记为已更新,否则,那些请求在后续更新步骤中更新。
根据本发明的又一实施例,所述数据存储设备用于仅更新所述第二存储模块中的那些数据集,所述第一存储模块中的操作已在所述数据集上执行。也就是说,仅更新所述第二存储模块中的那些数据集,其已为所述第一存储模块中的操作的客体。
本实施例涉及增量更新并可减少开销,因为只有内存中已改变的数据集在磁盘上更新。
根据本发明的又一实施例,所述第一存储模块是非永久性存储模块。
所述第一存储模块可为例如随机存取存储器(random access memory,RAM),用于存储内存数据库以及向请求设备提供对所述数据库的访问。
在本实施例中,所述第一存储模块实现有效的读/写操作并因此提升系统性能,所述第一存储模块为非永久性存储模块。
根据本发明的又一实施例,所述第三存储模块为永久性存储模块,例如,硬盘或固磁盘或任何其它类型的永久性存储设备。
在本实施例中,所述第三存储模块与所述第一存储模块中的所述数据集的修改一起更新。由于磁盘驱动器上的操作时长高于RAM上的操作时长,所以这种系统在数据安全性和高效性两方面进行优化。
根据本发明的又一实施例,所述第一存储模块用于将所述多个数据集分配给多个数据集组,其中所述数据存储设备包括多个缓冲区,以及所述多个缓冲区的每一个都分别被分配给一个数据集组。
换言之,所述第一存储模块包含内存数据库。在本实施例中,每个数据集组或分区已被分配给一个缓冲区,这样,可为所述多个数据集组中的每一个单独执行请求、记录请求以及更新。
根据本发明的又一实施例,所述数据存储设备用于基于所述第二存储模块的所述数据集和所述第三存储模块中包含的所述请求恢复所述第一存储模块中的所述多个数据集。
这样,实现了系统故障之后的恢复。
根据本发明的又一实施例,只有包含在所述第三存储模块中的那些请求被应用到所述第一存储模块中的所述数据集,所述请求还未更新到所述第二存储模块中。
换言之,如本文描述的所述数据存储设备提出一种重做日志设计的技术,由此,对事务处理的干扰减少,需要文件系统提供的支持减少,从而在磁盘上获取更多的重做日志表项。可利用特别的线程模型,所述线程模型应用事务执行和日志处理之间的关注点分隔原则。通过这样做,可获得显著的重做日志处理效率。
所述数据存储设备的一个方面可描述为利用工作线程与通信线程之间的解耦,所述工作线程在键值存储中执行请求,所述通信线程将请求缓冲区传给所述工作线程。由于所述请求缓冲区用于包含请求说明,并且需要将所述说明正确地保存到所述重做日志中,所以描述了一种方法,所述方法将所述请求说明直接读取到重做日志表项中,然后将引用传给那个表项以执行。此外,通过使用内存映射文件放置所述重做日志表项,实现了沿整个处理路径的真正的零复制设计。
这样,该方法消除了对复制请求说明用于执行、重做日志和文件输出的需求。因此,使用了一种真正的零复制请求说明设计。此外,可最小化通过重做日志处理施加于所述工作线程上的所述干扰,并且私有化多个重做日志表项的重做日志页面,从而最小化与所谓空闲列表(FreeList)的同步。所述空闲列表是具有以下可配置大小的列表:其定义了可能由于系统故障而丢失的重做表项的最大数量,并且其定义了同步系统调用的频率。
上述方法可利用内存映射的文件API进行文件刷新,因此仅要求最低的文件系统开销并可利用失败原子(failure-atomic)msync()支持以提供故障无关一致性保证。
通过将这些属性相结合,所描述的重做日志方法可特别具有低开销并且可为高效率的,从而实现在更短的时间内处理更多的请求以及存储更完整的日志。
附图说明
本发明的是实施例将结合以下附图进行描述,其中:
图1示意性地示出了根据本发明的示例性实施例的连接到多个请求设备的数据存储设备;
图2示意性地示出了根据本发明的示例性实施例的数据存储设备的键值存储线程模型;
图3示意性地示出了根据本发明的示例性实施例的数据存储设备的重做日志文件;
图4示意性地示出了根据本发明的示例性实施例的通信线程,每个通信线程都具有其私有的重做日志;
图5示意性地示出了根据本发明的示例性实施例的数据存储设备中的记录器单元的处理;
图6示意性地示出了根据本发明的示例性实施例的数据存储设备中的通信单元的处理。
具体实施方式
图1所示为具有控制模块100、第一存储模块110、第二存储模块120、第三存储模块125和缓冲区130的数据存储设备10,其中数据存储设备10可通信地连接至一个或多个请求设备20,请求设备20可称为客户端。数据存储设备还可称为服务器。
控制模块100、存储模块110、120、125和缓冲区用于执行如在上文和下文中描述的功能。
图2所示为常用键值存储线程模型200,其可由数据存储设备10使用以处理来自请求设备20的数据请求和管理存储在存储模块中的数据。存储布局抽象221向多个数据分区222指定分条224的集合,每个分条代表键值存储中定义的某个表格的行的聚合。键值存储操作处理分为前端(Front End,FE)210和后端(Back End,BE)220。一组工作队列218是FE210和BE 220之间的主接口,每个工作队列218包括一对操作请求队列和其响应队列。每个队列与一个BE工作线程相关联。
FE 210包括一组通信线程212和解复用器216。解复用器216用于解析请求以及确定将请求加入到的特定队列。优选地,FE 210还包括范围阵列217,其用于关联每个工作队列218的分条的不相交(子)集合并且用于解复用。通信线程212读取通信接口获取请求,使用解复用器216确定目标队列,以及将请求发布到请求队列中。在反方向中,通信线程读取响应队列以及将响应传送给关联的接口214。
BE 220包括一组工作线程,对于每个线程,对应的一组分条224可来自不同的表格,称为分区222。将所有分条分布到分区以及将线程重分配给分区确定了分区。
优选地,BE 220包括监管器219,其用于更新范围阵列以在队列间重分配请求,以便更好地适应所感知的负载。
工作线程将请求从其请求队列中移除,在该请求的分区中的分条之一上执行该请求,并将响应发布到其响应队列。
通信线程212读取一组网络接口214,接收事务请求,使用解复用器216确定目标队列,以及将请求发布到请求队列中。在反方向中,通信线程212读取响应队列,将响应传送给关联的接口214,以及将释放的请求/响应缓冲区返回至空闲列表。
通信线程212使用预分配请求/响应缓冲区的与工作队列相关联的空闲列表来避免复制请求的和响应的数据。这种想法还用于重做日志记录。即,由于请求缓冲区用于包含请求说明,并且说明被正确地保存到重做日志中,所以出于这两个目的设计了一种重用说明的方法,通过使用内存映射的文件,实现了真正的零复制设计。
图3示出了按时间的重做日志文件300的内容。垂直箭头302、304、306代表所有修改请求的记录,这些修改请求在箭头的标签上指定的时间之间发生,即,分别在两个后续时间点t0、t1、t2、t3之间。
在t0,获取t0状态的快照并启动重做日志。在t1,t0的检查点成功,重做t0至t1可行。在t2,t1的检查点失败,因此重做日志需要包含t0至t2的所有表项。
在t3,t2的检查点成功,因此在t3,清除重做日志以包含仅来自t2至t3的表项。
图3示出了点检验和跨多个连续检查点间隔312、314、316、318的重做日志处理的示例,以便描述重做日志记录和点检验之间的逻辑关系。
描绘了连续修改一组内存驻留对象的一组线程(从左至右彼此对齐并通过垂直虚线指示)。在检查点时间,获取内存内容320的一致快照,快照中的对象322、324、326、328被刷新到磁盘中,即,刷新到第二存储模块120中,对象322、324、326、328相对于最近的成功检查点修改,被称为变化集。内存内容320存储在第一存储模块110中。
如果最近的检查点(t[n-1])没有成功,则统一(合并)当前(tn)和最近检查点(t[n-1])的变化集。可使用不同的方法检测和管理变化集。
逻辑重做日志提供了对数据集的修改操作请求的一致记录,这些请求稍后在点检验时在变化集中获取。因此,重做日志文件相对于最近的成功检查点间隔时间启动和清除。
数据存储设备10的零复制重做日志记录方法实现了最小的文件系统开销。该方法定义了记录器单元和通信线程,记录器单元管理记录器线程,通信线程用于执行数据存储设备10的控制单元110的功能并将参照下面的附图说明。
图4所示为两种线程之间的交互和/或通信。通信通过上述空闲列表410发生。记录器线程将页面置于空闲列表中,通信线程从空闲列表中读取页面。
内存映射文件420用于保存重做日志,重做日志具有所需最大大小,并且具有足以支持已配置数量的检查点故障的若干表项。文件中的日志是日志从任意偏移开始并环绕文件开始的“循环”表示。第一逻辑表项的偏移保存在对应的检查点文件中。不同的重做日志文件可置于不同的磁盘上。
文件的地址空间被分割为重做页面(一个重做页面可为多个操作系统(operatingsystem,OS)页面),并且空间被划分为已保存页面(SavedPages)和可用页面(AvailablePages)地址范围。已保存页面表示保存主动重做日志表项的范围。可用页面是可用于存储随后的重做表项的页面。重做页面的空闲列表包括通信线程可分配和私有化的页面,空闲列表映射在可用页面中。空闲列表的大小确定了在系统崩溃情况下预计丢失的数据量。当空闲列表耗尽时,通信线程循环等待,直到其补足。
重做页面的未决列表(PendingList)430包含正等待被记录器线程处理的页面的列表。如果未决列表中的页面仅部分填充,那么记录器线程可将所有重做日志表项组合到其将实际保存的少量页面中。记录器线程通过同步的msync()系统调用保存未决列表中的页面。当msync()在页面上完成时,其地址被添加到已保存页面中;记录器从可用页面中获取新页面并将该页面置于空闲列表中。
接收更新事务之后,通信线程使用其(从记录器单元的空闲列表分配的)私有重做页面,在页面中以当前偏移格式化重做表项,并将事务的参数从网络接口读入重做表项中。然后,其将指针存储到请求/响应缓冲区中的重做表项中,并将请求缓冲区推送到请求队列中。
当请求到达工作线程时,线程读取重做表项,执行重做表项,并将响应状态存储到重做表项中。由于通信线程服务所有可能的工作线程,所以可能存在不同线程更新相同行的场景,例如,在重计算工作线程到分区的关联。这样,相同行上的更新可出现在不同的重做日志文件中。因此,工作线程将该行的事务编号的排序计数插入重做日志表项中。
当页面满时,或已配置的重做日志刷新间隔Tr过期时,通信线程验证相关工作线程已处理它们在页面中的重做日志表项。线程可读取相关工作线程在页面中的最后表项以用于其完成状态。然后,通信线程对未决列表430上的页面进行排队并从空闲列表410分配新页面。配置Tr间隔,使得在低工作负载更新率的场景中,记录器线程按时保存未决列表,而通信线程不需要等待空闲列表补充。
通信和记录器线程可轮询检查点进程的开始和结束。在检查点的开始,通信线程将页面中的特殊标记添加到新检查点的重做日志表项之前。该标记的偏移保存在对应的检查点文件中。记录器线程将已保存页面中的对应于最近检查点覆盖的重做日志表项的页面移动到可用页面中,记录器线程检测最近检查点的成功完成。
发生系统故障后,恢复进程使用最近的永久性检查点初始化内存状态,以及使用重放流程重放重做日志以在故障时间之前的点处重创建应用状态。重放流程从检查点文件中保存的偏移并行扫描重做日志文件,并将重做表项中指定的事务应用到内存数据库状态。
由于行重做表项可能分散在多个文件,所以重放流程可保持行的线程化二叉树以吸纳遇到的无序表项。当遇到按顺序的下一重做表项时,其立即被处理,之后,处理树中的所有随后表项。
空闲列表410和内存映射文件420特别指向相同的物理内存地址,从而无需额外的重做日志副本。
图5和6所示为运作的键值存储中的重做日志设计的实施方式。在这些图中,未决列表是重做日志页面的列表,可用页面和已保存页面是如参照图4所描述的内存映射文件的地址空间。
图5所示为记录器线程的流程图。当非空从列表中移除页面并通过msync()等同步系统调用来保存该页面时,线程等待未决列表。
在步骤510,如果存在重做页面,则从未决列表中获取下一重做页面,通过分支520指示。随后,同步重做页面,步骤530,并将重做页面加入已保存页面,540。在步骤550,从可用页面分配新页面,直到没有进一步可用的页面,560。在步骤570,将新页面插入空闲列表中,以及根据最近检查点是否已完成580,将已保存页面返回至可用页面590,或从未决列表中获取下一重做页面510。
图6所示为通信线程的流程图。通信线程私有化来自空闲列表的重做日志页面。该页面提供足够的重做日志空间,从而无需频繁的页面分配。通过使重做日志表项中具有所需空间,线程读取页面中的更新操作请求,将该表项作为对应工作线程的最近表项记住。空间耗尽或Tr计时器过期时,通信线程验证页面中的所有最近表项都已被读取。然后,线程将页面加入未决列表并前进到循环的开始。
换言之,在步骤610,从空闲列表获取页面,直到所有页面都被获取,620。将接口读入页面中的重做日志表项中,指针穿过缓冲区,630。此外,在步骤630,将各个表项作为工作线程的最近表项记住。在新检查点的情况下,导出偏移。重复这样做,直到页面中没有空间可用或Tr过期,640。在步骤650,通信线程验证页面的最近表项已被读取并将页面加入未决列表,660。
Claims (14)
1.一种数据存储设备(10),其特征在于,包括:
控制模块(100);
第一存储模块(110);
第二存储模块(120);
第三存储模块(125);以及
缓冲区(130);
其中所述第一存储模块(110)用于存储多个数据集;
所述控制模块(100)用于接收对将在所述第一存储模块(110)中的所述多个数据集上执行的操作的请求,执行所述接收的请求以及在预定时间将所述第一存储模块(120)中的所述多个数据集复制到所述第二存储模块(120);
所述控制模块用于将所述接收的对操作的请求添加到所述缓冲区(130)中;
所述控制模块用于通过同步方法将所述缓冲区(130)保存到所述第三存储模块(125)中;
所述数据存储设备用于从所述第二存储模块(120)中初始化所述第一存储模块(110)中的所述多个数据集,以及在恢复场景中执行对应于所述第三存储模块(125)中的所述请求的操作。
2.根据权利要求1所述的数据存储设备,其特征在于:
所述第二存储模块(120)用于在多个预定时间点包含所述多个数据集的一致状态的永久性副本,所述永久性副本来自所述第一存储模块(110)。
3.根据权利要求1或2所述的数据存储设备,其特征在于:
所述控制模块(100)用于接收对在将所述第一存储模块(110)中的所述多个数据集上执行的操作的请求,执行所述接收的请求以及在多个后续预定时间点将所述第一存储模块(120)中的所述多个数据集复制到所述第二存储模块(120)。
4.根据任一前述权利要求所述的数据存储设备,其特征在于:
所述缓冲区为循环缓冲区。
5.根据任一前述权利要求所述的数据存储设备,其特征在于:
所述缓冲区(130)用于使用相同的缓冲区单元添加所述接收的对将在所述第一存储模块(110)上执行的操作的请求以及更新所述第三存储模块(125)。
6.根据任一前述权利要求所述的数据存储设备,其特征在于:
所述控制模块(100)用于标记所述对在所述第一存储模块中的所述数据集上执行的操作的请求,所述请求已用于更新所述第三存储模块。
7.根据任一前述权利要求所述的数据存储设备,其特征在于:
所述控制模块(100)用于反复更新所述第二存储模块中的所述数据集。
8.根据任一前述权利要求所述的数据存储设备,其特征在于:
所述控制模块(100)用于验证所述第二存储模块中的所述数据集的更新是否成功,以及在所述更新不成功的情况下,不将所述各个请求标记为已在所述第二存储模块中更新。
9.根据任一前述权利要求所述的数据存储设备,其特征在于:
所述数据存储设备(10)用于仅更新所述第二存储模块中的那些数据集,所述第一存储模块中的操作已在所述数据集上执行。
10.根据任一前述权利要求所述的数据存储设备,其特征在于:
所述第一存储模块是非永久性存储模块。
11.根据任一前述权利要求所述的数据存储设备,其特征在于:
所述第三存储模块是永久性存储模块。
12.根据任一前述权利要求所述的数据存储设备,其特征在于:
所述第一存储模块(110)用于将所述多个数据集分配给多个数据集组;
所述数据存储设备包括多个缓冲区(130);
将所述多个缓冲区中的每一个分别分配给一个数据集组。
13.根据任一前述权利要求所述的数据存储设备,其特征在于:
所述数据存储设备用于基于所述第二存储模块的所述数据集和所述第三存储模块中包含的所述请求恢复所述第一存储模块中的所述多个数据集。
14.根据权利要求13所述的数据存储设备,其特征在于:
只有包含在所述第三存储模块中的那些请求被应用到所述第一存储模块中的所述数据集,所述请求还未更新到所述第二存储模块中。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
EP15162701.5A EP3079065B1 (en) | 2015-04-08 | 2015-04-08 | Redo-logging for partitioned in-memory datasets |
EP15162701.5 | 2015-04-08 | ||
PCT/EP2016/057437 WO2016162337A1 (en) | 2015-04-08 | 2016-04-05 | Redo-logging for partitioned in-memory datasets |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107438829A true CN107438829A (zh) | 2017-12-05 |
CN107438829B CN107438829B (zh) | 2019-11-22 |
Family
ID=52874966
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201680015875.6A Active CN107438829B (zh) | 2015-04-08 | 2016-04-05 | 一种数据存储设备 |
Country Status (6)
Country | Link |
---|---|
US (1) | US10095440B2 (zh) |
EP (1) | EP3079065B1 (zh) |
JP (1) | JP6432805B2 (zh) |
CN (1) | CN107438829B (zh) |
RU (1) | RU2654144C1 (zh) |
WO (1) | WO2016162337A1 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109522126A (zh) * | 2018-11-19 | 2019-03-26 | 中国人民解放军战略支援部队信息工程大学 | 面向共享内存多核结构中线程级并行的数据优化方法及装置 |
CN109901799A (zh) * | 2019-02-28 | 2019-06-18 | 新华三信息安全技术有限公司 | 一种日志读写方法及装置 |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9886363B2 (en) * | 2015-03-27 | 2018-02-06 | International Business Machines Corporation | Identification of storage performance shortfalls |
US9858151B1 (en) * | 2016-10-03 | 2018-01-02 | International Business Machines Corporation | Replaying processing of a restarted application |
US10810099B2 (en) | 2017-09-11 | 2020-10-20 | Internatinal Business Machines Corporation | Cognitive in-memory API logging |
US11474977B2 (en) | 2019-09-30 | 2022-10-18 | Dropbox, Inc. | Snapshot isolation in a distributed storage system |
CN111008050B (zh) * | 2019-12-06 | 2023-11-28 | 北京小米移动软件有限公司 | 页面任务执行方法、装置、终端及存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6490594B1 (en) * | 1997-04-04 | 2002-12-03 | Microsoft Corporation | Database computer system with application recovery and dependency handling write cache |
US20110252194A1 (en) * | 2008-11-17 | 2011-10-13 | Hitachi, Ltd | Storage control apparatus and storage control method |
US8676750B2 (en) * | 2010-02-22 | 2014-03-18 | International Business Machines Corporation | Efficient data synchronization in a distributed data recovery system |
CN104035729A (zh) * | 2014-05-22 | 2014-09-10 | 中国科学院计算技术研究所 | 一种日志映射的块设备精简配置方法 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB9307623D0 (en) * | 1993-04-13 | 1993-06-02 | Jonhig Ltd | Data writing to eeprom |
US5864849A (en) * | 1996-12-16 | 1999-01-26 | Lucent Technologies Inc. | System and method for restoring a multiple checkpointed database in view of loss of volatile memory |
US7577806B2 (en) * | 2003-09-23 | 2009-08-18 | Symantec Operating Corporation | Systems and methods for time dependent data storage and recovery |
US8099627B1 (en) * | 2005-06-28 | 2012-01-17 | Symantec Operating Corporation | Persistent images of distributed shared memory segments and in-memory checkpoints |
US7680767B2 (en) * | 2006-03-23 | 2010-03-16 | Microsoft Corporation | Mapping architecture with incremental view maintenance |
EP3079064B1 (en) | 2015-04-07 | 2017-11-29 | Huawei Technologies Co., Ltd. | Method and apparatus for tracking objects in a first memory |
EP3079060B1 (en) | 2015-04-08 | 2018-03-28 | Huawei Technologies Co., Ltd. | Load balancing for large in-memory databases |
-
2015
- 2015-04-08 EP EP15162701.5A patent/EP3079065B1/en active Active
-
2016
- 2016-04-05 WO PCT/EP2016/057437 patent/WO2016162337A1/en active Application Filing
- 2016-04-05 RU RU2017105519A patent/RU2654144C1/ru active
- 2016-04-05 CN CN201680015875.6A patent/CN107438829B/zh active Active
- 2016-04-05 JP JP2017506324A patent/JP6432805B2/ja active Active
-
2017
- 2017-01-19 US US15/410,522 patent/US10095440B2/en active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6490594B1 (en) * | 1997-04-04 | 2002-12-03 | Microsoft Corporation | Database computer system with application recovery and dependency handling write cache |
US20110252194A1 (en) * | 2008-11-17 | 2011-10-13 | Hitachi, Ltd | Storage control apparatus and storage control method |
US8676750B2 (en) * | 2010-02-22 | 2014-03-18 | International Business Machines Corporation | Efficient data synchronization in a distributed data recovery system |
CN104035729A (zh) * | 2014-05-22 | 2014-09-10 | 中国科学院计算技术研究所 | 一种日志映射的块设备精简配置方法 |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109522126A (zh) * | 2018-11-19 | 2019-03-26 | 中国人民解放军战略支援部队信息工程大学 | 面向共享内存多核结构中线程级并行的数据优化方法及装置 |
CN109522126B (zh) * | 2018-11-19 | 2020-04-24 | 中国人民解放军战略支援部队信息工程大学 | 面向共享内存多核结构中线程级并行的数据优化方法及装置 |
CN109901799A (zh) * | 2019-02-28 | 2019-06-18 | 新华三信息安全技术有限公司 | 一种日志读写方法及装置 |
CN109901799B (zh) * | 2019-02-28 | 2022-08-19 | 新华三信息安全技术有限公司 | 一种日志读写方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
EP3079065A1 (en) | 2016-10-12 |
RU2654144C1 (ru) | 2018-05-16 |
US20170131911A1 (en) | 2017-05-11 |
JP2017531231A (ja) | 2017-10-19 |
US10095440B2 (en) | 2018-10-09 |
CN107438829B (zh) | 2019-11-22 |
EP3079065B1 (en) | 2019-06-12 |
JP6432805B2 (ja) | 2018-12-05 |
WO2016162337A1 (en) | 2016-10-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107438829B (zh) | 一种数据存储设备 | |
WO2022063322A1 (en) | Hard drive migration method, distributed storage cluster system and storage medium | |
EP3117349B1 (en) | System and method for massively parallel processing database | |
CN103116596B (zh) | 在分布式数据库中执行快照隔离的系统和方法 | |
CN102831156B (zh) | 一种云计算平台上的分布式事务处理方法 | |
KR100926880B1 (ko) | Dbms에서의 데이터 복제 방법 및 시스템 | |
Sciascia et al. | Scalable deferred update replication | |
CN103092905B (zh) | 使用虚拟文件数据对象的列式数据库 | |
CA2578666C (en) | Method and system for load balancing a distributed database | |
US8527459B2 (en) | System and method for data replication between heterogeneous databases | |
CN108804112A (zh) | 一种区块链落账处理方法及系统 | |
EP0575067A2 (en) | Shared, distributed lock manager for loosely coupled processing systems | |
EP0420425A2 (en) | A data processing system and method for updating a database therein | |
CN104657158B (zh) | 一种业务系统中业务处理的方法和装置 | |
US20090063807A1 (en) | Data redistribution in shared nothing architecture | |
CN108292235A (zh) | 使用选择性资源迁移的网络附连存储器 | |
CN104346373A (zh) | 分区日志队列同步管理方法及设备 | |
CN109643310A (zh) | 用于数据库中数据重分布的系统和方法 | |
Srinivasan et al. | Citrusleaf: A real-time nosql db which preserves acid | |
CN103905512B (zh) | 一种数据处理方法和设备 | |
CA2619778C (en) | Method and apparatus for sequencing transactions globally in a distributed database cluster with collision monitoring | |
CN102339305A (zh) | 基于偏序关系日志的数据库集群故障恢复方法 | |
CN109376141A (zh) | 一种数据迁移方法和装置 | |
CN109791541A (zh) | 日志序列号生成方法、装置及可读存储介质 | |
CN106708948A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |