一种数据存储方法、装置、电子设备及存储介质与流程

文档序号:26101293发布日期:2021-07-30 18:12阅读:77来源:国知局
一种数据存储方法、装置、电子设备及存储介质与流程

本发明涉及计算机技术领域,尤指一种数据存储方法、装置、电子设备及存储介质。



背景技术:

只读存储器(read-onlymemory,rom)是计算机硬件结构的重要组成部分,用于存储各种固定程序和数据。按照生产工艺和工作原理,rom可以分为掩膜只读存储器(maskrom)、可编程只读存储器(programmableread-onlymemory,prom)、可擦可编程只读存储器(erasableprogrammableread-onlymemory,eprom)和带电可擦可编程只读存储器(electricallyerasableprogrammableread-onlymemory,eeprom)、快擦除读写(flash)存储器等不同的种类。在嵌入式系统中,为了存储的数据能够方便地多次修改,目前主要被广泛应用的是eeprom和flash。

flash是一种按照数据块进行擦除的存储器,不能直接对位进行擦除。flash的读取速度快,成本较低,容量较大,因此目前主要被用于存储修改频率相对较低的数据(例如嵌入式设备的程序代码等)。但flash的擦写寿命较低。而eeprom是一种可以直接对位进行擦写的存储器。eeprom的擦写寿命较高,因此目前主要被用于存储修改频率相对较高的数据(例如燃气仪表的燃气数据、水表数据、电表数据、汽车的记录数据等)。但eeprom成本较高,容量较小。

在嵌入式设备的生产制造过程中,需要尽可能地控制各零部件成本。flash与eeprom相比具有明显的成本优势,因此使用flash替代eeprom存储修改频率相对较高的数据,对嵌入式设备的生产具有重要的意义。但如何提高flash的擦写寿命,目前仍需要进一步地改进。



技术实现要素:

本发明实施例提供一种数据存储方法、装置、电子设备及存储介质,用以解决现有技术中存在flash存储器的使用寿命较低的问题。

本发明实施例提供了一种数据存储方法,包括:

响应于数据操作指令,确定待操作的数据项;

根据存储在初始数据块的所述数据项的初始数据、存储在变化数据块的所述数据项的各第一更新数据及所述各第一更新数据之间的关联关系,确定上次写入的所述数据项的第一数据;

响应于数据写入指令,根据操作信息确定所述数据项当前的第二数据相对于所述第一数据的第二更新数据;

将所述确定的第二更新数据作为新的第一更新数据,将所述新的第一更新数据及其与所述各第一更新数据之间的关联关系写入所述变化数据块;

其中,所述初始数据块和所述变化数据块位于第一存储器。

可选地,所述数据存储方法还包括:

确定所述初始数据块中未存储所述数据项的初始数据时,响应于数据写入指令,根据操作信息确定所述数据项的第二数据;

将所述第二数据作为所述数据项的初始数据写入所述初始数据块。

可选地,将所述新的第一更新数据及其与所述各第一更新数据之间的关联关系写入所述变化数据块,包括:

确定满足数据写入条件时,将所述新的第一更新数据及其与所述各第一更新数据之间的关联关系写入所述变化数据块;

否则,擦除所述初始数据块和所述变化数据块,将所述第二数据作为所述数据项的初始数据写入所述初始数据块。

可选地,所述数据写入条件包括:

所述变化数据块未被写满,且成功确定上次写入的所述数据项的第一数据。

可选地,所述各第一更新数据之间的关联关系包括:

首个写入的第一更新数据相对于所述初始数据的第一地址偏移值;

非首个写入的第一更新数据相对于上次写入的第一更新数据的第二地址偏移值。

可选地,响应于数据操作指令之前,还包括:

读取所述初始数据块中所有数据项对应的初始数据、所述变化数据块中所有数据项对应的第一更新数据;

循环执行如下步骤直至所述所有第一更新数据完成遍历:

从未遍历的第一更新数据中最高地址的第一更新数据开始,根据对应的第二地址偏移值依次遍历上一个写入关联的第一更新数据;

遍历至与关联的第一更新数据为首个写入的第一更新数据,根据所述第一地址偏移值确定对应的初始数据,确定所述初始数据对应的数据项;

遍历结束时,根据得到的属于同一数据项的初始数据、各第一更新数据及所述各第一更新数据之间的关联关系,确定上一次写入的各数据项对应的第一数据;

根据存储在初始数据块的所述数据项的初始数据、存储在变化数据块的所述数据项的各第一更新数据及所述各第一更新数据之间的关联关系,确定上次写入的所述数据项的第一数据,包括:

从所述确定的上一次写入的各数据项对应的第一数据中,获取所述待操作的数据项的第一数据。

可选地,所述的数据存储方法还包括:

确定满足同步条件时,将所述第一存储器中的数据同步到第二存储器;

确定需从第一存储器中读取数据时,从第二存储器中读取对应的数据;

确定需向第一存储器写入数据时,将写入的数据先写入第二存储器后,再同步写入到第一存储器中对应的所述初始数据块或所述变化数据块;

所述读取的数据包括初始数据、所述数据项的各第一更新数据及所述各第一更新数据之间的关联关系;

所述写入的数据包括所述初始数据、所述新的第一更新数据及其与所述各第一更新数据之间的关联关系。

可选地,响应于数据写入指令,根据操作信息确定所述数据项当前的第二数据相对于所述第一数据的第二更新数据,包括:

响应于数据写入指令,确定所述第二存储器记录对所述数据项的多次操作;

根据各次操作对所述数据项的第一数据的修改,得到所述数据项当前的第二数据和所述第二数据相对于所述第一数据的第二更新数据。

可选地,将所述新的第一更新数据及其与所述各第一更新数据之间的关联关系写入所述变化数据块,包括:

将所述新的第一更新数据及其与所述各第一更新数据之间的关联关系,封装为一个更新数据帧写入所述变化数据块;

或者,可选地,将所述新的第一更新数据及其与所述各第一更新数据之间的关联关系写入所述变化数据块,包括:

当所述确定的第二更新数据的长度未超出预设长度时,将所述新的第一更新数据及其与所述各第一更新数据之间的关联关系,封装为一个更新数据帧写入所述变化数据块;当所述确定的第二更新数据的长度超出预设长度时,将所述新的第一更新数据分为多个部分更新数据;对每个部分更新数据,将所述部分更新数据、所述部分更新数据之间的关联关系、所述新的第一更新数据与确定的所述各第一更新数据之间的关联关系,封装为一个更新数据帧写入所述变化数据块。

可选地,所述更新数据帧还包括如下至少一项:

所述第一更新数据的长度或所述部分更新数据的长度;

所述更新数据帧的帧长度;

分隔标志,用于分隔不同更新数据帧;

填充数据,用于调整所述更新数据帧的长度;

数据校验标志,用于校验所述确定的更新数据或所述部分更新数据,和/或所述更新数据帧的完整性。

可选地,响应于数据写入指令之前,还包括:

响应于设备下电指令,触发所述数据写入指令;

和/或,确定所述待操作的数据项的数据发生变化时,触发所述数据写入指令。

基于同一发明构思,本发明实施例还提供了一种数据存储装置,包括:

操作模块,用于响应于数据操作指令,确定待操作的数据项;

第一数据读取模块,用于根据存储在初始数据块的所述数据项的初始数据、存储在变化数据块的所述数据项的各第一更新数据及所述各第一更新数据之间的关联关系,确定上次写入的所述数据项的第一数据;其中,所述初始数据块和所述变化数据块位于第一存储器;

第二更新数据确定模块,用于响应于数据写入指令,根据操作信息确定所述数据项当前的第二数据相对于所述第一数据的第二更新数据;

更新数据写入模块,用于将所述确定的第二更新数据作为新的第一更新数据,将所述新的第一更新数据及其与所述各第一更新数据之间的关联关系写入所述变化数据块。

基于同一发明构思,本发明实施例还提供了一种电子设备,包括:处理器和用于存储所述处理器可执行指令的存储器;

其中,所述处理器被配置为执行所述指令,以实现所述的数据存储方法。

基于同一发明构思,本发明实施例还提供了一种存储介质,所述存储介质存储有计算机程序,所述计算机程序被用于实现所述的数据存储方法。

本发明有益效果如下:

本发明实施例提供的一种数据存储方法、装置、电子设备及存储介质,通过将变化的数据项的数据相对于存储在所述第一存储器中的存储值的变化数据写入所述第一存储器,不再需要每次所述数据项的数据发生变化时对所述第一存储器都进行一次擦除操作,从而减少了对所述第一存储器的擦除次数,能够大幅提高所述第一存储器的使用寿命。

附图说明

图1为本发明实施例提供的数据存储方法的流程图之一;

图2为本发明实施例中第一存储器的数据结构示意图;

图3为本发明实施例提供的数据存储方法的流程图之二;

图4为本发明实施例提供的数据存储方法的流程图之三;

图5为本发明实施例提供的数据存储方法的流程图之四;

图6为本发明实施例提供的数据存储方法的效果示意图;

图7为本发明实施例提供的数据存储方法的流程图之五;

图8为本发明实施例提供的数据存储方法的流程图之六;

图9为本发明实施例提供的更新数据帧的数据结构示意图;

图10为本发明实施例提供的数据存储方法的流程图之七;

图11为本发明实施例提供的数据存储装置的结构示意图;

图12为本发明实施例提供的电子设备的结构示意图。

具体实施方式

为使本发明的上述目的、特征和优点能够更为明显易懂,下面将结合附图和实施例对本发明做进一步说明。然而,示例实施方式能够以多种形式实施,且不应被理解为限于在此阐述的实施方式;相反,提供这些实施方式使得本发明更全面和完整,并将示例实施方式的构思全面地传达给本领域的技术人员。在图中相同的附图标记表示相同或类似的结构,因而将省略对它们的重复描述。本发明中所描述的表达位置与方向的词,均是以附图为例进行的说明,但根据需要也可以做出改变,所做改变均包含在本发明保护范围内。本发明的附图仅用于示意相对位置关系不代表真实比例。

需要说明的是,在以下描述中阐述了具体细节以便于充分理解本发明。但是本发明能够以多种不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本发明内涵的情况下做类似推广。因此本发明不受下面公开的具体实施方式的限制。说明书后续描述为实施本申请的较佳实施方式,然所述描述乃以说明本申请的一般原则为目的,并非用以限定本申请的范围。本申请的保护范围当视所附权利要求所界定者为准。

下面结合附图,对本发明实施例提供的数据存储方法、装置、电子设备及存储介质进行具体说明。

本发明实施例提供了一种数据存储方法,如图1所示,包括:

s110、响应于数据操作指令,确定待操作的数据项;

s120、根据存储在初始数据块的所述数据项的初始数据、存储在变化数据块的所述数据项的各第一更新数据及所述各第一更新数据之间的关联关系,确定上次写入的所述数据项的第一数据;

s130、响应于数据写入指令,判断所述初始数据块中是否存储所述数据项的初始数据;

若所述步骤s130判断结果为是,执行所述步骤s140;

s140、根据操作信息确定所述数据项当前的第二数据相对于所述第一数据的第二更新数据;

s150、将所述确定的第二更新数据作为新的第一更新数据,将所述新的第一更新数据及其与所述各第一更新数据之间的关联关系写入所述变化数据块;

其中,所述初始数据块和所述变化数据块位于第一存储器。

在具体实施过程中,所述第一存储器为具有多次擦写功能的rom,包括flash、eeprom等。下文将主要以flash为例进行说明。如图2所示,所述初始数据块与所述变化数据块为预先在所述第一存储器中划分出的两个存储区域,所述初始数据块与所述变化数据块的大小可以根据需要设定。所述数据项为需要进行多次变化的数据,例如设备采集的当前时间、采集的当前温度、文字的美国信息交换标准代码(americanstandardcodeforinformationinterchange,ascii)等。

以所述数据项为设备采集的当前温度为例,所述步骤s120中,根据存储在初始数据块的所述数据项的初始数据25℃,存储在变化数据块的所述数据项的各第一更新数据+1℃、-3℃、+4℃,所述各第一更新数据之间的关联关系,确定上次写入的所述数据项的第一数据为:25℃+1℃-3℃+4℃=27℃。所述步骤s130中,响应于数据写入指令,根据设备采集的当前温度确定所述数据项当前的第二数据24℃,确定所述第二数据24℃相对于所述第一数据27℃的第二更新数据-3℃。所述步骤s150中,将所述确定的第二更新数据-3℃作为新的第一更新数据,将所述新的第一更新数据-3℃及其与所述各第一更新数据之间的关联关系写入所述变化数据块。那么,下一次将采集的当前温度存储至flash中时,将会重复上述步骤得到所述数据项的第一数据为:25℃+1℃-3℃+4℃-3℃=24℃。

这样,通过将变化的数据项的数据相对于存储在所述第一存储器中的存储值的变化数据写入所述第一存储器,不再需要每次所述数据项的数据发生变化时对所述第一存储器都进行一次擦除操作,从而减少了对所述第一存储器的擦除次数,能够提高所述第一存储器的寿命。

可选地,所述的数据存储方法还包括:

若所述步骤s130判断结果为否,执行所述步骤s160;

s160、根据操作信息确定所述数据项的第二数据;

s170、将所述第二数据作为所述数据项的初始数据写入所述初始数据块。

这样,可以将新设置的数据项写入所述初始数据块,从而能够在之后的存储操作中将变化数据写入所述第一存储器,来减少对所述第一存储器的擦除次数。

可选地,如图3所示,在所述步骤s150中,将所述新的第一更新数据及其与所述各第一更新数据之间的关联关系写入所述变化数据块,包括:

s151、判断是否满足数据写入条件;

确定满足数据写入条件时,执行步骤s152,否则执行步骤s153;

s152、将所述新的第一更新数据及其与所述各第一更新数据之间的关联关系写入所述变化数据块;

s153、擦除所述初始数据块和所述变化数据块,将所述第二数据作为所述数据项的初始数据写入所述初始数据块。

可选地,所述数据写入条件包括:

所述变化数据块未被写满,且成功确定上次写入的所述数据项的第一数据。

以一个容量为16kb、擦写寿命为10万次的flash为例,将其中的1kb的存储区域划分为所述初始数据块,将15kb的存储区域划分为所述变化数据块。假设每次写入的所述新的第一更新数据及其与所述各第一更新数据之间的关联关系平均占用128b,且每次擦除所述初始数据块和所述变化数据块的原因均为所述变化数据块被写满,那么使用本发明实施例的flash的寿命将变为约即1200万次。这样,通过对大部分的更新数据直接写入所述变化数据块,当所述数据块被写满时再进行擦除,大幅提高了所述第一存储器的使用寿命。若无法成功确定上次写入的所述数据项的第一数据,那么对所述第一存储器进行擦除,直接将所述第二数据作为所述初始数据写入所述初始数据块,可以保证在已存储的数据出现错误时及时纠正,避免之后的存储数据发生错误。

在实施过程中,所述各第一更新数据之间的关联关系可以包括但不限于如下所述的任一种方式:

方式一:所述各第一更新数据的存储位置被预先指定。那么,写入所述各第一更新数据之间的关联关系为实际存储的地址。例如,同一数据项对应的所述各第一更新数据的存储位置为通过预设函数计算得到,在需要根据所述初始数据和所述第一更新数据及所述各第一变化数据之间的关联关系确定上次写入的所述第一数据时,可以根据所述预设函数直接确定各第一更新数据的存储位置并读取出来。

方式二:所述各第一更新数据之间为链表关系。具体地,所述各第一更新数据之间的关联关系包括:

首个写入的第一更新数据相对于所述初始数据的第一地址偏移值;

非首个写入的第一更新数据相对于上次写入的第一更新数据的第二地址偏移值。

那么,对应地,在需要根据所述初始数据和所述第一更新数据及所述各第一变化数据之间的关联关系确定上次写入的所述第一数据时,可以由较高地址的所述第一更新数据根据对应的地址偏移值由高至低向前查询,最终确定属于同一数据项的所有的所述第一更新数据和所述初始数据。

确定上次写入的所述数据项的第一数据时,可以为如下任一种方式:

方式一:

如图4所示,在所述步骤s110之前还包括:

s101、读取所述初始数据块中所有数据项对应的初始数据、所述变化数据块中所有数据项对应的第一更新数据;

s102、确定未遍历的第一更新数据中最高地址的第一更新数据;

s103、根据对应的第二地址偏移值遍历上一个写入关联的第一更新数据;

s104、判断是否遍历至与关联的第一更新数据为首个写入的第一更新数据;

若所述步骤s104判断结果为否,返回所述步骤s103;

若所述步骤s104判断结果为是,s105、根据所述第一地址偏移值确定对应的初始数据,确定所述初始数据对应的数据项;

s106、判断是否完成对所述所有第一更新数据的遍历;

若所述步骤s106判断结果为否,返回所述步骤s102;若所述步骤s106判断结果为是,执行所述步骤s107;

s107、根据得到的属于同一数据项的初始数据、各第一更新数据及所述各第一更新数据之间的关联关系,确定上一次写入的各数据项对应的第一数据;

所述步骤s120、根据存储在初始数据块的所述数据项的初始数据、存储在变化数据块的所述数据项的各第一更新数据及所述各第一更新数据之间的关联关系,确定上次写入的所述数据项的第一数据,包括:

从所述确定的上一次写入的各数据项对应的第一数据中,获取所述待操作的数据项的第一数据。

方式二:

如图5所示,所述步骤s120、根据存储在初始数据块的所述数据项的初始数据、存储在变化数据块的所述数据项的各第一更新数据及所述各第一更新数据之间的关联关系,确定上次写入的所述数据项的第一数据,包括:

s121、读取所述初始数据块中所有数据项对应的初始数据、所述变化数据块中所有数据项对应的第一更新数据;

s122、确定未遍历的第一更新数据中最高地址的第一更新数据;

s123、根据对应的第二地址偏移值遍历上一个写入关联的第一更新数据;

s124、判断是否遍历至与关联的第一更新数据为首个写入的第一更新数据;

若所述步骤s124判断结果为否,返回所述步骤s123;

若所述步骤s124判断结果为是,s125、根据所述第一地址偏移值确定对应的初始数据,确定所述初始数据对应的数据项;

s126、判断是否遍历至所述待操作的数据项的初始数据;

若所述步骤s126判断结果为否,返回所述步骤s122;

若所述步骤s126判断结果为是,s127、根据所述待操作的数据项的初始数据、所述待操作的数据项的各第一更新数据及所述各第一更新数据之间的关联关系,确定上次写入的所述待操作的数据项的第一数据。

可选地,所述的数据存储方法还包括:

确定满足同步条件时,将所述第一存储器中的数据同步到第二存储器;

确定需从第一存储器中读取数据时,从第二存储器中读取对应的数据;

确定需向第一存储器写入数据时,将写入的数据先写入第二存储器后,再同步写入到第一存储器中对应的所述初始数据块或所述变化数据块;

所述读取的数据包括初始数据、所述数据项的各第一更新数据及所述各第一更新数据之间的关联关系;

所述写入的数据包括所述初始数据、所述新的第一更新数据及其与所述各第一更新数据之间的关联关系。

在本发明实施例中,所述第二存储器指的是随机存取存储器(randomaccessmemory,ram)。图6示意了当所述初始数据块中存储有所述数据项的初始数据时,读取所述第一存储器中的所述第一数据,对所述第一数据进行操作得到所述第二数据,并将所述第二更新数据写入所述第一存储器的过程。

那么,图2中示意的数据存储方法的实施例具体可以为包括但不限于如图7所示的实施方式:

s100、确定满足同步条件时,从所述第一存储器中读取存储在初始数据块的所有数据项的初始数据、存储在变化数据块的所有所述数据项的各第一更新数据及所述各第一更新数据之间的关联关系,并同步至所述第二存储器;

s110、响应于数据操作指令,确定待操作的数据项;

s120、根据所述第二存储器中所述数据项的初始数据、所述数据项的各第一更新数据及所述各第一更新数据之间的关联关系,确定上次写入的所述数据项的第一数据并存储在所述第二存储器;

s130、响应于数据写入指令,判断所述第二存储器中是否存储所述数据项的初始数据;

若所述步骤s130判断结果为是,执行所述步骤s140;

s140、根据所述第二存储器中的操作信息,确定所述数据项当前的第二数据相对于所述第一数据的第二更新数据并存储于所述第二存储器;

s150、将所述确定的第二更新数据作为新的第一更新数据,将所述新的第一更新数据及其与所述各第一更新数据之间的关联关系写入所述变化数据块;

若所述步骤s130判断结果为否,执行所述步骤s160;

s160、根据操作信息确定所述数据项的第二数据并存储于所述第二存储器;

s170、将所述第二数据作为所述数据项的初始数据写入所述初始数据块。

可选地,如图8所示,所述步骤s140、响应于数据写入指令,根据操作信息确定所述数据项当前的第二数据相对于所述第一数据的第二更新数据,包括:

s141、响应于数据写入指令,确定所述第二存储器记录对所述数据项的多次操作;

s142、根据各次操作对所述数据项的第一数据的修改,得到所述数据项当前的第二数据和所述第二数据相对于所述第一数据的第二更新数据。

在具体实施过程中,在确定所述第一数据的过程中,已经将所述初始数据与所述第一更新数据从所述第一存储器中同步至所述第二存储器,确定的所述第一数据也存储于所述第二存储器中。之后,在所述步骤s110、响应于数据操作指令,确定待操作的数据项之后,设备会对所述待操作的数据项进行至少一次的操作,每次操作都会将所述数据项的数据修改为一个新的数值,并存储在所述第二存储器中。所述步骤s142、根据各次操作对所述数据项的第一数据的修改,得到所述数据项当前的第二数据和所述第二数据相对于所述第一数据的第二更新数据,可以为如下的两种实施方式:

(1)根据各次操作对所述数据项的第一数据的修改,得到各次操作分别对应其上一次操作的各第二更新数据,根据所述各第二更新数据确定所述第二数据相对于所述第一数据的第二更新数据,并根据所述第一数据和所述第二更新数据确定所述数据项当前的第二数据。

例如,所述数据项为当前时间。所述当前时间为根据设备的程序计算出来的,例如每间隔1分钟,所述当前时间自动+0:01。那么,当设备确定所述第一数据为8:00,并于8:00开始运行,运行了3分钟时,所述第二存储器中将存储有3次时间更新操作,每次所述更新操作对应的所述第二更新数据均为+0:01。此时响应于数据写入指令,得到所述数据项当前的第二数据和所述第二数据相对于所述第一数据的第二更新数据为0:01+0:01+0:01=0:03,所述第二数据为8:00+0:03=8:03。

(2)根据各次操作对所述数据项的第一数据的修改,得到所述数据项当前的第二数据,根据所述第二数据、所述第一数据得到所述第二数据相对于所述第一数据得到所述第二更新数据。

例如,所述数据项为设备采集的当前温度。每次设备采集一次温度,所述第二存储器中会存储一次采集的温度。例如在确定所述第一数据为25℃之后,进行了3次温度采集,分别得到温度值为24℃、26℃、27℃,此时响应于数据写入指令,确定所述数据项的所述第二数据为27℃,根据所述第二数据27℃、所述第一数据25℃得到所述第二更新数据27℃-25℃=2℃。

这样,通过所述第二存储器暂时存储对所述数据项进行操作产生的第二更新数据,当需要写入所述第一存储器时再合并操作记录,得到当前的所述第二数据相对于所述第一存储器中存储的第一数据的总变化第二更新数据后,再将所述第二更新数据作为新的所述第一更新数据写入所述第一存储器,从而在操作次数一定的情况下减少了对所述第一存储器的写入次数,进一步地延长了所述第一存储器的使用寿命。

可选地,在所述s150中,将所述新的第一更新数据及其与所述各第一更新数据之间的关联关系写入所述变化数据块,包括如下任一种方式:

(1)将所述新的第一更新数据及其与所述各第一更新数据之间的关联关系,封装为一个更新数据帧写入所述变化数据块。

(2)判断所述确定的第二更新数据的长度是否超出预设长度;

当所述确定的第二更新数据的长度未超出预设长度时,将所述新的第一更新数据及其与所述各第一更新数据之间的关联关系,封装为一个更新数据帧写入所述变化数据块;

当所述确定的第二更新数据的长度超出预设长度时,将所述新的第一更新数据分为多个部分更新数据;对每个部分更新数据,将所述部分更新数据、所述部分更新数据之间的关联关系、所述新的第一更新数据与确定的所述各第一更新数据之间的关联关系,封装为一个更新数据帧写入所述变化数据块。

可选地,所述更新数据帧还包括如下至少一项:

所述新的第一更新数据的长度或所述部分更新数据的长度;

所述更新数据帧的帧长度;

分隔标志,用于分隔不同更新数据帧;

填充数据,用于调整所述更新数据帧的长度;

数据校验标志,用于校验所述确定的更新数据或所述部分更新数据,和/或所述更新数据帧的完整性。

在具体实施过程中,由于flash等存储器不能直接按位进行写入。而将所述第一更新数据直接封装为一个或多个更新数据帧写入所述第一存储器,写入的数据量不一定正好是所述第一存储器最小写入单位的整数倍,那么可以通过所述填充数据调整所述更新数据帧的长度为所述第一存储器最小写入单位的整数倍。

在具体实施过程中,所述数据校验标志可以为利用奇偶校验算法、循环冗余校验(cyclicredundancycheck,crc)算法等得到的校验值。在读取所述第一更新数据时,通过计算数据校验值并与所述数据校验标志进行对比,可以确定所述第一更新数据是否错误。

如图9所示,下面给出一种具体的所述更新数据帧的格式:

这样,通过将所述第一更新数据封装为所述更新数据帧写入所述变化数据块,便于后续读取所述第一更新数据。

可选地,如图10所示,所述步骤s130之前还包括:

s1301、响应于设备下电指令,触发所述数据写入指令。

这样,能够保证设备的数据不会丢失。

和/或,s1302、确定所述待操作的数据项的数据发生变化时,触发所述数据写入指令。

这样,将所有的所述第二更新数据均存储至所述第一存储器,可以避免设备由于意外原因突然断电而导致当前的所述第二数据丢失。

基于同一发明构思,本发明实施例还提供了一种数据存储装置,如图11所示,包括:

操作模块m101,用于响应于数据操作指令,确定待操作的数据项;

第一数据读取模块m102,用于根据存储在初始数据块的所述数据项的初始数据、存储在变化数据块的所述数据项的各第一更新数据及所述各第一更新数据之间的关联关系,确定上次写入的所述数据项的第一数据;其中,所述初始数据块和所述变化数据块位于第一存储器;

第二更新数据确定模块m103,用于响应于数据写入指令,根据操作信息确定所述数据项当前的第二数据相对于所述第一数据的第二更新数据;

更新数据写入模块m104,用于将所述确定的第二更新数据作为新的第一更新数据,将所述新的第一更新数据及其与所述各第一更新数据之间的关联关系写入所述变化数据块。

可选地,所述的数据存储装置还包括:

第二数据确定模块m105,用于确定所述初始数据块中未存储所述数据项的初始数据时,响应于数据写入指令,根据操作信息确定所述数据项的第二数据;

初始数据写入模块m106,用于将所述第二数据作为所述数据项的初始数据写入所述初始数据块。

可选地,将所述新的第一更新数据及其与所述各第一更新数据之间的关联关系写入所述变化数据块,包括:

确定满足数据写入条件时,将所述新的第一更新数据及其与所述各第一更新数据之间的关联关系写入所述变化数据块;

否则,擦除所述初始数据块和所述变化数据块,将所述第二数据作为所述数据项的初始数据写入所述初始数据块。

可选地,所述数据写入条件包括:

所述变化数据块未被写满,且成功确定上次写入的所述数据项的第一数据。

可选地,所述各第一更新数据之间的关联关系包括:

首个写入的第一更新数据相对于所述初始数据的第一地址偏移值;

非首个写入的第一更新数据相对于上次写入的第一更新数据的第二地址偏移值。

可选地,所述数据存储装置还包括:

初始化模块m107(图11中未示出),用于读取所述初始数据块中所有数据项对应的初始数据、所述变化数据块中所有数据项对应的第一更新数据;

循环执行如下步骤直至所述所有第一更新数据完成遍历:

从未遍历的第一更新数据中最高地址的第一更新数据开始,根据对应的第二地址偏移值依次遍历上一个写入关联的第一更新数据;

遍历至与关联的第一更新数据为首个写入的第一更新数据,根据所述第一地址偏移值确定对应的初始数据,确定所述初始数据对应的数据项;

遍历结束时,根据得到的属于同一数据项的初始数据、各第一更新数据及所述各第一更新数据之间的关联关系,确定上一次写入的各数据项对应的第一数据;

根据存储在初始数据块的所述数据项的初始数据、存储在变化数据块的所述数据项的各第一更新数据及所述各第一更新数据之间的关联关系,确定上次写入的所述数据项的第一数据,包括:

从所述确定的上一次写入的各数据项对应的第一数据中,获取所述待操作的数据项的第一数据。

可选地,所述的数据存储装置还包括:

读写模块m108(图11中未示出),用于确定满足同步条件时,将所述第一存储器中的数据同步到第二存储器;

确定需从第一存储器中读取数据时,从第二存储器中读取对应的数据;

确定需向第一存储器写入数据时,将写入的数据先写入第二存储器后,再同步写入到第一存储器中对应的所述初始数据块或所述变化数据块;

所述读取的数据包括初始数据、所述数据项的各第一更新数据及所述各第一更新数据之间的关联关系;

所述写入的数据包括所述初始数据、所述新的第一更新数据及其与所述各第一更新数据之间的关联关系。

可选地,响应于数据写入指令,根据操作信息确定所述数据项当前的第二数据相对于所述第一数据的第二更新数据,包括:

响应于数据写入指令,确定所述第二存储器记录对所述数据项的多次操作;

根据各次操作对所述数据项的第一数据的修改,得到所述数据项当前的第二数据和所述第二数据相对于所述第一数据的第二更新数据。

可选地,将所述新的第一更新数据及其与所述各第一更新数据之间的关联关系写入所述变化数据块,包括:

将所述新的第一更新数据及其与所述各第一更新数据之间的关联关系,封装为一个更新数据帧写入所述变化数据块;

或者,

当所述确定的第二更新数据的长度未超出预设长度时,将所述新的第一更新数据及其与所述各第一更新数据之间的关联关系,封装为一个更新数据帧写入所述变化数据块;当所述确定的第二更新数据的长度超出预设长度时,将所述新的第一更新数据分为多个部分更新数据;对每个部分更新数据,将所述部分更新数据、所述部分更新数据之间的关联关系、所述新的第一更新数据与确定的所述各第一更新数据之间的关联关系,封装为一个更新数据帧写入所述变化数据块。

可选地,所述更新数据帧还包括如下至少一项:

所述第一更新数据的长度或所述部分更新数据的长度;

所述更新数据帧的帧长度;

分隔标志,用于分隔不同更新数据帧;

填充数据,用于调整所述更新数据帧的长度;

数据校验标志,用于校验所述确定的更新数据或所述部分更新数据,和/或所述更新数据帧的完整性。

可选地,响应于数据写入指令之前,还包括:

响应于设备下电指令,触发所述数据写入指令;

和/或,确定所述待操作的数据项的数据发生变化时,触发所述数据写入指令。

在具体实施过程中,所述数据存储装置的具体工作原理与所述数据存储方法基本一致,所述数据存储装置的具体实施方式可以参见所述数据存储方法的实施方式,故不再赘述。

基于同一发明构思,本发明实施例还提供了一种电子设备,如图12所示,包括:处理器110和用于存储所述处理器110可执行指令的存储器120;其中,所述处理器110被配置为执行所述指令,以实现所述数据存储方法。

在具体实施过程中,所述设备可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上处理器110和存储器120,一个或一个以上存储应用程序131或数据132的存储介质130。其中,存储器120和存储介质130可以是短暂存储或持久存储。存储在存储介质130的应用程序131可以包括一个或一个以上所述模块(图12中未示出),每个模块可以包括对所述数据存储装置中的一系列指令操作。更进一步地,处理器110可以设置为与存储介质130通信,在所述设备上执行存储介质130中的一系列指令操作。所述设备还可以包括一个或一个以上电源(图12中未示出);一个或一个以上收发器140,所述收发器140包括有线或无线网络接口141,一个或一个以上输入输出接口142;和/或,一个或一个以上操作系统133,例如windows、macos、linux、ios、android、unix、freebsd等。

基于同一发明构思,本发明实施例还提供了一种存储介质,所述存储介质存储有计算机程序,所述计算机程序被用于实现所述的数据存储方法。

本发明实施例提供的一种数据存储方法、装置、电子设备及存储介质,通过将变化的数据项的数据相对于存储在所述第一存储器中的存储值的变化数据写入所述第一存储器,不再需要每次所述数据项的数据发生变化时对所述第一存储器都进行一次擦除操作,从而减少了对所述第一存储器的擦除次数,能够大幅提高所述第一存储器的使用寿命。

本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。

本申请是参照根据本申请的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1