本發(fā)明涉及存儲技術領域,特別是涉及一種數據存儲的方法及裝置。
背景技術:
隨著存儲技術的發(fā)展進步,所需存儲的數據長度也在不斷增加。
現有采用順序保存方式來將數據存儲在存儲介質中,該存儲介質可以為eeprom等存儲設備。當需要將數據存儲在eeprom等存儲介質時,一般地,按照(數據偏移,數據長度)對的形式進行順序保存。
但是,當所需存儲數據的數據長度發(fā)生變化時,例如,假定系統(tǒng)設計初期規(guī)定product_sn占7個字節(jié),在實現時將eeprom的0x0000—0x0006七個字節(jié)用于存放product_sn,并預留一個字節(jié)用于擴展;而從0x0008偏移處開始的四個字節(jié)用于存放節(jié)點的ipv4地址。在開發(fā)過程中,發(fā)現產品序列號product_sn需要由7位擴展為9位,按照傳統(tǒng)的形式組織eeprom中的數據,由于預留空間不足,首先需要將ipv4地址數據后移,為product_sn留出足夠的空間;而ipv4址數數據存放位置改變時,必須同時修改ipv4數據的描述信息即(數據偏移,數據長度)數據對;當eeprom中存入大量數據時,格式變更導致的存儲空間調整將變得異常復雜,復雜性甚至不亞于對eeprom空間進行重新分配。由上可知,采用順序保存的方式的存在較大弊端:當某條信息的格式發(fā)生變化,如長度變長而預留的空間不足以容納新的數據格式時,需要重新規(guī)劃所有數據在eeprom中的分布,造成前期工作的浪費;而為每條信息預留超過所需的存儲空間又勢必造成空間的浪費。
技術實現要素:
本發(fā)明的目的是提供一種數據存儲的方法及裝置,目的在于解決現有采用順序保存方式存儲數據的易擴展性較差的問題。
為解決上述技術問題,本發(fā)明提供一種數據存儲的方法,該方法包括:
當待存儲數據需要擴展時,獲取預設數據項描述信息的修改信息,其中,所述預設數據項描述信息為包括數據偏移信息、數據長度信息、最后字段信息和后續(xù)項信息的數據項屬性組信息;
根據所述修改信息,修改所述預設數據項描述信息,得出擴展數據項描述信息,所述修改信息為用于修改所述后續(xù)項信息和所述最后字段信息的信息;
根據所述擴展數據項描述信息,將擴展后的所述待存儲數據存儲至存儲介質。
可選地,在所述根據所述擴展數據項描述信息,將所述待存儲數據存儲至存儲介質之后還包括:
獲取數據讀取指令;
根據所述數據讀取指令包含的所述后續(xù)項信息和所述最后字段信息,讀取擴展數據和原存儲數據;
將所述控制數據和所述原存儲數據進行拼接,得出擴展后的所述待存儲數據。
可選地,所述存儲介質為eeprom。
此外,本發(fā)明還提供了一種數據存儲的裝置,該裝置包括:
修改信息獲取模塊,用于當待存儲數據需要擴展時,獲取預設數據項描述信息的修改信息,其中,所述預設數據項描述信息為包括數據偏移信息、數據長度信息、最后字段信息和后續(xù)項信息的數據項屬性組信息;
描述信息修改模塊,用于根據所述修改信息,修改所述預設數據項描述信息,得出擴展數據項描述信息,所述修改信息為用于修改所述后續(xù)項信息和所述最后字段信息的信息;
擴展存儲模塊,用于根據所述擴展數據項描述信息,將擴展后的所述待存儲數據存儲至存儲介質。
可選地,還包括:
讀取指令獲取模塊,用于獲取數據讀取指令;
讀取模塊,用于根據所述數據讀取指令包含的所述后續(xù)項信息和所述最后字段信息,讀取擴展數據和原存儲數據;
拼接模塊,用于將所述控制數據和所述原存儲數據進行拼接,得出擴展后的所述待存儲數據。
可選地,所述存儲介質為eeprom。
本發(fā)明所提供的一種數據存儲的方法及裝置,當待存儲數據需要擴展時,獲取預設數據項描述信息的修改信息,其中,上述預設數據項描述信息為包括數據偏移信息、數據長度信息、最后字段信息和后續(xù)項信息的數據項屬性組信息;根據修改信息,修改預設數據項描述信息,得出擴展數據項描述信息,上述修改信息為用于修改最后字段信息和后續(xù)項信息的信息;根據擴展數據項描述信息,將擴展后的待存儲數據存儲至存儲介質。本申請通過數據項描述信息屬性組描述每一項數據,當需要對數據長度進行擴展時,只需要簡單修改原數據項的最后字段信息和后續(xù)項信息,避免了數據項的擴展對其它數據項的影響;同時無需考慮為每個數據項預留存儲空間,降低了系統(tǒng)設計初期在存儲介質中進行數據布局設計的難度,進而提高了存儲數據的易擴展性。
附圖說明
為了更清楚的說明本發(fā)明實施例或現有技術的技術方案,下面將對實施例或現有技術描述中所需要使用的附圖作簡單的介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實施例,對于本領域普通技術人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據這些附圖獲得其他的附圖。
圖1為本發(fā)明實施例所提供的數據存儲方法的一種具體實施方式的流程示意圖;
圖2為本發(fā)明實施例所提供的數據存儲裝置的結構框圖。
具體實施方式
為了使本技術領域的人員更好地理解本發(fā)明方案,下面結合附圖和具體實施方式對本發(fā)明作進一步的詳細說明。顯然,所描述的實施例僅僅是本發(fā)明一部分實施例,而不是全部的實施例。基于本發(fā)明中的實施例,本領域普通技術人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。
請參見圖1,圖1為本發(fā)明實施例所提供的數據存儲方法的一種具體實施方式的流程示意圖,該方法包括以下步驟:
步驟101:當待存儲數據需要擴展時,獲取預設數據項描述信息的修改信息,其中,所述預設數據項描述信息為包括數據偏移信息、數據長度信息、最后字段信息和后續(xù)項信息的數據項屬性組信息。
可以理解,上述最后字段信息可以是指表征待存儲數據的各行數據是否為最后字段的信息,即表明各個數據是否為最后數據,具體地可以用is_end表示,當is_end列為false時,表明該行數據不是最后的數據;當is_end列為true時,表明該行數據是最后的數據。
上述后續(xù)項信息可以表明后續(xù)一行數據項的信息,具體可以用next_field來表示,當is_end列為false時,next_field列則表明后續(xù)數據的所在行。
步驟102:根據所述修改信息,修改所述預設數據項描述信息,得出擴展數據項描述信息,所述修改信息為用于修改所述后續(xù)項信息和所述最后字段信息的信息。
上述修改信息可以是指用戶根據需要對上述后續(xù)線信息和最后字段信息配置的信息,例如,可以將is_end列由true改為false。
步驟103:根據所述擴展數據項描述信息,將擴展后的所述待存儲數據存儲至存儲介質。
可以理解,上述存儲介質優(yōu)選地為eeprom,當然,也可以具體為其它存儲介質,在此不作限定。
為了更好地介紹整個擴展存儲的過程,下面將以product_sn(產品的序列號)存儲至eeprom為例進行介紹說明。
假定系統(tǒng)設計初期規(guī)定product_sn占7個字節(jié),在實現時將eeprom的0x0000—0x0006七個字節(jié)用于存放product_sn,并預留一個字節(jié)用于擴展;而從0x0008偏移處開始的四個字節(jié)用于存放節(jié)點的ipv4地址。
而開發(fā)過程中,發(fā)現product_sn需要由7位擴展為9位,采用如下文所示的eeprom_dafa_field屬性數組描述每一個數據項的信息,每一行用于描述data_filed_enum中的一項在eeprom中的存儲方式,數組中l(wèi)ast_field_e項之前的每一行表示基礎行;last_field_e項之后的每一行表示擴展行,是對基礎行中數據的擴展;每一列表示數據的一個屬性,其中is_end列表示該行數據是否最后的數據,當is_end列為false時next_field列表明后續(xù)數據的所在行。
當eeprom中的product_sn_e需要由7字節(jié)擴展為9字節(jié)時,只需要將product_sn_e對應的行的is_end項由true改為false,表明該行的數據不是最終數據;在eeprom中尋找一塊2字節(jié)的空閑空間存放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。
作為一種具體實施方式,在上述根據所述擴展數據項描述信息,將所述待存儲數據存儲至存儲介質之后還可以包括:獲取數據讀取指令;根據所述數據讀取指令包含的所述后續(xù)項信息和所述最后字段信息,讀取擴展數據和原存儲數據;將所述控制數據和所述原存儲數據進行拼接,得出擴展后的所述待存儲數據。
本實施例所提供的數據存儲的方法,當待存儲數據需要擴展時,獲取預設數據項描述信息的修改信息,其中,上述預設數據項描述信息為包括數據偏移信息、數據長度信息、最后字段信息和后續(xù)項信息的數據項屬性組信息;根據修改信息,修改預設數據項描述信息,得出擴展數據項描述信息,上述修改信息為用于修改最后字段信息和后續(xù)項信息的信息;根據擴展數據項描述信息,將擴展后的待存儲數據存儲至存儲介質。該方法通過數據項描述信息屬性組描述每一項數據,當需要對數據長度進行擴展時,只需要簡單修改原數據項的最后字段信息和后續(xù)項信息,避免了數據項的擴展對其它數據項的影響;同時無需考慮為每個數據項預留存儲空間,降低了系統(tǒng)設計初期在存儲介質中進行數據布局設計的難度,進而提高了存儲數據的易擴展性。
下面對本發(fā)明實施例提供的數據存儲裝置進行介紹,下文描述的數據存儲裝置與上文描述的數據存儲方法可相互對應參照。
圖2為本發(fā)明實施例所提供的數據存儲裝置的結構框圖,參照圖2數據存儲裝置可以包括:
修改信息獲取模塊21,用于當待存儲數據需要擴展時,獲取預設數據項描述信息的修改信息,其中,所述預設數據項描述信息為包括數據偏移信息、數據長度信息、最后字段信息和后續(xù)項信息的數據項屬性組信息;
描述信息修改模塊22,用于根據所述修改信息,修改所述預設數據項描述信息,得出擴展數據項描述信息,所述修改信息為用于修改所述后續(xù)項信息和所述最后字段信息的信息;
擴展存儲模塊23,用于根據所述擴展數據項描述信息,將擴展后的所述待存儲數據存儲至存儲介質。
可選地,還包括:
讀取指令獲取模塊,用于獲取數據讀取指令;
讀取模塊,用于根據所述數據讀取指令包含的所述后續(xù)項信息和所述最后字段信息,讀取擴展數據和原存儲數據;
拼接模塊,用于將所述控制數據和所述原存儲數據進行拼接,得出擴展后的所述待存儲數據。
可選地,所述存儲介質為eeprom。
本實施例所提供的數據存儲的裝置,通過數據項描述信息屬性組描述每一項數據,當需要對數據長度進行擴展時,只需要簡單修改原數據項的最后字段信息和后續(xù)項信息,避免了數據項的擴展對其它數據項的影響;同時無需考慮為每個數據項預留存儲空間,降低了系統(tǒng)設計初期在存儲介質中進行數據布局設計的難度,進而提高了存儲數據的易擴展性。
本說明書中各個實施例采用遞進的方式描述,每個實施例重點說明的都是與其它實施例的不同之處,各個實施例之間相同或相似部分互相參見即可。對于實施例公開的裝置而言,由于其與實施例公開的方法相對應,所以描述的比較簡單,相關之處參見方法部分說明即可。
以上對本發(fā)明所提供的數據存儲的方法及裝置進行了詳細介紹。本文中應用了具體個例對本發(fā)明的原理及實施方式進行了闡述,以上實施例的說明只是用于幫助理解本發(fā)明的方法及其核心思想。應當指出,對于本技術領域的普通技術人員來說,在不脫離本發(fā)明原理的前提下,還可以對本發(fā)明進行若干改進和修飾,這些改進和修飾也落入本發(fā)明權利要求的保護范圍內。