一種在鍵-值系統(tǒng)中的數(shù)據(jù)存儲或讀取方法、裝置制造方法
【專利摘要】本申請公開了一種在鍵-值系統(tǒng)中的數(shù)據(jù)存儲或讀取方法、裝置。該方法包括:對于每一個鍵,將該鍵對應(yīng)的所有字段取值,按照預(yù)設(shè)的存儲結(jié)構(gòu)合并存儲為一個取值;確定該鍵的所有字段對應(yīng)的所有時間戳信息中最新的時間戳信息;在一行中存儲該鍵、合并存儲后的所述一個取值、以及該鍵的所有字段對應(yīng)的所有時間戳信息中最新的時間戳信息。應(yīng)用本發(fā)明能夠提高數(shù)據(jù)的寫入速度并節(jié)省存儲空間,和/或提高數(shù)據(jù)的讀取速度和效率。
【專利說明】一種在鍵-值系統(tǒng)中的數(shù)據(jù)存儲或讀取方法、裝置
【技術(shù)領(lǐng)域】
[0001]本申請涉及數(shù)據(jù)存儲【技術(shù)領(lǐng)域】,尤其涉及一種在鍵-值(Key-Value)系統(tǒng)中的數(shù)據(jù)存儲或讀取方法、裝置。
【背景技術(shù)】
[0002]Key-Value系統(tǒng)是當下比較流行的存儲系統(tǒng),其在構(gòu)建諸如搜索引擎、即時通訊(IM)服務(wù)器、點對點(P2P)服務(wù)器、游戲服務(wù)器等大型互聯(lián)網(wǎng)應(yīng)用服務(wù)器、以及提供云計算服務(wù)時經(jīng)常用到。
[0003]在Key-Value系統(tǒng)中,每一行數(shù)據(jù)存儲了一個鍵(Key)、該鍵對應(yīng)的一個值(Value)以及相應(yīng)的時間戳(timestamp)信息,當一個Key對應(yīng)有多個字段取值時,目前的Key-Value系統(tǒng)會存儲多個行,每行分別存儲Key以及該Key的一個字段的名稱、取值以及相應(yīng)的時間戳信息,具體請參見表一。
[0004]表一
[0005]
【權(quán)利要求】
1.一種在鍵-值系統(tǒng)中的數(shù)據(jù)存儲方法,其特征在于,該方法包括: 對于每一個鍵,將該鍵對應(yīng)的所有字段取值,按照預(yù)設(shè)的存儲結(jié)構(gòu)合并存儲為一個取值; 確定該鍵的所有字段對應(yīng)的所有時間戳信息中最新的時間戳信息; 在一行中存儲該鍵、合并存儲后的所述一個取值、以及該鍵的所有字段對應(yīng)的所有時間戳信息中最新的時間戳信息。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,按照預(yù)設(shè)的存儲結(jié)構(gòu)合并存儲為一個取值包括: 將不同字段的取值,按照不同的存儲類型進行存儲,并且,各個字段的取值按照預(yù)設(shè)順序依次存儲。
3.根據(jù)權(quán)利要求2所述的方法,其特征在于,各個字段的取值按照預(yù)設(shè)順序依次存儲包括: 任何兩個不同字段的取值之間均設(shè)置有分隔符; 或者,先存儲占用固定存儲空間大小的存儲類型對應(yīng)的字段取值,且占用固定存儲空間大小的不同存儲類型對應(yīng)的不同字段取值之間不設(shè)置分隔符,然后存儲占用可變存儲空間大小的存儲類型對應(yīng)的字段取值,且占用可變存儲空間大小的不同存儲類型對應(yīng)的不同字段取值之間設(shè)置有分隔符; 或者,先存儲占用可變存儲空間大小的存儲類型對應(yīng)的字段取值,且占用可變存儲空間大小的存儲類型對應(yīng)的字段取值的結(jié)尾處設(shè)置有分隔符,然后存儲占用固定存儲空間大小的存儲類型對應(yīng)的字段取值,且 占用固定存儲空間大小的不同存儲類型對應(yīng)的不同字段取值之間不設(shè)置分隔符。
4.根據(jù)權(quán)利要求1所述的方法,其特征在于,該方法還包括:將預(yù)設(shè)存儲結(jié)構(gòu)的信息存儲在預(yù)設(shè)位置。
5.根據(jù)權(quán)利要求1所述的方法,其特征在于,該方法還包括:當該鍵的所有字段中有任一字段的取值更新時,更新合并存儲后的所述一個取值,并更新所述最新的時間戳信息。
6.根據(jù)權(quán)利要求1所述的方法,其特征在于,該方法還包括: 在用于存儲鍵對應(yīng)的字段的字段名稱的存儲空間內(nèi),寫入該鍵對應(yīng)的所有字段中任一字段的字段名稱、或其他預(yù)設(shè)值。
7.—種在鍵-值系統(tǒng)中的數(shù)據(jù)讀取方法,其特征在于,該方法包括: 獲取用于將一個鍵對應(yīng)的所有字段取值合并存儲為一個取值的存儲結(jié)構(gòu)信息; 從一行中讀取一個鍵、該鍵的一個取值、以及該鍵的時間戳信息,所述時間戳信息為該鍵的所有字段對應(yīng)的所有時間戳信息中最新的時間戳信息; 根據(jù)獲取的存儲結(jié)構(gòu)信息,對讀取的所述一個取值進行解析,得到該鍵對應(yīng)的每個字段的取值,將讀取的所述時間戳信息確定為該鍵對應(yīng)的每個字段的時間戳信息。
8.根據(jù)權(quán)利要求7所述的方法,其特征在于,獲取用于將一個鍵對應(yīng)的所有字段取值合并存儲為一個取值的存儲結(jié)構(gòu)信息包括: 從預(yù)設(shè)位置處讀取用于將一個鍵對應(yīng)的所有字段取值合并存儲為一個取值的存儲結(jié)構(gòu)信息。
9.根據(jù)權(quán)利要求7所述的方法,其特征在于,根據(jù)獲取的存儲結(jié)構(gòu)信息,對讀取的所述一個取值進行解析,得到該鍵對應(yīng)的每個字段的取值包括: 按照各個字段的取值之間的存儲順序,根據(jù)不同字段的取值之間設(shè)置的分隔符、以及每個字段的存儲類型,從讀取的所述一個取值中解析出每個字段的取值; 或者,按照各個字段的取值之間的存儲順序,先根據(jù)占用的存儲空間大小,依次讀取占用固定存儲空間大小的不同存儲類型對應(yīng)的不同字段的取值,然后根據(jù)占用可變存儲空間大小的不同存儲類型對應(yīng)的不同字段取值之間設(shè)置的分隔符,依次讀取占用可變存儲空間大小的不同存儲類型對應(yīng)的不同字段的取值; 或者,按照各個字段的取值之間的存儲順序,先根據(jù)占用可變存儲空間大小的存儲類型對應(yīng)的字段取值結(jié)尾處設(shè)置的分隔符,依次讀取占用可變存儲空間大小的不同存儲類型對應(yīng)的不同字段的取值,然后根據(jù)占用的存儲空間大小,依次讀取占用固定存儲空間大小的不同存儲類型對應(yīng)的不同字段的取值。
10.一種在鍵-值系統(tǒng)中的數(shù)據(jù)存儲裝置,其特征在于,該裝置包括合并模塊、時間戳確定模塊和存儲模塊; 所述合并模塊,用于對于每一個鍵,將該鍵對應(yīng)的所有字段取值,按照預(yù)設(shè)的存儲結(jié)構(gòu)合并存儲為一個取值; 所述時間戳模塊,用于確定該鍵的所有字段對應(yīng)的所有時間戳信息中最新的時間戳信息; 所述存儲模塊,用于在一行中存儲該鍵、合并存儲后的所述一個取值、以及該鍵的所有字段對應(yīng)的所有 時間戳信息中最新的時間戳信息。
11.根據(jù)權(quán)利要求10所述的裝置,其特征在于, 所述合并模塊,用于將不同字段的取值,按照不同的存儲類型進行存儲,并且,各個字段的取值按照預(yù)設(shè)順序依次存儲。
12.根據(jù)權(quán)利要求11所述的裝置,其特征在于, 所述合并模塊,用于在任何兩個不同字段的取值之間均設(shè)置有分隔符,或者,先存儲占用固定存儲空間大小的存儲類型對應(yīng)的字段取值,且占用固定存儲空間大小的不同存儲類型對應(yīng)的不同字段取值之間不設(shè)置分隔符,然后存儲占用可變存儲空間大小的存儲類型對應(yīng)的字段取值,且占用可變存儲空間大小的不同存儲類型對應(yīng)的不同字段取值之間設(shè)置有分隔符,或者,先存儲占用可變存儲空間大小的存儲類型對應(yīng)的字段取值,且占用可變存儲空間大小的存儲類型對應(yīng)的字段取值的結(jié)尾處設(shè)置有分隔符,然后存儲占用固定存儲空間大小的存儲類型對應(yīng)的字段取值,且占用固定存儲空間大小的不同存儲類型對應(yīng)的不同字段取值之間不設(shè)置分隔符。
13.根據(jù)權(quán)利要求10所述的裝置,其特征在于, 所述存儲模塊,還用于將預(yù)設(shè)存儲結(jié)構(gòu)的信息存儲在預(yù)設(shè)位置。
14.根據(jù)權(quán)利要求10所述的裝置,其特征在于, 所述存儲模塊,用于當該鍵的所有字段中有任一字段的取值更新時,更新合并存儲后的所述一個取值,并更新所述最新的時間戳信息。
15.一種在鍵-值系統(tǒng)中的數(shù)據(jù)讀取裝置,其特征在于,該裝置包括獲取模塊、讀取模塊和解析模塊; 所述獲取模塊,獲取用于將一個鍵對應(yīng)的所有字段取值合并存儲為一個取值的存儲結(jié)構(gòu)信息; 所述讀取模塊,用于從一行中讀取一個鍵、該鍵的一個取值、以及該鍵的時間戳信息,所述時間戳信息為該鍵的所有字段對應(yīng)的所有時間戳信息中最新的時間戳信息; 所述解析模塊,用于根據(jù)獲取的存儲結(jié)構(gòu)信息,對讀取的所述一個取值進行解析,得到該鍵對應(yīng)的每個字段的取值,將讀取的所述時間戳信息確定為該鍵對應(yīng)的每個字段的時間戳信息。
16.根據(jù)權(quán)利要求15所述的裝置,其特征在于, 所述獲取模塊,用于從預(yù)設(shè)位置處讀取用于將一個鍵對應(yīng)的所有字段取值合并存儲為一個取值的存儲結(jié)構(gòu)信息。
17.根據(jù)權(quán)利要求15所述的裝置,其特征在于, 所述解析模塊,用于按照各個字段的取值之間的存儲順序,根據(jù)不同字段的取值之間設(shè)置的分隔符、以及每個字段的存儲類型,從讀取的所述一個取值中解析出每個字段的取值,或者,按照各個字段的取值之間的存儲順序,先根據(jù)占用的存儲空間大小,依次讀取占用固定存儲空間大小的不同存儲類型對應(yīng)的不同字段的取值,然后根據(jù)占用可變存儲空間大小的不同存儲類型對應(yīng)的不同字段取值之間設(shè)置的分隔符,依次讀取占用可變存儲空間大小的不同存儲類型對應(yīng)的不同字段的取值,或者,按照各個字段的取值之間的存儲順序,先根據(jù)占用可變存儲空間大小的存儲類型對應(yīng)的字段取值結(jié)尾處設(shè)置的分隔符,依次讀取占用可變存儲空間大小的不同存儲類型對應(yīng)的不同字段的取值,然后根據(jù)占用的存儲空間大小,依次讀取占 用固定存儲空間大小的不同存儲類型對應(yīng)的不同字段的取值。
【文檔編號】G06F3/06GK103885721SQ201210566836
【公開日】2014年6月25日 申請日期:2012年12月24日 優(yōu)先權(quán)日:2012年12月24日
【發(fā)明者】張寶海, 高峰 申請人:中國移動通信集團公司