數據存儲結構的轉換方法及裝置的制造方法
【技術領域】
[0001]本發明涉及計算機技術領域,具體而言,本發明涉及的一種數據存儲結構的轉換方法及裝置。
【背景技術】
[0002]隨著信息時代的迅速發展,不僅在大企業,甚至一些小企業也積累了 TB量級的數據,各種規模的組織開始有了處理大規模及多重數據種類的數據的需求,而傳統的關系型數據庫(SQL數據庫)在數據存儲的可擴展方面幾乎達到極限。為了解決大規模數據集合及多重數據種類帶來的挑戰和大數據應用的難題,非關系型數據庫(NoSQL數據庫)應運而生。
[0003]常用的非關系型數據庫包括KV(Key-Value,鍵值)存儲數據庫,其數據按照鍵值對的形式進行組織、索引和存儲。KV存儲方式非常適合不涉及過多數據關系及業務關系的數據存儲業務,其能有效減少讀寫磁盤的次數,比SQL數據庫存儲擁有更好的讀寫性能,KV存儲數據庫的可實現方式包括Redis和LevelDB等,LevelDB能夠支持bill1n級別的數據量,且在這個數量級別下還能夠保持非常高的數據存儲處理性能,同時,LevelDB可將數據存儲至磁盤,有利于數據的永久保存;但是,目前LevelDB的接口僅支持無變形的key-value (鍵值對)型數據,接口較為單一,對業務的可擴展性較差。Redis是一種高性能的key-value存儲系統,其可支持多種value類型的數據存儲結構,包括string(字符串)類型、list (鏈表)類型、set (集合)類型、zset (有序集合)類型和hash(哈希)類型,但是,為了保證較高的數據存儲處理效率,其數據都是緩存在內存中,即Redis為一種內存型數據庫,因此該存儲方式受物理內存限制,無法實現大數據存儲。
[0004]由此可見,如何實現一種數據存儲處理效率較高、既支持多種類型的數據存儲結構、又不受物理內存限制的存儲系統是目前急需解決的問題。
【發明內容】
[0005]為克服上述技術問題或者至少部分地解決上述技術問題,特提出以下技術方案:
[0006]本發明的實施例提出了一種數據存儲結構的轉換方法,包括:
[0007]提取基于原始鏈表存儲結構的同一鏈表中各個待轉換數據的位置標識以及所述鏈表的鏈表標識,并將所述鏈表標識及所述各個待轉換數據的位置標識分別進行合并,以確定與所述各個待轉換數據相應的轉換存儲結構中的鍵;
[0008]提取與所述各個待轉換數據在所述鏈表中左右相鄰兩個數據中的位置標識以及所述各個待轉換數據中的value數據單元,并將提取到的與所述各個待轉換數據在所述鏈表中左右相鄰兩個數據中的位置標識與提取到的所述各個待轉換數據中的value數據單元分別進行合并,以確定為所述各個待轉換數據的轉換存儲結構中的值;
[0009]根據所述轉換存儲結構,將所述鍵及所述值組成的數據鍵值對存儲至鍵值數據庫中。
[0010]優選地,該方法還包括:
[0011]確定所述鏈表中與原始鏈表存儲結構相應的結構相關信息;
[0012]將以預定的鏈表信息標識為鍵、以所述結構相關信息為值組成的結構鍵值對與所述同一鏈表中的各個待轉換數據相關聯地存儲至鍵值數據庫中。
[0013]其中,所述結構相關信息,至少包括:
[0014]所述鏈表中的待轉換數據的數量;
[0015]所述鏈表中的下一可用的位置標識;
[0016]所述鏈表的頭部數據的位置標識;
[0017]所述鏈表的尾部數據的位置標識。
[0018]其中,所述預定的鏈表信息標識,至少包括:
[0019]所述鏈表的鏈表標識;可變量標識。
[0020]優選地,該方法還包括:
[0021]當對任一待更新的數據鍵值對進行更新操作時,對與該待更新的數據鍵值在所述鏈表中左右相鄰的兩個數據對應的數據鍵值對進行相應更新
[0022]并對與該待更新的數據鍵值對相關聯的結構鍵值對進行相應更新。
[0023]本發明中另一實施例還提出了一種數據存儲結構的轉換裝置,其特征在于,包括:
[0024]鍵確定模塊,用于提取基于原始鏈表存儲結構的同一鏈表中各個待轉換數據的位置標識以及所述鏈表的鏈表標識,并將所述鏈表標識及所述各個待轉換數據的位置標識分別進行合并,以確定與所述各個待轉換數據相應的轉換存儲結構中的鍵;
[0025]值確定模塊,用于提取與所述各個待轉換數據在所述鏈表中左右相鄰兩個數據中的位置標識以及所述各個待轉換數據中的value數據單元,并將提取到的與所述各個待轉換數據在所述鏈表中左右相鄰兩個數據中的位置標識與提取到的所述各個待轉換數據中的value數據單元分別進行合并,以確定為所述各個待轉換數據的轉換存儲結構中的值;
[0026]數據鍵值對存儲模塊,用于根據所述轉換存儲結構,將所述鍵及所述值組成的數據鍵值對存儲至鍵值數據庫中。
[0027]優選地,該裝置還包括:
[0028]結構確定模塊,用于確定所述鏈表中與原始鏈表存儲結構相應的結構相關信息;
[0029]結構鍵值對存儲模塊,用于將以預定的鏈表信息標識為鍵、以所述結構相關信息為值組成的結構鍵值對與所述同一鏈表中的各個待轉換數據相關聯地存儲至鍵值數據庫中。
[0030]其中,所述結構相關信息,至少包括:
[0031 ] 所述鏈表中的待轉換數據的數量;
[0032]所述鏈表中的下一可用的位置標識;
[0033]所述鏈表的頭部數據的位置標識;
[0034]所述鏈表的尾部數據的位置標識。
[0035]其中,所述預定的鏈表信息標識,至少包括:
[0036]所述鏈表的鏈表標識;可變量標識。
[0037]優選地,該裝置還包括:
[0038]更新模塊,用于
[0039]當對任一待更新的數據鍵值對進行更新操作時,對與該待更新的數據鍵值在所述鏈表中左右相鄰的兩個數據對應的數據鍵值對進行相應更新,
[0040]并對與該待更新的數據鍵值對相關聯的結構鍵值對進行相應更新。
[0041]本發明的實施例中,提出了一種數據存儲結構的轉換方案,通過將基于原始存儲結構的數據轉換存儲為基于轉換存儲結構中的數據,實現對多種存儲數據類型以統一的轉換存儲結構的方式進行數據存儲。進一步的,將支持多種value類型的數據存儲結構的Redis存儲系統中的多種數據存儲結構的數據,轉存至僅支持無變形的鍵值對數據存儲結構的LevelDB存儲系統,實現了在保證較高的數據存儲處理效率的前提下,將受物理內存限制的存儲方式轉換為以磁盤為數據存儲目標的、不受物理內存限制的存儲方式。通過本發明,最終可實現一種數據存儲處理效率較高、既支持多種類型的數據存儲結構、又不受物理內存限制的存儲系統,由于該存儲系統可對多種數據結構類型的海量數據進行高效存儲,從而使得本方案的數據存儲方式擁有較強的業務擴展性。
[0042]本發明附加的方面和優點將在下面的描述中部分給出,這些將從下面的描述中變得明顯,或通過本發明的實踐了解到。
【附圖說明】
[0043]本發明上述的和/或附加的方面和優點從下面結合附圖對實施例的描述中將變得明顯和容易理解,其中:
[0044]圖1為本發明中一個實施例的數據存儲結構的轉換方法的流程圖;
[0045]圖2為本發明中一個優選實施例的數據存儲結構的轉換方法的流程圖;
[0046]圖3為本發明中另一實施例的數據存儲結構的轉換裝置的結構示意圖;
[0047]圖4為本發明中另一優選實施例的數據存儲結構的轉換的裝置的結構示意圖;
[0048]圖5為list類型鏈表中的一個待轉換數據的結構示意圖;
[0049]圖6為一個list類型鏈表中各待轉換數據的位置標識及結構示意圖;
[0050]圖7為在圖6的list類型鏈表中第三節點處添加一新節點后的各數據的位置標識及結構示意圖;
[0051]圖8為在圖7的list類型鏈表中刪除第二節點后的各數據的位置標識及結構示意圖。
【具體實施方式】
[0052]下面詳細描述本發明的實施例,所述實施例的示例在附圖中示出,其中自始至終相同或類似的標號表示相同或類似的元件或具有相同或類似功能的元件。下面通過參考附圖描