CN110928890B - 数据存储方法、装置、电子设备及计算机可读存储介质 - Google Patents
数据存储方法、装置、电子设备及计算机可读存储介质 Download PDFInfo
- Publication number
- CN110928890B CN110928890B CN201911088468.XA CN201911088468A CN110928890B CN 110928890 B CN110928890 B CN 110928890B CN 201911088468 A CN201911088468 A CN 201911088468A CN 110928890 B CN110928890 B CN 110928890B
- Authority
- CN
- China
- Prior art keywords
- data
- page
- log
- check code
- memory
- 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
Links
Images
Classifications
-
- 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/23—Updating
- G06F16/2365—Ensuring data consistency and integrity
-
- 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
- G06F16/219—Managing data history or versioning
-
- 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/23—Updating
- G06F16/2308—Concurrency control
- G06F16/2315—Optimistic concurrency control
- G06F16/2322—Optimistic concurrency control using timestamps
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Debugging And Monitoring (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请公开了一种数据存储方法、装置、电子设备及计算机可读存储介质,涉及数据存储领域。该方法应用于存储类存储器,所述存储类存储器包括内存和磁盘,该方法包括:当所述内存中有数据需要写入所述磁盘时,生成所述数据的日志文件以及对应的第一校验码;将所述数据写入所述磁盘的数据页中,更新所述数据页的第二校验码;当所述第一校验码与所述第二校验码不匹配时,获取所述数据页的页面时间戳,并根据所述页面时间戳从所述日志文件中获取所述页面时间戳对应的日志记录;根据所述页面时间戳对应的日志记录,更新所述数据页的数据。本申请通过校验码、日志以及检查点的机制不仅避免SCM中数据的乱序写和部分写,而且减小了对存储***性能的影响。
Description
技术领域
本申请涉及数据存储领域,更具体地,涉及一种数据存储方法、装置、电子设备及计算机可读存储介质。
背景技术
存储类存储器(storage class memory,SCM)作为一种新型存储设备可以像随机访问存储器(random access memory,RAM)一样接入内存时总线,CPU通过store与load指令直接访问SCM。但是,SCM的数据有可能发生部分写以及乱序写。
发明内容
本申请提出了一种数据存储方法、装置、电子设备及计算机可读存储介质,以改善上述缺陷。
第一方面,本申请实施例提供了一种数据存储方法,该方法包括:当内存中有数据需要写入磁盘时,生成数据的日志文件以及对应的第一校验码;将数据写入磁盘的数据页中,更新数据页的第二校验码;当第一校验码与第二校验码不匹配时,获取数据页的页面时间戳,并根据页面时间戳从日志文件中获取页面时间戳对应的日志记录;根据页面时间戳对应的日志记录,更新数据页的数据。
第二方面,本申请实施例还提供了数据存储装置,该装置包括:第一校验码生成模块、第二校验码更新模块、日志记录获取模块以及数据更新模块。其中,第一校验码生成模块用于当内存中有数据需要写入磁盘时,生成数据的日志文件以及对应的第一校验码;第二校验码更新模块用于将数据写入磁盘的数据页中,更新数据页的第二校验码;日志记录获取模块用于当第一校验码与第二校验码不匹配时,获取数据页的页面时间戳,并根据页面时间戳从日志文件中获取页面时间戳对应的日志记录;数据更新模块用于根据页面时间戳对应的日志记录,更新数据页的数据。
第三方面,本申请实施例还提供了一种电子设备,包括:一个或多个处理器;存储器;一个或多个应用程序,其中所述一个或多个应用程序被存储在所述存储器中并被配置为由所述一个或多个处理器执行,所述一个或多个程序配置用于执行上述方法。
第四方面,本申请实施例还提供了一种计算机可读存储介质,所述可读存储介质存储有处理器可执行的程序代码,所述程序代码中的多条指令被所述处理器执行时使所述处理器执行上述方法。
本申请提供的数据存储方法、装置、电子设备及计算机可读存储介质,通过当内存中有数据需要写入磁盘时,生成数据的日志文件以及对应的第一校验码;将数据写入磁盘的数据页中,更新数据页的第二校验码,从而可以根据第一校验码和第二校验码是否匹配,有效检测出数据是否部分写。通过当第一校验码与第二校验码不匹配时,获取数据页的页面时间戳,并根据页面时间戳从日志文件中获取页面时间戳对应的日志记录;根据页面时间戳对应的日志记录,更新数据页的数据,从而在检测到数据出现部分写时,能够根据时间戳准确地找到相应的日志记录对数据页进行更新,不仅避免了数据出现部分写的情况,而且通过日志的方式保证了数据的顺序写。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1示出了本申请实施例提供的一种内存存储层级示意图;
图2示出了本申请实施例提供的一种内存架构的示意图;
图3示出了本申请一实施例提供的一种数据存储方法的方法流程图;
图4示出了本申请另一实施例提供的一种数据存储方法的方法流程图;
图5示出了图4中S210的方法流程图;
图6示出了本申请又一实施例提供的一种数据存储方法的方法流程图;
图7示出了本申请一实施例提供的一种进行检查点操作的方法流程图;
图8示出了本申请一实施例提供的一种数据存储装置的结构框图;
图9示出了本申请另一实施例提供的一种数据存储装置的结构框图;
图10示出了本申请实施例提供的电子设备的结构框图;
图11示出了本申请实施例的用于保存或者携带实现根据本申请实施例的数据存储方法的程序代码的存储单元。
具体实施方式
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述。
随着存储类存储器(Storage Class Memory,SCM)在市场中的广泛应用,其受到的关注度也日益增加,这种新型的存储器兼具磁盘与内存的优点:支持CPU的load与store指令,也即是能够以字节的粒度寻址匹配内存的访问速度,因此SCM的I/O单位一般为一个cache line大小,即64B。SCM具有跟内存相同的读取速度,写延迟要比直接写内存高4-5倍左右。与RAM相比,SCM在断电以后数据不丢失。但是SCM也带来许多挑战,例如SCM在顺序写以及部分写的方面还存在一定问题。
作为一种示例,请参阅图1,图1示出了一种内存存储层级示意图,如图1所示,一方面,SCM存储器接入内存总线,另一方面,CPU通过内存控制器直接寻址SCM存储空间。由于从CPU寄存器到SCM存储的路径较长且这些存储介质是易失性的,因此在断电以后存储器数据丢失,导致数据的部分写。另外,目标使用的相关软件对store buffer,L1,L2高速缓存的控制力度很小。因此,内存store指令需要被显示声明以及持久化才能保证一致性。例如,Intel的x86处理器系列提供了clflush,mfence,sfence等指令将高速缓存的数据写入SCM以保证数据的持久与顺序。未来的平台也准备支持优化的clflush指令,即clflushopt和clwb。clflush指令将一个高速缓存单元(cache line)写回内存,这是一个同步指令,不需要内存栅栏(mfence)来串行化指令。sfence用来保证串行化所有挂起的store指令,即保证该指令之前的store指令与之后的store是按照sfence的划分的顺序执行(mfence针对load与store指令都有效)。clflushopt是异步版本的clflush;clwb将高速缓存单元cache line写回内存,但是不清空,有利于后面的读,并且该指令也是不保证写顺序的。
发明人在研究中发现,基于上述指令的作用,如果要保证写顺序,一个clwb指令需要与两个sfence指令配合执行,然而,这些指令需要访问内存以及串行化,对存储***的性能和开销影响很大。
因此,为了解决上述问题,发明人提出了一种数据存储方法、装置、电子设备及计算机可读存储介质,通过校验码、日志以及检查点的机制不仅避免SCM中数据的乱序写和部分写,而且相比于采用mfence,clflush等指令保证顺序,有效减小了对存储***的性能和开销的影响。
请参阅图2,示出了一种内存架构,如图2所示,该架构包括中央处理器(CentralProcessing Unit,CPU)、缓存(cache memory)、内存(RAM-main memory)以及磁盘。其中,图1仅示出了一个CPU,当设备是多核的时候,可以包括多个CPU,则每个CPU通过自己的缓存与内存连接。每个CUP执行一个线程,并且多个CPU可以同时执行任务,即并发执行。每个CPU都有自己的寄存器,CPU在寄存器上执行一些操作,并且在寄存器上执行操作的速度,远远大于在主内存中。通常情况下,当CPU需要读取内存的时候,会将部分数据读到,并放入CPU的缓存中,甚至可以将CPU缓存中的部分数据读到寄存器中,然后在寄存器中操作,操作完成后,需要将数据写入主存中的时候,先将数据刷新至CPU缓存中,然后在某个时间点将数据刷新到内存中。当CPU需要在缓存层存放一些东西的时候,存放在缓存中的内容通常会被刷新回内存。CPU缓存可以在某一时刻将数据局部写到它的内存中,也可以在某一时刻局部刷新它的内存。其中,CPU需要再磁盘中写入数据时,需要将经过内存。
请参阅图3,图3示本申请实施例提供的一种数据存储方法的流程示意图,其中,该方法可以应用于上述存储类存储器,该存储类存储器可以包括内存和磁盘,其中,该方法的执行主体可以是存储类存储器中的控制器,如图3所示,该方法可以包括:S110至S140。
S110:当内存中有数据需要写入磁盘时,生成数据的日志文件以及对应的第一校验码。
在一些实施方式中,在将存储类存储器的内存中的数据写入磁盘之前,存储类存储器的控制器可以将本次数据写入磁盘的事件映射成事件代码,然后记录下本次事件的发生时间,再将本次时间的发生时间和时间代码组织成本次事件的日志记录,然后将日志记录存储至日志文件中,即可生成该数据的日志文件。
另外,在生成该数据的日志文件时,可以基于该数据生成第一校验码,作为该日志文件对应的校验码。
可选地,第一校验码可以是总和检验码(Checksum)。其中,总和检验码通常用于保证数据的完整性和准确性。可选地,磁盘也可以换做其他的存储介质,如固态硬盘(SolidState Disk或Solid State Drive,SSD)等,在此不做限定。
S120:将数据写入磁盘的数据页中,更新数据页的第二校验码。
将数据写入到磁盘的数据页中时,数据页对应的数据得到更新,同时基于写入到磁盘的中的数据更新该数据页的第二校验码。作为一种实施方式,第二校验码与第一校验码的类型一致,同为总和检验码。其中,数据页是包含已经添加到数据库的表中的用户数据的结构,作为一种示例,在内存中可以将数据页当作一个包含1024个64位整数的数组,而对于数据页的结构,通常可以包括file header文件头部:用于描述页的基本信息,比如页号,页类型,上页下页信息等,page header页面头部:用于存储数据页中存储记录的状态值,比如页目录中槽数量,本页的记录数量等。user records用户数据:用于存储记录,为更好的管理记录。
在一些实施方式中,第二校验码在更新后可以保存到该数据页的页面头部。
S130:当第一校验码与第二校验码不匹配时,获取数据页的页面时间戳,并根据页面时间戳从日志文件中获取页面时间戳对应的日志记录。
当需要判断数据是否完整、准确地写入到磁盘中时,可以从磁盘中读取数据页到内存中,并计算出读取出来的数据页的校验码以得到第二校验码。其中,第一检验码对应一个checksum值,第二校验码也对应了一个checksum值,然后可以将第一校验码的checksum值与第二校验码的checksum值进行比对。若第一校验码的checksum值和第二校验码的checksum值一致,表明第一校验码和第二校验码相匹配,也可以说明数据页没有受损,数据页中的数据也是完整的,可以将该数据页标记为正常数据页。
若第一校验码的checksum值和第二校验码的checksum值不一致,则表明数据页受损,则需要从存储类存储器的备份中获取相应的数据页,从相应的数据页中获取页面时间戳(Page time stamp,PTS)。然后可根据页面时间戳从日志文件中找出与该页面时间戳对应的日志记录。其中,页面时间戳可以是在数据页更新时记录的一个更新时间。
S140:根据页面时间戳对应的日志记录,更新数据页的数据。
然后从与该页面时间戳对应的日志记录开始,将数据页按照日志记录一直更新到该数据页当前最新的数据版本,以对数据页的数据进行更新,更新后的数据页中数据即为完整的数据。在本实施例中,通过当内存中有数据需要写入磁盘时,生成数据的日志文件以及对应的第一校验码;将数据写入磁盘的数据页中,更新数据页的第二校验码,可以根据第一校验码和第二校验码是否匹配,其中,当第一校验码和第二校验码为一致时,可以确定第一校验码和第二校验码相匹配,有效检测出数据是否部分写。通过当第一校验码与第二校验码不匹配时,获取数据页的页面时间戳,并根据页面时间戳从日志文件中获取页面时间戳对应的日志记录;根据页面时间戳对应的日志记录,更新数据页的数据,从而在检测到数据出现部分写时,能够根据时间戳准确地找到相应的日志记录对数据页进行更新,不仅避免了数据出现部分写的情况,而且由于采用日志的方式对数据写入磁盘的事件进行记录,可以使写操作能够如实地在SCM上按照原来的顺序执行,从而保证数据的顺序写。
请参阅图4,图4示本申请实施例提供的一种数据存储方法的流程示意图,该方法可以包括:S210至S270
S210:当内存中有数据需要写入磁盘时,生成数据的日志文件以及对应的第一校验码。
在一些实施方式中,如图5所示,S210,可以包括:S211至S212。
S211:在内存的缓冲区中构造数据的日志记录。
在一些实施方式中,在构造日志记录时,可以使日志记录包括日志标签和日志块,日志块用于存放事务提交到日志区的缓冲区内容,日志标签用于描述日志记录的相关信息。例如,日志标签包括日志记录对应的磁盘块号、日志记录有效标志和元数据标志位等。
考虑到数据存储时,可能会出现数据页的数据更新不到位的情况,在一些实施方式中,当在内存的缓冲区中构造数据的日志记录时,生成与日志记录对应的日志时间戳(Log time stamp,LTS),其中,日志时间戳可以表示日志记录在构建时记录的一个构建时间,也可以表示一份日志记录在某个特定时间之前是已经存在的、完整的、可验证的。具体地,每构造一个日志记录时,都对应生成一个日志时戳,因此,每一个日志记录对应了一个日志时间戳。在本实施方式中,通过将每个日志记录对应一个日志时间戳,可以方便根据日志时间戳确定数据页的数据是否出现更新不到位的情况。
S212:基于日志记录生成日志文件以及对应的第一校验码。
S220:将数据写入磁盘的数据页中,更新数据页的第二校验码。
其中,S220的具体实施方式可参阅S120,故不在在此赘述。
S230:判断第一校验码与第二校验码是否匹配。
S240:当第一校验码与第二校验码不匹配时,获取数据页的页面时间戳,并根据页面时间戳从日志文件中获取页面时间戳对应的日志记录。
其中,S240的具体实施方式可参阅S130,故不在在此赘述。
S250:根据页面时间戳对应的日志记录,更新数据页的数据。
其中,S250的具体实施方式可参阅S140,故不在在此赘述。
考虑到数据存储时,可能出现数据页损坏,在一些实施方式中,当根据页面时间戳对应的日志记录,更新数据页的数据时,可以生成与数据页对应的页面时间戳。具体地,可以将数据页对应一个页面时间戳,每次对该数据页的更新都会触发对该页面时间戳的更新。在本实施方式中,通过在数据页更新时生成与数据页对应的页面时间戳,可以方便后续在页面损坏时根据页面时间戳从备份中找出相应的数据页。
S260:当第一校验码与第二校验码匹配时,则判断日志时间戳是否等于页面时间戳。
当第一校验码与第二校验码匹配时,则表明数据页并没有损坏,此时还需要进一步确定当前数据页的时间戳是否是最新的,以确保数据页的数据是否更新正常。因此可以通过判断日志时间戳是否等于页面时间戳,来确定当前数据页的时间戳是否是最新的。
S270:当日志时间戳等于页面时间戳时,则确定数据页的数据更新正常。
当日志时间戳等于页面时间戳时,则确定当前数据页的时间戳是最新的,也可以确定数据页的数据更新正常,此时,该数据页可以直接使用。可选地,数据页可以为512字节倍数的数据页,从而可以方便具有SCM的存储***将其内存单元与SCM对数据页进行有效组织。
在本实施例中,通过在第一校验码与第二校验码匹配时,判断日志时间戳是否等于页面时间戳,从而可以有效确定数据页的数据的更新情况是否与日志记录构建情况一致,当日志时间戳等于页面时间戳时,则可以确定前数据页的数据是否与对应的日志记录同步,进而确定当前数据页的时间戳是最新的,故此时的数据页可以直接使用,从而保证了数据页的数据正常更新。
请参阅图6,图6示本申请实施例提供的又一种数据存储方法的流程示意图,该方法可以包括:S310-S390。
S310:当内存中有数据需要写入磁盘时,生成数据的日志文件以及对应的第一校验码。
S320:将数据写入磁盘的数据页中,更新数据页的第二校验码。
S330:判断第一校验码与第二校验码是否匹配。
S340:当第一校验码与第二校验码不匹配时,获取数据页的页面时间戳,并根据页面时间戳从日志文件中获取页面时间戳对应的日志记录。
S350:根据页面时间戳对应的日志记录,更新数据页的数据。
S360,当第一校验码与第二校验码匹配时,判断判断日志时间戳是否等于页面时间戳。
S370:当日志时间戳等于页面时间戳,则确定数据页的数据更新正常。
其中,S310-S370的具体实施方式可以参阅S210-S270,故不在此赘述。
S380:当日志时间戳不等于页面时间戳,从多个预设的检查点中找出距离数据页最近的检查点,得到检查点对应的日志记录。
作为一种示例,每个预设的检查点对应了一个时刻,然后可以根据数据页的页面时间戳和每个预设检查点的时刻找出离页面时间戳时间最接近的检查点。
其中,检查点一般用于数据库恢复,通常在日志文件中增加一类新的记录,检查点记录(checkpoint),增加一个重新开始文件,并让恢复子***在登录日志文件期间动态地维护日志。由于利用日志技术进行数据库恢复时,需要检查所有日志记录,这会耗费大量的时间。若利用检查点进行恢复,可以直接对最新的检查点之后的数据进行恢复即可,可以有效节省时间。
当日志时间戳不等于页面时间戳时,通常是因为数据页的数据更新出现延迟,或者数据没有更新到位,从而没有与日志时间戳同步,此时的日志时间戳通常会大于数据页的页面时间戳。因此需要对数据页的数据进行恢复,以重新使数据页的页面时间戳与日志记录的日志时间戳保持同步。
在一些实施方式中,可以通过日志文件中预先写入的检查点对数据页进行数据恢复。具体地,可以从多个预设的检查点中找出距离数据页最近的检查点,也即是当前最新的检查点,然后从最新的检查点开始对该检查点之后的日志文件进行扫描,以从日志文件中获得与该检查点对应的日志记录。
S390:根据检查点对应的日志记录,更新数据页的数据。
根据检查点对应的日志记录,更新数据页的数据,以恢复数据页在最新的检查点之后的数据。从而保证更新后的数据页的页面时间戳能与最新的日志时间戳保持一致,进而确保数据页的数据更新正常。
在一些实施方式中,在从多个预设的检查点中找出距离数据页最近的检查点之前,如图7所示,进行检查点操作的方法可以是,可以先将预设的检查点写入到日志文件中,其具体的写入过程可以包括如下步骤:
S301:在日志文件中写入多个预设的检查点。
在一些实施方式中,在向日志文件中写入多个预设检查点时,可以是每隔一段时间就进行一次检查点操作,因此在日志文件中每间隔一段时间的得到一个检查点。在本实施方式通过每隔一段时间做一次检查点操作可以保证后续利用检查点做数据恢复时,能方便找到合适的检查点,不至于找出的与数据页最近的检查点还是与数据页相差太远。
需要说明的是,进行检查点操作的目的是为了把修改的数据页写回到磁盘时,在日志文件中对应的日志记录写下检查点,以方便后续的数据库能基于检查点进行恢复。可选地,在日志记录写下检查点的同时,可以将该检查点对应的修改数据页进行删除。
在一些实施方式中,可以在每当把修改的数据页写回到磁盘或者其他存储介质(如SSD)中时,就进行一次检查点操作。在本实施方式中,通过每次把修改的数据页写回到磁盘中时,就进行一次检查点操作,可以保证每次进行检查点操作后得到的检查点对应的数据页都发生了改变,从而保证了检查点的有效性。
S302;获取每个预设检查点写入日志文件中的地址。
S303:在地址写入重新开始文件,其中,重新开始文件用于将日志文件回放到与预设检查点对应的日志记录。
在本实施方式中,通过在数据存储时进行检查点操作可以方便后续对日志文件进行维护。
在本实施例中,通过在确定日志时间戳和数据页时间戳不一致时,利用检查点对数据页的数据进行数据恢复。从而保证更新后的数据页的页面时间戳能与最新的日志时间戳保持一致,进而确保数据页的数据更新正常。
请参阅图8,其示出了本申请实施例提供的一种数据存储装置400的结构框图,该装置400可以包括:第一校验码生成模块410、第二校验码更新模块420、日志记录获取模块430以及数据更新模块440。
第一校验码生成模块410用于当内存中有数据需要写入磁盘时,生成数据的日志文件以及对应的第一校验码。
第二校验码更新模块420用于将数据写入磁盘的数据页中,更新数据页的第二校验码。
日志记录获取模块430用于当第一校验码与第二校验码不匹配时,获取数据页的页面时间戳,并根据页面时间戳从日志文件中获取页面时间戳对应的日志记录。
数据更新模块440用于根据页面时间戳对应的日志记录,更新数据页的数据。
请参阅图9,其示出了本申请实施例提供的另一种数据存储装置的结构框图,该装置在图8中存储装置400的基础上,还可以包括:
时间戳获取模块450,用于当第一校验码与第二校验码匹配时,获取数据页的页面时间戳以及日志记录的日志时间戳。
时间戳判断模块460,用于判断日志时间戳是否等于页面时间戳。
更新结果确定模块470,用于当日志时间戳等于页面时间戳时,则确定数据页的数据更新正常。
进一步地,该数据更新模块440还用于:检查点搜寻模块,用于当日志时间戳不等于页面时间戳时,从多个预设的检查点中找出距离数据页最近的检查点,得到检查点对应的日志记录;根据检查点对应的日志记录,更新数据页的数据。
进一步地,该数据存储装置400还可以包括:检查点设置模块,用于在日志文件中写入多个预设的检查点;获取每个预设检查点写入日志文件中的地址;在地址写入重新开始文件,其中,重新开始文件用于将日志文件回放到与预设检查点对应的日志记录。
进一步地,该数据存储装置400还包括:页面时间戳生成模块,用于当基于日志记录更新数据页的数据时,生成与数据页对应的页面时间戳。
进一步地,第一校验码生成模块410,用于在内存的缓冲区中构造数据的日志记录;基于日志记录生成日志文件以及对应的第一校验码。
进一步地,该数据存储装置400还包括:日志时间戳生成模块,用于当在内存的缓冲区中构造数据的日志记录时,生成与日志记录对应的日志时间戳。
进一步地,数据页为512字节倍数的数据页。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述装置和模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,模块相互之间的耦合可以是电性,机械或其它形式的耦合。
另外,在本申请各个实施例中的各功能模块可以集成在一个处理模块中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。
请参考图10,其示出了本申请实施例提供的一种电子设备的结构框图。该电子设备500可以是智能手机、平板电脑、电子书等能够运行应用程序的电子设备。本申请中的电子设备500可以包括一个或多个如下部件:处理器510、存储器520、以及一个或多个应用程序,其中一个或多个应用程序可以被存储在存储器520中并被配置为由一个或多个处理器510执行,一个或多个程序配置用于执行如前述方法实施例所描述的方法。
处理器510可以包括一个或者多个处理核。处理器510利用各种接口和线路连接整个电子设备500内的各个部分,通过运行或执行存储在存储器520内的指令、程序、代码集或指令集,以及调用存储在存储器520内的数据,执行电子设备500的各种功能和处理数据。可选地,处理器510可以采用数字信号处理(Digital Signal Processing,DSP)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)、可编程逻辑阵列(Programmable LogicArray,PLA)中的至少一种硬件形式来实现。处理器510可集成中央处理器(CentralProcessing Unit,CPU)、图像处理器(Graphics Processing Unit,GPU)和调制解调器等中的一种或几种的组合。其中,CPU主要处理操作***、用户界面和应用程序等;GPU用于负责显示内容的渲染和绘制;调制解调器用于处理无线通信。可以理解的是,上述调制解调器也可以不集成到处理器510中,单独通过一块通信芯片进行实现。
存储器520可以包括随机存储器(Random Access Memory,RAM),也可以包括只读存储器(Read-Only Memory)。存储器520可用于存储指令、程序、代码、代码集或指令集。存储器520可包括存储程序区和存储数据区,其中,存储程序区可存储用于实现操作***的指令、用于实现至少一个功能的指令(比如触控功能、声音播放功能、图像播放功能等)、用于实现下述各个方法实施例的指令等。存储数据区还可以存储电子设备500在使用中所创建的数据(比如电话本、音视频数据、聊天记录数据)等。
请参考图11,其示出了本申请实施例提供的一种计算机可读存储介质的结构框图。该计算机可读存储介质600中存储有程序代码,所述程序代码可被处理器调用执行上述方法实施例中所描述的方法。
计算机可读存储介质600可以是诸如闪存、EEPROM(电可擦除可编程只读存储器)、EPROM、硬盘或者ROM之类的电子存储器。可选地,计算机可读存储介质600包括非易失性计算机可读存储介质(non-transitory computer-readable storage medium)。计算机可读存储介质600具有执行上述方法中的任何方法步骤的程序代码610的存储空间。这些程序代码可以从一个或者多个计算机程序产品中读出或者写入到这一个或者多个计算机程序产品中。程序代码610可以例如以适当形式进行压缩。
综上所述。本申请实施例提供的数据存储方法、装置、电子设备及计算机可读存储介质,通过当内存中有数据需要写入磁盘时,生成数据的日志文件以及对应的第一校验码;将数据写入磁盘的数据页中,更新数据页的第二校验码,可以根据第一校验码和第二校验码是否匹配,有效检测出数据是否部分写。通过当第一校验码与第二校验码不匹配时,获取数据页的页面时间戳,并根据页面时间戳从日志文件中获取页面时间戳对应的日志记录;根据页面时间戳对应的日志记录,更新数据页的数据,从而在检测到数据出现部分写时,能够根据时间戳准确地找到相应的日志记录对数据页进行更新,不仅避免了数据出现部分写的情况,而且由于采用日志的方式对数据写入磁盘的事件进行记录,可以使写操作能够如实地在SCM上按照原来的顺序执行,从而保证数据的顺序写。另外,通过进行检查点操作,可以保证数据页的数据能够准确地回复以及正常地更新。而且,结合日志、校验码以及检查点的方式在SCM上写数据,无需频繁使用CLWB或者MFENCE等指令,避免了这些指令需要机器串行化执行,不能很好地利用高速缓存,给***带来很大的性能损耗。同时能够利用持久性存储的特性。
因此,可以将适合SCM存储的数据移动到相应的位置,这个挑选的方法是从SCM的特性出发,有利于整体***性能延迟设备的使用寿命。另一方面,将一部分适合SCM使用的数据移动到SCM,本发明可以起到节约内存使用。
最后应说明的是:以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不驱使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。
Claims (11)
1.一种数据存储方法,其特征在于,应用于存储类存储器,所述存储类存储器包括内存和磁盘,包括:
当所述内存中有数据需要写入所述磁盘时,确定所述数据对应的事件代码和发生时间,并根据所述事件代码和所述发生时间生成所述数据的日志文件以及对应的第一校验码;
将所述数据写入所述磁盘的数据页中,更新所述数据页的第二校验码;
当所述第一校验码与所述第二校验码不匹配时,获取所述数据页的页面时间戳,并根据所述页面时间戳从所述日志文件中获取所述页面时间戳对应的日志记录;
从与所述页面时间戳对应的日志记录开始,将所述数据页按照日志记录一直更新到所述数据页当前最新的数据版本。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
当所述第一校验码与所述第二校验码匹配时,获取所述数据页的页面时间戳以及所述日志记录的日志时间戳;
判断所述日志时间戳是否等于所述页面时间戳;
当所述日志时间戳等于所述页面时间戳时,则确定所述数据页的数据更新正常。
3.根据权利要求2所述的方法,其特征在于,所述方法还包括:
当所述日志时间戳不等于所述页面时间戳时,从多个预设的检查点中找出距离所述数据页最近的检查点,得到所述检查点对应的日志记录;
根据所述检查点对应的日志记录,更新所述数据页的数据。
4.根据权利要求3所述的方法,其特征在于,在所述根据所述页面时间戳对应的日志记录,更新所述数据页的数据之前,还包括:
在所述日志文件中写入多个预设的检查点;
获取每个所述预设检查点写入所述日志文件中的地址;
在所述地址写入重新开始文件,其中,所述重新开始文件用于将所述日志文件回放到与所述预设检查点对应的日志记录。
5.根据权利要求1所述的方法,其特征在于,所述方法还包括:
当所述基于所述日志记录更新所述数据页的数据时,生成与所述数据页对应的页面时间戳。
6.根据权利要求1所述的方法,其特征在于,所述生成所述数据的日志文件以及对应的第一校验码包括:
在所述内存的缓冲区中构造所述数据的日志记录;
基于所述日志记录生成所述日志文件以及对应的第一校验码。
7.根据权利要求6所述的方法,其特征在于,所述方法还包括:
当在所述内存的缓冲区中构造所述数据的日志记录时,生成与所述日志记录对应的日志时间戳。
8.根据权利要求1-7任一项所述的方法,其特征在于,所述数据页为512字节倍数的数据页。
9.一种数据存储装置,其特征在于,应用于存储类存储器,所述存储类存储器包括内存和磁盘,包括:
第一校验码生成模块,用于当所述内存中有数据需要写入所述磁盘时,确定所述数据对应的事件代码和发生时间,并根据所述事件代码和所述发生时间生成所述数据的日志文件以及对应的第一校验码;
第二校验码更新模块,用于将所述数据写入所述磁盘的数据页中,更新所述数据页的第二校验码;
日志记录获取模块,用于当所述第一校验码与所述第二校验码不匹配时,获取所述数据页的页面时间戳,并根据所述页面时间戳从所述日志文件中获取所述页面时间戳对应的日志记录;
数据更新模块,用于从与所述页面时间戳对应的日志记录开始,将所述数据页按照日志记录一直更新到所述数据页当前最新的数据版本。
10.一种电子设备,其特征在于,包括:
一个或多个处理器;
存储器;
一个或多个应用程序,其中所述一个或多个应用程序被存储在所述存储器中并被配置为由所述一个或多个处理器执行,所述一个或多个程序配置用于执行如权利要求1-8任一项所述的方法。
11.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有处理器可执行的程序代码,所述程序代码中的多条指令被所述处理器执行时使所述处理器执行权利要求1-8任一项所述方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911088468.XA CN110928890B (zh) | 2019-11-08 | 2019-11-08 | 数据存储方法、装置、电子设备及计算机可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911088468.XA CN110928890B (zh) | 2019-11-08 | 2019-11-08 | 数据存储方法、装置、电子设备及计算机可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110928890A CN110928890A (zh) | 2020-03-27 |
CN110928890B true CN110928890B (zh) | 2023-01-24 |
Family
ID=69852593
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911088468.XA Active CN110928890B (zh) | 2019-11-08 | 2019-11-08 | 数据存储方法、装置、电子设备及计算机可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110928890B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111666046B (zh) * | 2020-05-20 | 2023-07-25 | 西安奥卡云数据科技有限公司 | 一种数据存储方法、装置及设备 |
CN112631823A (zh) * | 2020-12-30 | 2021-04-09 | 锐捷网络股份有限公司 | 文件的处理方法及装置 |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102436490A (zh) * | 2010-10-28 | 2012-05-02 | 微软公司 | 多功能存储器内数据库恢复 |
CN102609337A (zh) * | 2012-01-19 | 2012-07-25 | 北京神州数码思特奇信息技术股份有限公司 | 一种内存数据库快速数据恢复方法 |
CN102819493A (zh) * | 2011-11-30 | 2012-12-12 | 凯迈(洛阳)环测有限公司 | 一种基于非易失存储芯片的存储及查询方法 |
CN103778030A (zh) * | 2013-12-30 | 2014-05-07 | 上海晨思电子科技有限公司 | 日志子***写入方法、错误追踪方法及处理器 |
CN103942252A (zh) * | 2014-03-17 | 2014-07-23 | 华为技术有限公司 | 一种恢复数据的方法及*** |
CN104182293A (zh) * | 2013-05-22 | 2014-12-03 | 群联电子股份有限公司 | 数据写入方法、存储器存储装置与存储器控制器 |
CN104951474A (zh) * | 2014-03-31 | 2015-09-30 | 阿里巴巴集团控股有限公司 | 一种用于获取MySQL binlog增量日志的方法和装置 |
CN109617648A (zh) * | 2018-10-29 | 2019-04-12 | 青岛民航凯亚***集成有限公司 | 一种可变时间滑动窗口计算方法 |
WO2019171133A1 (en) * | 2018-03-07 | 2019-09-12 | Pratik Sharma | Grouping dependent database transactions for recovery |
CN110309013A (zh) * | 2018-03-20 | 2019-10-08 | 慧荣科技股份有限公司 | 存取闪存模块的方法及相关的闪存控制器与电子装置 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2001101044A (ja) * | 1999-09-29 | 2001-04-13 | Toshiba Corp | トランザクショナルファイル管理方法、トランザクショナルファイルシステム及び複合トランザクショナルファイルシステム |
US7624119B2 (en) * | 2004-02-11 | 2009-11-24 | International Business Machines Corporation | Low-overhead built-in timestamp column for relational database systems |
US9281841B2 (en) * | 2012-10-31 | 2016-03-08 | Avago Technologies General Ip (Singapore) Pte. Ltd. | Load balanced decoding of low-density parity-check codes |
CN103577121B (zh) * | 2013-11-05 | 2016-07-06 | 中船重工(武汉)凌久电子有限责任公司 | 一种基于Nand Flash的高可靠线性文件存取方法 |
CN103617009A (zh) * | 2013-12-10 | 2014-03-05 | 北京奇虎科技有限公司 | 一种开机启动中通过缓存向磁盘写数据的方法和装置 |
CN106788468B (zh) * | 2016-11-28 | 2021-01-01 | 北京三快在线科技有限公司 | 一种纠删码更新方法及装置,电子设备 |
-
2019
- 2019-11-08 CN CN201911088468.XA patent/CN110928890B/zh active Active
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102436490A (zh) * | 2010-10-28 | 2012-05-02 | 微软公司 | 多功能存储器内数据库恢复 |
CN102819493A (zh) * | 2011-11-30 | 2012-12-12 | 凯迈(洛阳)环测有限公司 | 一种基于非易失存储芯片的存储及查询方法 |
CN102609337A (zh) * | 2012-01-19 | 2012-07-25 | 北京神州数码思特奇信息技术股份有限公司 | 一种内存数据库快速数据恢复方法 |
CN104182293A (zh) * | 2013-05-22 | 2014-12-03 | 群联电子股份有限公司 | 数据写入方法、存储器存储装置与存储器控制器 |
CN103778030A (zh) * | 2013-12-30 | 2014-05-07 | 上海晨思电子科技有限公司 | 日志子***写入方法、错误追踪方法及处理器 |
CN103942252A (zh) * | 2014-03-17 | 2014-07-23 | 华为技术有限公司 | 一种恢复数据的方法及*** |
CN104951474A (zh) * | 2014-03-31 | 2015-09-30 | 阿里巴巴集团控股有限公司 | 一种用于获取MySQL binlog增量日志的方法和装置 |
WO2019171133A1 (en) * | 2018-03-07 | 2019-09-12 | Pratik Sharma | Grouping dependent database transactions for recovery |
CN110309013A (zh) * | 2018-03-20 | 2019-10-08 | 慧荣科技股份有限公司 | 存取闪存模块的方法及相关的闪存控制器与电子装置 |
CN109617648A (zh) * | 2018-10-29 | 2019-04-12 | 青岛民航凯亚***集成有限公司 | 一种可变时间滑动窗口计算方法 |
Non-Patent Citations (1)
Title |
---|
***可能在任何两次写入之间崩溃或断电,崩溃后,如何更新磁盘?;人邮异步社区;《https://blog.csdn.net/epubit17/article/details/99277412》;20190812;1-14 * |
Also Published As
Publication number | Publication date |
---|---|
CN110928890A (zh) | 2020-03-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10983955B2 (en) | Data unit cloning in memory-based file systems | |
US9244839B2 (en) | Methods and apparatus for supporting persistent memory | |
US10176190B2 (en) | Data integrity and loss resistance in high performance and high capacity storage deduplication | |
US8954673B1 (en) | Using a conditional read request and a hash to determine synchronization of data in a cache at a host with data in storage array | |
CN108431783B (zh) | 访问请求处理方法、装置及计算机*** | |
US20230016555A1 (en) | Data recovery method, apparatus, and solid state drive | |
US8825946B2 (en) | Memory system and data writing method | |
US8370587B2 (en) | Memory system storing updated status information and updated address translation information and managing method therefor | |
US10489289B1 (en) | Physical media aware spacially coupled journaling and trim | |
US20180300083A1 (en) | Write-ahead logging through a plurality of logging buffers using nvm | |
US20200026639A1 (en) | Logging trace data for program code execution at an instruction level | |
CN111125040B (zh) | 管理重做日志的方法、装置及存储介质 | |
Kim et al. | Reducing excessive journaling overhead with small-sized NVRAM for mobile devices | |
US9003228B2 (en) | Consistency of data in persistent memory | |
US20240020240A1 (en) | Method for storing l2p table, system, device, and medium | |
CN113076220B (zh) | 数据处理方法、装置、电子设备及计算机可读介质 | |
CN110928890B (zh) | 数据存储方法、装置、电子设备及计算机可读存储介质 | |
CN108431784B (zh) | 访问请求处理方法、装置及计算机*** | |
CN112799595A (zh) | 数据处理方法、设备及存储介质 | |
CN110968530B (zh) | 一种基于非易失性内存的键值存储***和内存访问方法 | |
JP2006099802A (ja) | 記憶制御装置およびキャッシュメモリの制御方法 | |
US11237925B2 (en) | Systems and methods for implementing persistent data structures on an asymmetric non-volatile memory architecture | |
US9946656B2 (en) | Completion packet return based on eviction or flush | |
US20230259298A1 (en) | Method for providing logging for persistent memory | |
CN109542359B (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 | ||
EE01 | Entry into force of recordation of patent licensing contract | ||
EE01 | Entry into force of recordation of patent licensing contract |
Application publication date: 20200327 Assignee: GUANGZHOU CUBESILI INFORMATION TECHNOLOGY Co.,Ltd. Assignor: GUANGZHOU HUADUO NETWORK TECHNOLOGY Co.,Ltd. Contract record no.: X2021440000031 Denomination of invention: Data storage method, device, electronic device and computer readable medium License type: Common License Record date: 20210125 |
|
GR01 | Patent grant | ||
GR01 | Patent grant |