[發明專利]數據存儲、數據獲取方法及設備有效
| 申請號: | 201811095845.8 | 申請日: | 2018-09-19 |
| 公開(公告)號: | CN110928483B | 公開(公告)日: | 2021-04-09 |
| 發明(設計)人: | 單衛華;董陽 | 申請(專利權)人: | 華為技術有限公司 |
| 主分類號: | G06F3/06 | 分類號: | G06F3/06 |
| 代理公司: | 北京三高永信知識產權代理有限責任公司 11138 | 代理人: | 肖慶武 |
| 地址: | 518129 廣東*** | 國省代碼: | 廣東;44 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 數據 存儲 獲取 方法 設備 | ||
本申請提供了一種數據存儲方法。該方法通過將鍵值對的鍵從對象轉換為哈希值,將鍵值對的值從對象轉換為實例數據,改進了鍵和值本身的數據結構,去除了鍵和值的對象頭以及對齊填充等部分,也就節省了對象頭以及對齊填充占用的存儲空間,因此減少了鍵值對中對象本身的存儲開銷,實現了對鍵值對壓縮存儲的功能,提高了鍵值存儲的效率,降低了由于內存空間過大而觸發的內存回收等問題的概率,從而提高存儲系統的性能。
技術領域
本申請涉及存儲技術領域,特別涉及一種數據存儲、數據獲取方法及設備。
背景技術
鍵值(key-value,縮寫:KV)存儲是一種重要的存儲技術。使用鍵值存儲時,會將數據按照鍵值對的形式進行組織、索引和存儲。對于任一鍵值對來說,根據該鍵值對的鍵進行鍵值查詢,即可得到該鍵值對的值。
在JAVA等面向對象的程序語言中,任意鍵值對的鍵是一種對象,任意鍵值對的值也是一種對象。在數據存儲階段,當得到需要存儲的鍵值對時,會確定鍵值對的鍵,得到鍵對象,確定鍵值對的值,得到值對象,以鍵對象為鍵,以值對象為值,進行鍵值存儲。在數據查詢階段,當得到鍵對象時,會以鍵對象為鍵,進行鍵值查詢,得到值對象,輸出值對象。
目前的鍵值對的數據量較大,鍵值對占用的存儲空間較多,影響了存儲設備的存儲性能。
發明內容
本申請實施例提供了一種數據存儲、數據獲取方法及設備,能夠解決相關技術中鍵值對的數據量較大、占用的存儲空間較多的技術問題。所述技術方案如下:
第一方面,提供了一種數據存儲方法,所述方法包括:
獲取待處理的鍵值對,所述鍵值對的鍵為第一對象,所述鍵值對的值為第二對象;
對所述第一對象進行處理,得到所述第一對象的哈希值;
對所述第二對象進行拆箱轉換,得到所述第二對象的實例數據;
將所述哈希值和所述實例數據分別存儲至第一數組和第二數組,所述第一數組和所述第二數組不同。
本實施例提供的方法,通過將鍵值對的鍵從對象轉換為哈希值,將鍵值對的值從對象轉換為實例數據,改進了鍵和值本身的數據結構,去除了鍵和值的對象頭以及對齊填充等部分,從而節省了對象頭以及對齊填充占用的存儲空間,因此減少了鍵值對中對象本身帶來的存儲開銷,實現了對鍵值對進行壓縮存儲的功能,減少了鍵值存儲需要占用的存儲空間,提高了鍵值存儲的效率。并且,通過改進了基于鏈表的存儲結構,使用多數組的存儲結構存儲鍵值對,可以避免遍歷鏈表中的節點造成的時間開銷,從而提高存儲鍵值對的速度。尤其是,應用在通過內存空間存儲鍵值對的場景中,通過節約鍵值對中對象本身占用的內存,可以極大地節約鍵值對占用的內存空間,也就降低了鍵值對占用的內存空間過大時會觸發的內存回收以及其他資源和性能問題的概率,因此可以顯著地提高存儲系統的性能。
可選地,所述對所述第一對象進行處理,得到所述第一對象的哈希值,包括:
獲取所述第一對象包括的所述哈希值。
通過這種可選方式,若第一對象本身就封裝了哈希值,則可以直接獲取第一對象本身的哈希值,從而復用該哈希值以進行存儲,而無需進行哈希運算,從而提高了運算效率。
可選地,所述對所述第一對象進行處理,得到所述第一對象的哈希值,包括:
對所述第一對象進行哈希運算,得到所述哈希值。
可選地,所述獲取待處理的鍵值對,包括:
從哈希表的鏈表的任一節點中讀取所述鍵值對。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于華為技術有限公司,未經華為技術有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201811095845.8/2.html,轉載請聲明來源鉆瓜專利網。
- 上一篇:一種數據查詢、數據表建立方法、裝置及設備
- 下一篇:一種加工中心
- 數據顯示系統、數據中繼設備、數據中繼方法、數據系統、接收設備和數據讀取方法
- 數據記錄方法、數據記錄裝置、數據記錄媒體、數據重播方法和數據重播裝置
- 數據發送方法、數據發送系統、數據發送裝置以及數據結構
- 數據顯示系統、數據中繼設備、數據中繼方法及數據系統
- 數據嵌入裝置、數據嵌入方法、數據提取裝置及數據提取方法
- 數據管理裝置、數據編輯裝置、數據閱覽裝置、數據管理方法、數據編輯方法以及數據閱覽方法
- 數據發送和數據接收設備、數據發送和數據接收方法
- 數據發送裝置、數據接收裝置、數據收發系統、數據發送方法、數據接收方法和數據收發方法
- 數據發送方法、數據再現方法、數據發送裝置及數據再現裝置
- 數據發送方法、數據再現方法、數據發送裝置及數據再現裝置





