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