本發明專利技術實施例提供了一種數據讀取及寫入的方法和裝置,其中所述數據讀取方法包括:接收數據讀取請求,所述數據讀取請求包括目標數據記錄標識;當在預設的關系數據表中匹配到所述目標數據記錄標識時,獲得與所述目標數據記錄標識對應的目標數據記錄虛擬地址;其中,所述關系數據表包括多個數據記錄標識與對應的數據記錄的虛擬地址的關聯關系;計算所述目標數據記錄虛擬地址對應的物理地址,其中,所述物理地址中存儲數據記錄標識與對應的數據內容的鍵值對;從所述物理地址中獲得與所述目標數據記錄標識對應的數據內容。本發明專利技術可以提高數據處理效率。
【技術實現步驟摘要】
本專利技術涉及數據存儲
,特別是涉及一種數據讀取方法,一種數據寫入方 法,一種數據讀取裝置和一種數據寫入裝置。
技術介紹
可靠性及可擴展性的海量數據存儲對互聯網公司來說是一個巨大的挑戰,傳統的 數據庫往往很難滿足該需求,并且很多時候對于特定的系統絕大部分的檢索都是基于主鍵 的的查詢,在這種情況下使用關系型數據庫將使得效率低下,并且擴展也將成為未來很大 的難題。在這樣的情況下,使用Key-value存儲將會是一個很好的選擇。 然而,目前大部分的Key-value存儲系統都用于分布式環境中,數據通過socket 傳輸,數據處理效率低下。
技術實現思路
本專利技術實施例所要解決的技術問題是提供一種數據讀取方法及一種數據寫入方 法,提高數據處理效率。 相應的,本專利技術實施例還提供了一種數據讀取裝置及一種數據寫入裝置,用以保 證上述方法的實現及應用。 為了解決上述問題,本專利技術公開了一種數據讀取方法,所述方法包括: 接收數據讀取請求,所述數據讀取請求包括目標數據記錄標識; 當在預設的關系數據表中匹配到所述目標數據記錄標識時,獲得與所述目標數據 記錄標識對應的目標數據記錄虛擬地址;其中,所述關系數據表包括多個數據記錄標識與 對應的數據記錄的虛擬地址的關聯關系; 計算所述目標數據記錄虛擬地址對應的物理地址,其中,所述物理地址中存儲數 據記錄標識與對應的數據內容的鍵值對; 從所述物理地址中獲得與所述目標數據記錄標識對應的數據內容。 優選地,所述關系數據表保存在共享內存中。 優選地,所述關系數據表包括數據頭、索引記錄以及數據記錄; 所述數據頭進一步包括索引根節點,空閑數據記錄索引根節點,空閑索引記錄根 節點; 其中,所述索引根節點用于記錄數據記錄標識及對應的已使用的索引節點的虛擬 地址; 所述索引記錄用于記錄所述索引節點的信息,所述索引節點的信息包括數據記錄 標識與對應的數據記錄的虛擬地址; 所述數據記錄用于記錄已寫入的數據記錄標識和對應的數據內容; 所述空閑數據記錄索引根節點用于記錄未使用的數據記錄的虛擬地址; 所述空閑索引記錄根節點用于記錄未使用的索引節點的虛擬地址。 優選地,所述虛擬地址包括高16位及低16位兩部分,所述高16位中記錄對應的 索引節點的地址相對數據頭的偏移,所述低16位中記錄所述索引節點內部的偏移。 優選地,在所述當在預設的關系數據表中匹配到所述目標數據記錄標識時,獲得 與所述目標數據記錄標識對應的目標數據記錄虛擬地址的步驟之前,還包括: 在所述索引根節點中匹配所述目標數據記錄標識,獲取對應的索引節點的虛擬地 址; 計算所述索引節點的虛擬地址對應的索引節點物理地址; 在所述索引節點物理地址中獲得所述索引節點中記錄的數據記錄標識與所述數 據記錄虛擬地址的關聯關系。 優選地,采用如下公式計算所述目標數據記錄虛擬地址對應的物理地址: 物理地址=(所述共享內存基地址+所述數據頭大小+當前數據記錄的位置*每 條數據記錄的大小+〇ffset in record)。 優選地,所述方法還包括: 封裝所述共享內存的數據訪問接口。 本專利技術還公開了一種數據寫入方法,所述方法包括: 接收數據寫入請求,所述數據寫入請求包括目標數據記錄標識及對應的數據內 容; 判斷在預設的關系數據表中是否匹配到所述目標數據記錄標識,其中,所述關系 數據表包括多個數據記錄標識與對應的數據記錄的虛擬地址的關聯關系,所述關系數據表 還包括空閑索引資源; 若是,則獲得與所述目標數據記錄標識對應的目標數據記錄虛擬地址,計算所述 目標數據記錄虛擬地址對應的物理地址,并將所述目標數據的數據內容寫入所述物理地址 中的對應位置; 若否,則獲取所述空閑索引資源,并將所述目標數據記錄標識及對應的數據內容 寫入所述空閑索引資源中。 優選地,所述關系數據表保存在共享內存中。 優選地,所述關系數據表包括數據頭、索引記錄以及數據記錄;所述數據頭進一步 包括索引根節點,空閑數據記錄索引根節點,空閑索引記錄根節點; 其中,所述索引根節點用于記錄數據記錄標識及對應的已使用的索引節點的虛擬 地址; 所述索引記錄用于記錄所述已使用索引節點的信息,所述已使用索引節點的信息 包括數據記錄標識與對應的數據記錄的虛擬地址; 所述數據記錄用于記錄已寫入的數據記錄標識和對應的數據內容; 所述空閑數據記錄索引根節點用于記錄未使用的數據記錄的虛擬地址; 所述空閑索引記錄根節點用于記錄未使用的索引節點的虛擬地址。 優選地,所述空閑索引資源包括所述空閑索引記錄根節點及所述空閑數據記錄根 節點;所述獲取所述空閑索引資源,并將所述目標數據記錄標識及對應的數據內容寫入所 述空閑索引資源中的步驟包括: 從所述空閑索引記錄根節點中選取一虛擬地址,將所述虛擬地址對應的索引節點 作為新索引節點; 從所述空閑數據記錄根節點中選取一虛擬地址,將所述虛擬地址對應的數據記錄 作為新的數據記錄; 將所述目標數據記錄標識及對應的數據內容寫入所述新的數據記錄中; 在所述新索引節點下記錄所述的目標數據記錄標識及所述新的數據記錄的虛擬 地址。 優選地,所述方法還包括: 當從所述空閑索引記錄根節點中選取一虛擬地址后,更新所述空閑索引記錄根節 點指向下一虛擬地址; 當從所述空閑數據記錄根節點中選取一虛擬地址后,更新所述空閑數據記錄根節 點指向下一虛擬地址。 優選地,所述虛擬地址包括高16位及低16位兩部分,所述高16位中記錄對應的 索引節點的地址相對數據頭的偏移,所述低16位中記錄所述索引節點內部的偏移。 優選地,采用如下公式計算所述目標數據記錄虛擬地址對應的物理地址: 物理地址=(所述共享內存基地址+所述數據頭大小+當前數據記錄的位置*每 條數據記錄的大小+〇ffset in record)。 優選地,所述方法還包括: 封裝所述共享內存的數據訪問接口。 本專利技術還公開了一種數據讀取裝置,所述裝置包括: 請求接收模塊,用于接收數據讀取請求,所述數據讀取請求包括目標數據記錄標 識; 虛擬地址獲取模塊,用于在預設的關系數據表中匹配到所述目標數據記錄標識 時,獲得與所述目標數據記錄標識對應的目標數據記錄虛擬地址;其中,所述關系數據表包 括多個數據記錄標識與對應的數據記錄的虛擬地址的關聯關系; 物理地址計算模塊,用于計算所述目標數據記錄虛擬地址對應的物理地址,其中, 所述物理地址中存儲數據記錄標識與對應的數據內容的鍵當前第1頁1 2 3 4 本文檔來自技高網...

【技術保護點】
一種數據讀取方法,其特征在于,所述方法包括:接收數據讀取請求,所述數據讀取請求包括目標數據記錄標識;當在預設的關系數據表中匹配到所述目標數據記錄標識時,獲得與所述目標數據記錄標識對應的目標數據記錄虛擬地址;其中,所述關系數據表包括多個數據記錄標識與對應的數據記錄的虛擬地址的關聯關系;計算所述目標數據記錄虛擬地址對應的物理地址,其中,所述物理地址中存儲數據記錄標識與對應的數據內容的鍵值對;從所述物理地址中獲得與所述目標數據記錄標識對應的數據內容。
【技術特征摘要】
【專利技術屬性】
技術研發人員:龍勇,
申請(專利權)人:北京奇藝世紀科技有限公司,
類型:發明
國別省市:北京;11
還沒有人留言評論。發表了對其他瀏覽者有用的留言會獲得科技券。