本发明涉及存储技术领域,特别是涉及一种数据存储的方法及装置。
背景技术:
随着存储技术的发展进步,所需存储的数据长度也在不断增加。
现有采用顺序保存方式来将数据存储在存储介质中,该存储介质可以为eeprom等存储设备。当需要将数据存储在eeprom等存储介质时,一般地,按照(数据偏移,数据长度)对的形式进行顺序保存。
但是,当所需存储数据的数据长度发生变化时,例如,假定系统设计初期规定product_sn占7个字节,在实现时将eeprom的0x0000—0x0006七个字节用于存放product_sn,并预留一个字节用于扩展;而从0x0008偏移处开始的四个字节用于存放节点的ipv4地址。在开发过程中,发现产品序列号product_sn需要由7位扩展为9位,按照传统的形式组织eeprom中的数据,由于预留空间不足,首先需要将ipv4地址数据后移,为product_sn留出足够的空间;而ipv4址数数据存放位置改变时,必须同时修改ipv4数据的描述信息即(数据偏移,数据长度)数据对;当eeprom中存入大量数据时,格式变更导致的存储空间调整将变得异常复杂,复杂性甚至不亚于对eeprom空间进行重新分配。由上可知,采用顺序保存的方式的存在较大弊端:当某条信息的格式发生变化,如长度变长而预留的空间不足以容纳新的数据格式时,需要重新规划所有数据在eeprom中的分布,造成前期工作的浪费;而为每条信息预留超过所需的存储空间又势必造成空间的浪费。
技术实现要素:
本发明的目的是提供一种数据存储的方法及装置,目的在于解决现有采用顺序保存方式存储数据的易扩展性较差的问题。
为解决上述技术问题,本发明提供一种数据存储的方法,该方法包括:
当待存储数据需要扩展时,获取预设数据项描述信息的修改信息,其中,所述预设数据项描述信息为包括数据偏移信息、数据长度信息、最后字段信息和后续项信息的数据项属性组信息;
根据所述修改信息,修改所述预设数据项描述信息,得出扩展数据项描述信息,所述修改信息为用于修改所述后续项信息和所述最后字段信息的信息;
根据所述扩展数据项描述信息,将扩展后的所述待存储数据存储至存储介质。
可选地,在所述根据所述扩展数据项描述信息,将所述待存储数据存储至存储介质之后还包括:
获取数据读取指令;
根据所述数据读取指令包含的所述后续项信息和所述最后字段信息,读取扩展数据和原存储数据;
将所述控制数据和所述原存储数据进行拼接,得出扩展后的所述待存储数据。
可选地,所述存储介质为eeprom。
此外,本发明还提供了一种数据存储的装置,该装置包括:
修改信息获取模块,用于当待存储数据需要扩展时,获取预设数据项描述信息的修改信息,其中,所述预设数据项描述信息为包括数据偏移信息、数据长度信息、最后字段信息和后续项信息的数据项属性组信息;
描述信息修改模块,用于根据所述修改信息,修改所述预设数据项描述信息,得出扩展数据项描述信息,所述修改信息为用于修改所述后续项信息和所述最后字段信息的信息;
扩展存储模块,用于根据所述扩展数据项描述信息,将扩展后的所述待存储数据存储至存储介质。
可选地,还包括:
读取指令获取模块,用于获取数据读取指令;
读取模块,用于根据所述数据读取指令包含的所述后续项信息和所述最后字段信息,读取扩展数据和原存储数据;
拼接模块,用于将所述控制数据和所述原存储数据进行拼接,得出扩展后的所述待存储数据。
可选地,所述存储介质为eeprom。
本发明所提供的一种数据存储的方法及装置,当待存储数据需要扩展时,获取预设数据项描述信息的修改信息,其中,上述预设数据项描述信息为包括数据偏移信息、数据长度信息、最后字段信息和后续项信息的数据项属性组信息;根据修改信息,修改预设数据项描述信息,得出扩展数据项描述信息,上述修改信息为用于修改最后字段信息和后续项信息的信息;根据扩展数据项描述信息,将扩展后的待存储数据存储至存储介质。本申请通过数据项描述信息属性组描述每一项数据,当需要对数据长度进行扩展时,只需要简单修改原数据项的最后字段信息和后续项信息,避免了数据项的扩展对其它数据项的影响;同时无需考虑为每个数据项预留存储空间,降低了系统设计初期在存储介质中进行数据布局设计的难度,进而提高了存储数据的易扩展性。
附图说明
为了更清楚的说明本发明实施例或现有技术的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单的介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例所提供的数据存储方法的一种具体实施方式的流程示意图;
图2为本发明实施例所提供的数据存储装置的结构框图。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面结合附图和具体实施方式对本发明作进一步的详细说明。显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
请参见图1,图1为本发明实施例所提供的数据存储方法的一种具体实施方式的流程示意图,该方法包括以下步骤:
步骤101:当待存储数据需要扩展时,获取预设数据项描述信息的修改信息,其中,所述预设数据项描述信息为包括数据偏移信息、数据长度信息、最后字段信息和后续项信息的数据项属性组信息。
可以理解,上述最后字段信息可以是指表征待存储数据的各行数据是否为最后字段的信息,即表明各个数据是否为最后数据,具体地可以用is_end表示,当is_end列为false时,表明该行数据不是最后的数据;当is_end列为true时,表明该行数据是最后的数据。
上述后续项信息可以表明后续一行数据项的信息,具体可以用next_field来表示,当is_end列为false时,next_field列则表明后续数据的所在行。
步骤102:根据所述修改信息,修改所述预设数据项描述信息,得出扩展数据项描述信息,所述修改信息为用于修改所述后续项信息和所述最后字段信息的信息。
上述修改信息可以是指用户根据需要对上述后续线信息和最后字段信息配置的信息,例如,可以将is_end列由true改为false。
步骤103:根据所述扩展数据项描述信息,将扩展后的所述待存储数据存储至存储介质。
可以理解,上述存储介质优选地为eeprom,当然,也可以具体为其它存储介质,在此不作限定。
为了更好地介绍整个扩展存储的过程,下面将以product_sn(产品的序列号)存储至eeprom为例进行介绍说明。
假定系统设计初期规定product_sn占7个字节,在实现时将eeprom的0x0000—0x0006七个字节用于存放product_sn,并预留一个字节用于扩展;而从0x0008偏移处开始的四个字节用于存放节点的ipv4地址。
而开发过程中,发现product_sn需要由7位扩展为9位,采用如下文所示的eeprom_dafa_field属性数组描述每一个数据项的信息,每一行用于描述data_filed_enum中的一项在eeprom中的存储方式,数组中last_field_e项之前的每一行表示基础行;last_field_e项之后的每一行表示扩展行,是对基础行中数据的扩展;每一列表示数据的一个属性,其中is_end列表示该行数据是否最后的数据,当is_end列为false时next_field列表明后续数据的所在行。
当eeprom中的product_sn_e需要由7字节扩展为9字节时,只需要将product_sn_e对应的行的is_end项由true改为false,表明该行的数据不是最终数据;在eeprom中寻找一块2字节的空闲空间存放product_sn_e的扩展部分;在eeprom_dafa_field中增加一行(last_field_e+1)用于描述扩展的eeprom存储空间;将product_sn_e对应的行的next_field列修改为扩展的eeprom存储空间中新增的行。
对eeprom中的数据进行扩展存储后,在读取product_sn_e时,可以通过is_end为false判断该行数据不完全,再根据next_filed列找到扩展数据,将两者拼接成完整的product_sn。
作为一种具体实施方式,在上述根据所述扩展数据项描述信息,将所述待存储数据存储至存储介质之后还可以包括:获取数据读取指令;根据所述数据读取指令包含的所述后续项信息和所述最后字段信息,读取扩展数据和原存储数据;将所述控制数据和所述原存储数据进行拼接,得出扩展后的所述待存储数据。
本实施例所提供的数据存储的方法,当待存储数据需要扩展时,获取预设数据项描述信息的修改信息,其中,上述预设数据项描述信息为包括数据偏移信息、数据长度信息、最后字段信息和后续项信息的数据项属性组信息;根据修改信息,修改预设数据项描述信息,得出扩展数据项描述信息,上述修改信息为用于修改最后字段信息和后续项信息的信息;根据扩展数据项描述信息,将扩展后的待存储数据存储至存储介质。该方法通过数据项描述信息属性组描述每一项数据,当需要对数据长度进行扩展时,只需要简单修改原数据项的最后字段信息和后续项信息,避免了数据项的扩展对其它数据项的影响;同时无需考虑为每个数据项预留存储空间,降低了系统设计初期在存储介质中进行数据布局设计的难度,进而提高了存储数据的易扩展性。
下面对本发明实施例提供的数据存储装置进行介绍,下文描述的数据存储装置与上文描述的数据存储方法可相互对应参照。
图2为本发明实施例所提供的数据存储装置的结构框图,参照图2数据存储装置可以包括:
修改信息获取模块21,用于当待存储数据需要扩展时,获取预设数据项描述信息的修改信息,其中,所述预设数据项描述信息为包括数据偏移信息、数据长度信息、最后字段信息和后续项信息的数据项属性组信息;
描述信息修改模块22,用于根据所述修改信息,修改所述预设数据项描述信息,得出扩展数据项描述信息,所述修改信息为用于修改所述后续项信息和所述最后字段信息的信息;
扩展存储模块23,用于根据所述扩展数据项描述信息,将扩展后的所述待存储数据存储至存储介质。
可选地,还包括:
读取指令获取模块,用于获取数据读取指令;
读取模块,用于根据所述数据读取指令包含的所述后续项信息和所述最后字段信息,读取扩展数据和原存储数据;
拼接模块,用于将所述控制数据和所述原存储数据进行拼接,得出扩展后的所述待存储数据。
可选地,所述存储介质为eeprom。
本实施例所提供的数据存储的装置,通过数据项描述信息属性组描述每一项数据,当需要对数据长度进行扩展时,只需要简单修改原数据项的最后字段信息和后续项信息,避免了数据项的扩展对其它数据项的影响;同时无需考虑为每个数据项预留存储空间,降低了系统设计初期在存储介质中进行数据布局设计的难度,进而提高了存储数据的易扩展性。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
以上对本发明所提供的数据存储的方法及装置进行了详细介绍。本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以对本发明进行若干改进和修饰,这些改进和修饰也落入本发明权利要求的保护范围内。