• / 13
  • 下載費用:30 金幣  

一種數據更新方法及裝置.pdf

關 鍵 詞:
一種 數據 更新 方法 裝置
  專利查詢網所有資源均是用戶自行上傳分享,僅供網友學習交流,未經上傳用戶書面授權,請勿作他用。
摘要
申請專利號:

CN201310671693.2

申請日:

2013.12.10

公開號:

CN103678577A

公開日:

2014.03.26

當前法律狀態:

授權

有效性:

有權

法律詳情: 授權|||實質審查的生效IPC(主分類):G06F 17/30申請日:20131210|||公開
IPC分類號: G06F17/30 主分類號: G06F17/30
申請人: 新浪網技術(中國)有限公司
發明人: 黃旭
地址: 100080 北京市海淀區北四環西路58號理想國際大廈20層
優先權:
專利代理機構: 北京同達信恒知識產權代理有限公司 11291 代理人: 郭潤湘
PDF完整版下載: PDF下載
法律狀態
申請(專利)號:

CN201310671693.2

授權公告號:

||||||

法律狀態公告日:

2017.10.24|||2014.04.23|||2014.03.26

法律狀態類型:

授權|||實質審查的生效|||公開

摘要

本發明公開了一種數據更新方法及裝置,包括:當有數據需要更新時,將更新數據存儲到數據表中的空閑存儲空間中;將該更新數據對應的數據索引和該更新數據在該數據表中的存儲地址對應存儲到更新隊列中;使用該更新隊列中該更新數據對應的數據索引對應的存儲地址,更新索引地址表中與該數據索引對應的存儲地址,索引地址表記錄了該數據表中存儲的數據的數據索引和存儲的數據在該數據表中的存儲地址的對應關系。采用本發明實施例提供的方案,相比現有技術,不需要將數據表復制多份,占用的內存空間小,節省了系統資源。

權利要求書

權利要求書
1.  一種數據更新方法,其特征在于,包括:
當有數據需要更新時,將更新數據存儲到數據表中的空閑存儲空間中;
將所述更新數據對應的數據索引和所述更新數據在所述數據表中的存儲地址對應存儲到更新隊列中;
使用所述更新隊列中所述更新數據對應的數據索引對應的存儲地址,更新索引地址表中與該數據索引對應的存儲地址,索引地址表記錄了所述數據表中存儲的數據的數據索引和存儲的數據在所述數據表中的存儲地址的對應關系。

2.  如權利要求1所述的方法,其特征在于,還包括:
當有新數據需要存儲時,將新數據存儲到所述數據表中的空閑存儲空間中;
將所述新數據對應的數據索引和所述新數據在所述數據表中的存儲地址對應存儲到所述更新隊列中;
將所述更新隊列中所述新數據對應的數據索引和所述新數據在所述數據表中的存儲地址,對應存儲到索引地址表中。

3.  如權利要求1所述的方法,其特征在于,還包括:
清除所述數據表中所述更新數據對應的原數據。

4.  一種從如權利要求1所述的方法中的所述數據表中讀取數據的方法,其特征在于,包括:
從所述索引地址表的復制索引地址表中,查詢待讀取數據的數據索引對應的存儲地址,所述復制索引地址表位于所述數據表的訪問者本地;
從所述數據表中讀取該存儲地址對應的存儲空間中存儲的數據。

5.  如權利要求4所述的方法,其特征在于,還包括:
使用所述更新隊列中的數據索引對應的存儲地址,更新所述復制索引地址表中與該數據索引對應的存儲地址。

6.  一種數據更新裝置,其特征在于,包括:
第一存儲單元,用于當有數據需要更新時,將更新數據存儲到數據表中的空閑存儲空間中;
第二存儲單元,用于將所述更新數據對應的數據索引和所述更新數據在所述數據表中的存儲地址對應存儲到更新隊列中;
索引地址表更新單元,用于使用所述更新隊列中所述更新數據對應的數據索引對應的存儲地址,更新索引地址表中與該數據索引對應的存儲地址,索引地址表記錄了所述數據表中存儲的數據的數據索引和存儲的數據在所述數據表中的存儲地址的對應關系。

7.  如權利要求6所述的裝置,其特征在于,還包括:
第三存儲單元,用于當有新數據需要存儲時,將新數據存儲到所述數據表中的空閑存儲空間中;
第四存儲單元,用于將所述新數據對應的數據索引和所述新數據在所述數據表中的存儲地址對應存儲到所述更新隊列中;
第五存儲單元,用于將所述更新隊列中所述新數據對應的數據索引和所述新數據在所述數據表中的存儲地址,對應存儲到索引地址表中。

8.  如權利要求6所述的裝置,其特征在于,還包括:
清除單元,用于清除所述數據表中所述更新數據對應的原數據。

9.  一種如權利要求6所述的裝置中的所述數據表中讀取數據的裝置,其特征在于,包括:
查詢單元,用于從所述索引地址表的復制索引地址表中,查詢待讀取數據的數據索引對應的存儲地址,所述復制索引地址表位于所述數據表的訪問者本地;
讀取單元,用于從所述數據表中讀取該存儲地址對應的存儲空間中存儲的數據。

10.  如權利要求9所述的裝置,其特征在于,還包括:
復制索引地址表更新單元,用于使用所述更新隊列中的數據索引對應的存 儲地址,更新所述復制索引地址表中與該數據索引對應的存儲地址。

說明書

說明書一種數據更新方法及裝置
技術領域
本發明涉及計算機領域,尤其涉及一種數據更新方法及裝置。
背景技術
訂閱/更新(Pub/Sub)模型是如何向一個內容節點發布和訂閱消息的模型,消息發布者將消息發布到內容節點,消息訂閱者從內容節點訂閱消息。訂閱/更新的消息由消息關鍵字(key)和該消息對應的數據值(value)組成,一般該消息key不變,與該消息對應的value是頻繁變化的,因此需要及時的更新value值,使得消息訂閱者能夠及時準確地讀取所訂閱的消息內容。
目前,現有的Pub/Sub模型中的KV(key-value)數據更新的主要方法為:將多個消息各自的key和value存儲到數據表1中,并為該數據表1分配一個入口指針,訪問者在該入口指針指向的數據表中獲取數據信息,將數據表1復制(n-1)份,復制表記為數據表2、數據表3……數據表n,當有消息的數據值變化需要更新數據時,在數據表2-數據表n中將待更新數據進行更新,在數據表2-數據表n中的數據進行更新時,此時訪問者通過入口指針獲取數據表1中的數據。當數據表2-數據表n中的數據更新完成后,將該入口指針指向數據表2,當有新的訪問者時,該新的訪問者通過入口指針獲取數據表2中的數據,此時數據表1中仍有部分原訪問者在讀取未更新的數據。當再次有消息的數據值變化需要更新數據時,在數據表3-數據表n中將待更新數據進行更新,重復上述數據更新過程。
上述現有的KV數據更新方法,由于在更新數據時,需要將數據表復制多份進行更新,數據表占用了大量的內存空間,造成了系統資源的浪費。
發明內容
本發明實施例提供一種數據更新方法及裝置,用以解決現有技術中存在系統資源的浪費的問題。
本發明實施例提供一種數據更新方法,包括:
當有數據需要更新時,將更新數據存儲到數據表中的空閑存儲空間中;
將所述更新數據對應的數據索引和所述更新數據在所述數據表中的存儲地址對應存儲到更新隊列中;
使用所述更新隊列中所述更新數據對應的數據索引對應的存儲地址,更新索引地址表中與該數據索引對應的存儲地址,索引地址表記錄了所述數據表中存儲的數據的數據索引和存儲的數據在所述數據表中的存儲地址的對應關系。
采用本發明實施例提供的上述方法,由于不需要將數據表復制多份,占用的內存空間小,節省了系統資源。
進一步的,上述方法,還包括:
當有新數據需要存儲時,將新數據存儲到所述數據表中的空閑存儲空間中;
將所述新數據對應的數據索引和所述新數據在所述數據表中的存儲地址對應存儲到所述更新隊列中;
將所述更新隊列中所述新數據對應的數據索引和所述新數據在所述數據表中的存儲地址,對應存儲到索引地址表中。
進一步的,上述方法,還包括:
清除所述數據表中所述更新數據對應的原數據。
這樣,該數據表可以有足夠的空閑存儲空間存儲更新數據或新數據。
本發明實施例還提供一種從上述數據更新方法中的數據表中讀取數據的方法,包括:
從所述索引地址表的復制索引地址表中,查詢待讀取數據的數據索引對應的存儲地址,所述復制索引地址表位于所述數據表的訪問者本地;
從所述數據表中讀取該存儲地址對應的存儲空間中存儲的數據。
進一步的,上述方法,還包括:
使用所述更新隊列中的數據索引對應的存儲地址,更新所述復制索引地址表中與該數據索引對應的存儲地址。
本發明實施例還提供一種數據更新裝置,包括:
第一存儲單元,用于當有數據需要更新時,將更新數據存儲到數據表中的空閑存儲空間中;
第二存儲單元,用于將所述更新數據對應的數據索引和所述更新數據在所述數據表中的存儲地址對應存儲到更新隊列中;
索引地址表更新單元,用于使用所述更新隊列中所述更新數據對應的數據索引對應的存儲地址,更新索引地址表中與該數據索引對應的存儲地址,索引地址表記錄了所述數據表中存儲的數據的數據索引和存儲的數據在所述數據表中的存儲地址的對應關系。
采用本發明實施例提供的上述裝置,由于不需要將數據表復制多份,占用的內存空間小,節省了系統資源。
進一步的,上述裝置,還包括:
第三存儲單元,用于當有新數據需要存儲時,將新數據存儲到所述數據表中的空閑存儲空間中;
第四存儲單元,用于將所述新數據對應的數據索引和所述新數據在所述數據表中的存儲地址對應存儲到所述更新隊列中;
第五存儲單元,用于將所述更新隊列中所述新數據對應的數據索引和所述新數據在所述數據表中的存儲地址,對應存儲到索引地址表中。
進一步的,上述裝置,還包括:
清除單元,用于清除所述數據表中所述更新數據對應的原數據。
這樣,該數據表可以有足夠的空閑存儲空間存儲更新數據或新數據。
本發明實施例還提供一種從上述數據更新裝置中的數據表中讀取數據的裝置,包括:
查詢單元,用于從所述索引地址表的復制索引地址表中,查詢待讀取數據的數據索引對應的存儲地址,所述復制索引地址表位于所述數據表的訪問者本地;
讀取單元,用于從所述數據表中讀取該存儲地址對應的存儲空間中存儲的數據。
進一步的,上述裝置,還包括:
復制索引地址表更新單元,用于使用所述更新隊列中的數據索引對應的存儲地址,更新所述復制索引地址表中與該數據索引對應的存儲地址。
本申請的其它特征和優點將在隨后的說明書中闡述,并且,部分地從說明書中變得顯而易見,或者通過實施本申請而了解。本申請的目的和其他優點可通過在所寫的說明書、權利要求書、以及附圖中所特別指出的結構來實現和獲得。
附圖說明
附圖用來提供對本發明的進一步理解,并且構成說明書的一部分,與本發明實施例一起用于解釋本發明,并不構成對本發明的限制。在附圖中:
圖1為本發明實施例提供的數據更新方法的流程圖;
圖2為本發明實施例1中提供的數據更新方法的流程圖;
圖3為本發明實施例2中提供的從本發明實施例提供的數據更新方法中的數據表中讀取數據的方法的流程圖;
圖4為本發明實施例3中提供的數據更新裝置的結構示意圖;
圖5為本發明實施例4中提供的從本發明實施例3中數據更新裝置中的數據表中讀取數據的裝置的結構示意圖。
具體實施方式
為了給出在進行數據更新時節省系統資源的實現方案,本發明實施例提供 了一種數據更新方法及裝置,以下結合說明書附圖對本發明的優選實施例進行說明,應當理解,此處所描述的優選實施例僅用于說明和解釋本發明,并不用于限定本發明。并且在不沖突的情況下,本申請中的實施例及實施例中的特征可以相互組合。
本發明實施例提供一種數據更新方法,如圖1所示,包括:
步驟101、當有數據需要更新時,將更新數據存儲到數據表中的空閑存儲空間中。
步驟102、將該更新數據對應的數據索引和該更新數據在該數據表中的存儲地址對應存儲到更新隊列中。
步驟103、使用該更新隊列中該更新數據對應的數據索引對應的存儲地址,更新索引地址表中與該數據索引對應的存儲地址,索引地址表記錄了該數據表中存儲的數據的數據索引和存儲的數據在該數據表中的存儲地址的對應關系。
本發明實施例提供的上述圖1所示方法中,該數據索引一般是不變的,該數據索引對應的數據是經常變化的,可以是該數據表中的數據發生變化需要更新該數據表,也可以是有新數據生成,需要將該新數據存儲到該數據表中,從而更新該數據表。其中,該數據表、該更新隊列和該索引地址表可以在共享存儲器(SHM,Share Memory)上創建,該數據表可以為slab表,該索引地址表可以為B樹,將數據表中存儲的數據的數據索引和存儲的數據在該數據表中的存儲地址的對應關系存儲到B樹的節點上。
進一步的,訪問者可以從本發明實施例提供的上述圖1所示的方法中的數據表中讀取數據,將該索引地址表復制到本地,從該復制索引地址表中查詢待讀取數據的數據索引對應的存儲地址,根據該存儲地址在該數據表中讀取待讀取數據。
下面結合附圖,用具體實施例對本發明提供的方法及裝置進行詳細描述。
實施例1:
圖2為本發明實施例1提供的一種數據更新方法的流程圖,具體包括如下 處理步驟:
步驟201、當有數據需要更新時,將更新數據存儲到數據表中的空閑存儲空間中。
步驟202、將該更新數據對應的數據索引和該更新數據在該數據表中存儲地址對應存儲到更新隊列中。
其中,該更新隊列可以為更新循環隊列,當將該更新數據對應的數據索引和該更新數據在該數據表中存儲地址對應存儲到該更新循環隊列中時,為更新循環隊列中的每一個數據索引分別分配一個時間標識,該時間標識表示該數據索引和該數據索引對應的存儲地址進入該更新循環隊列的時間。
當該更新循環隊列中存儲的數據索引和該數據索引對應的存儲地址的有效位置數量大于預設有效位置數量時,從更新循環隊列中表示進入該更新循環隊列的時間最早的時間標識開始,刪除預設有效位置數量的數據索引和該數據索引對應的存儲地址;或者當更新循環隊列中的數據索引和該數據索引對應的存儲地址的存儲時間距離當前時間的時間差大于預設時間差時,刪除該數據索引和該數據索引對應的存儲地址,這樣,可以保證該更新循環隊列中始終有足夠的空閑位置用來存儲更新數據對應的數據索引和該更新數據在數據表中的存儲地址,其中,該預設有效位置數量、該預設索引地址數量、該預設時間差可以根據實際經驗和需要進行靈活設置。
步驟203、使用該更新隊列中該更新數據對應的數據索引對應的存儲地址,更新索引地址表中與該數據索引對應的存儲地址。
其中,該索引地址表記錄了該數據表中存儲的數據的數據索引和存儲的數據在該數據表中的存儲地址的對應關系。
本步驟中,可以每間隔預設更新周期,使用該更新隊列中該更新數據對應的數據索引對應的存儲地址,更新索引地址表中與該數據索引對應的存儲地址,其中,該預設更新周期可以根據實際經驗和需要進行靈活設置,例如,預設更新周期可以為200毫秒。
步驟204、當有新數據需要存儲時,將新數據存儲到該數據表中的空閑存儲空間中。
步驟205、將該新數據對應的數據索引和該新數據在該數據表中的存儲地址對應存儲到該更新隊列中。
本步驟中,將該新數據對應的數據索引和該新數據在該數據表中的存儲地址對應存儲到該更新隊列采用的處理方法和上述步驟202采用的處理方法相同,在此不再進行詳細描述。
步驟206、將該更新隊列中該新數據對應的數據索引和該新數據在該數據表中的存儲地址,對應存儲到索引地址表中。
本步驟中,可以每間隔預設更新周期,將該更新隊列中該新數據對應的數據索引和該新數據在該數據表中的存儲地址,對應存儲到索引地址表中。
上述步驟204-206與步驟201-203之間沒有嚴格的先后順序,可以先執行步驟204-206,再執行步驟201-203,也可以先執行步驟201-202和步驟204-205,再執行步驟203和步驟206。
步驟207、清除該數據表中該更新數據對應的原數據。
本步驟中,可以在預設清除周期到達時,將該數據表中該更新數據對應的原數據清除,其中,該預設清除周期可以根據實際經驗和需要進行靈活設置,較佳的,該預設清除周期可以為預設更新周期的2.5倍。
進一步的,當有數據表中的數據需要刪除時,可以將該待刪除數據對應的數據索引在更新隊列中對應的存儲地址標記為可用,當有更新數據或新數據分配到標記為可用的存儲地址對應的數據表中的存儲空間時,可以使用該更新數據或該新數據替換該存儲空間內的待刪除數據。
通過本發明上述實施例提供的方法,由于不需要將數據表復制多份,占用的內存空間小,節省了系統資源。
實施例2:
根據本發明上述實施例提供的數據更新方法中的數據表,本發明實施例2 還提供了一種從該數據表中讀取數據的方法,如圖3所示,具體包括如下處理步驟:
步驟301、該訪問者對該索引地址表進行復制。
本步驟中,該訪問者可以根據SHM上的該索引地址表,將該索引地址表中的數據索引和該數據索引對應的存儲地址復制到本地的索引地址表中,將本地的索引地址表作為復制索引地址表。該訪問者還可以根據自身訂閱的數據索引,將在SHM上的該索引地址表中查找的待訂閱數據索引和該待訂閱數據索引對應的存儲地址復制到本地的索引地址表中,將本地的索引地址表作為復制索引地址表。
步驟302、該訪問者復制更新隊列中的數據索引和該數據索引對應的存儲地址。
本步驟中,該訪問者可以每間隔預設更新周期,復制SHM上的更新隊列中數據索引和該數據索引對應的存儲地址,或者該訪問者可以每間隔預設更新周期,遍歷更新隊列中的數據索引,將該訪問者訂閱的數據索引和該數據索引對應的存儲地址進行復制。其中,該預設更新周期可以根據實際經驗和需要進行靈活設置,例如,預設更新周期可以為200毫秒。
步驟303、該訪問者使用該復制的數據索引對應的存儲地址,更新該訪問者本地的復制索引地址表中與該數據索引對應的存儲地址。
步驟304、該訪問者從該復制索引地址表中,查詢待讀取數據的數據索引對應的存儲地址。
本步驟中,該訪問者可以查詢該更新后的復制索引地址表中的待讀取數據的數據索引對應的存儲地址,還可以在該復制索引地址表正在更新時,查詢更新前的該復制索引地址表中的待讀取數據的數據索引對應的存儲地址,由于CPU的物理限制,可以保證待讀取數據的數據索引對應的存儲地址是有效的。
步驟305、該訪問者從該數據表中讀取該存儲地址對應的存儲空間中存儲的數據。
實施例3:
基于同一發明構思,根據本發明上述實施例提供的數據更新方法,相應地,本發明實施例3還提供了一種數據更新裝置,其結構示意圖如圖4所示,具體包括:
第一存儲單元401,用于當有數據需要更新時,將更新數據存儲到數據表中的空閑存儲空間中;
第二存儲單元402,用于將所述更新數據對應的數據索引和所述更新數據在所述數據表中的存儲地址對應存儲到更新隊列中;
索引地址表更新單元403,用于使用所述更新隊列中所述更新數據對應的數據索引對應的存儲地址,更新索引地址表中與該數據索引對應的存儲地址,索引地址表記錄了所述數據表中存儲的數據的數據索引和存儲的數據在所述數據表中的存儲地址的對應關系。
進一步的,上述裝置,還包括:
第三存儲單元404,用于當有新數據需要存儲時,將新數據存儲到所述數據表中的空閑存儲空間中;
第四存儲單元405,用于將所述新數據對應的數據索引和所述新數據在所述數據表中的存儲地址對應存儲到所述更新隊列中;
第五存儲單元406,用于將所述更新隊列中所述新數據對應的數據索引和所述新數據在所述數據表中的存儲地址,對應存儲到索引地址表中。
進一步的,上述裝置,還包括:
清除單元407,用于清除所述數據表中所述更新數據對應的原數據。
實施例4:
本發明實施例4還提供了一種從上述數據更新裝置中的數據表中讀取數據的裝置,如圖5所示,包括:
查詢單元501,用于從所述索引地址表的復制索引地址表中,查詢待讀取數據的數據索引對應的存儲地址,所述復制索引地址表位于所述數據表的訪問 者本地;
讀取單元502,用于從所述數據表中讀取該存儲地址對應的存儲空間中存儲的數據。
進一步的,上述裝置,還包括:
復制索引地址表更新單元503,用于使用所述更新隊列中的數據索引對應的存儲地址,更新所述復制索引地址表中與該數據索引對應的存儲地址。
上述各單元的功能可對應于圖1或圖2所示流程中的相應處理步驟,在此不再贅述。
綜上所述,本發明實施例提供的方案,包括:當有數據需要更新時,將更新數據存儲到數據表中的空閑存儲空間中;將該更新數據對應的數據索引和該更新數據在該數據表中的存儲地址對應存儲到更新隊列中;使用該更新隊列中的數據索引對應的存儲地址,更新索引地址表中與該數據索引對應的存儲地址,索引地址表記錄了該數據表中存儲的數據的數據索引和存儲的數據在該數據表中的存儲地址的對應關系。采用本發明實施例提供的方案,相比現有技術,不需要將數據表復制多份,占用的內存空間小,節省了系統資源。
本申請的實施例所提供的數據更新裝置可通過計算機程序實現。本領域技術人員應該能夠理解,上述的模塊劃分方式僅是眾多模塊劃分方式中的一種,如果劃分為其他模塊或不劃分模塊,只要數據更新裝置具有上述功能,都應該在本申請的保護范圍之內。
本申請是參照根據本申請實施例的方法、設備(系統)、和計算機程序產品的流程圖和/或方框圖來描述的。應理解可由計算機程序指令實現流程圖和/或方框圖中的每一流程和/或方框、以及流程圖和/或方框圖中的流程和/或方框的結合。可提供這些計算機程序指令到通用計算機、專用計算機、嵌入式處理機或其他可編程數據處理設備的處理器以產生一個機器,使得通過計算機或其他可編程數據處理設備的處理器執行的指令產生用于實現在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的裝置。
這些計算機程序指令也可存儲在能引導計算機或其他可編程數據處理設備以特定方式工作的計算機可讀存儲器中,使得存儲在該計算機可讀存儲器中的指令產生包括指令裝置的制造品,該指令裝置實現在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能。
這些計算機程序指令也可裝載到計算機或其他可編程數據處理設備上,使得在計算機或其他可編程設備上執行一系列操作步驟以產生計算機實現的處理,從而在計算機或其他可編程設備上執行的指令提供用于實現在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的步驟。
顯然,本領域的技術人員可以對本發明進行各種改動和變型而不脫離本發明的精神和范圍。這樣,倘若本發明的這些修改和變型屬于本發明權利要求及其等同技術的范圍之內,則本發明也意圖包含這些改動和變型在內。

關于本文
本文標題:一種數據更新方法及裝置.pdf
鏈接地址:http://www.pqsozv.live/p-6180685.html
關于我們 - 網站聲明 - 網站地圖 - 資源地圖 - 友情鏈接 - 網站客服 - 聯系我們

[email protected] 2017-2018 zhuanlichaxun.net網站版權所有
經營許可證編號:粵ICP備17046363號-1 
 


收起
展開
钻石光影