共享存儲器數(shù)據(jù)存取方法及裝置的制造方法
【技術領域】
[0001]本發(fā)明涉及計算機存儲技術領域,特別涉及一種共享存儲器數(shù)據(jù)存取方法及裝置。
【背景技術】
[0002]現(xiàn)在信息技術發(fā)展很快,信息量也越來越大。例如,對于當今世界上流行的各種社交網(wǎng)絡服務,用戶都到達了幾億、甚至十億的量級。如何實現(xiàn)如此多數(shù)量用戶的數(shù)據(jù)的查詢對于現(xiàn)有的計算機系統(tǒng)來說提出了挑戰(zhàn)。一般來說,為了提升數(shù)據(jù)訪問的效率,這些系統(tǒng)的服務數(shù)據(jù)一般是直接存儲在存取速率更快的內(nèi)存中。
[0003]另一方面,由于用戶數(shù)據(jù)可能發(fā)生隨時變化,也就是說數(shù)據(jù)的內(nèi)容也是不斷需要更新。因此,如何在不影響現(xiàn)有服務的情況下進行數(shù)據(jù)的更新就成為現(xiàn)有技術中亟待解決的技術問題。
【發(fā)明內(nèi)容】
[0004]有鑒于此,本發(fā)明提供一種共享存儲器數(shù)據(jù)存取方法及裝置,可以高效、減少出錯率的更新數(shù)據(jù)。
[0005]一種數(shù)據(jù)存取方法,包括以下步驟:
[0006]在存儲器中創(chuàng)建第一存儲空間、第二存儲空間、以及管理器存儲空間,并分別將數(shù)據(jù)文件加載至所述第一存儲空間與第二存儲空間中;
[0007]在所述管理器存儲空間中存儲用于標記活動存儲空間的標識以及所述活動存儲空間的大小,所述活動存儲空間為所述第一存儲空間與第二存儲空間其中處于使用狀態(tài)的存儲空間;
[0008]在接收到數(shù)據(jù)更新請求后根據(jù)所述標識獲取非活動存儲空間,所述非活動存儲空間為所述第一存儲空間與第二存儲空間中不同于所述活動存儲空間的存儲空間;以及
[0009]根據(jù)所述數(shù)據(jù)更新請求更新所述非活動存儲空間,并將所述管理器存儲空間內(nèi)的活動存儲空間的標識更新為所述非活動存儲空間的標識。
[0010]一種數(shù)據(jù)存取裝置,包括創(chuàng)建模塊、管理模塊、更新模塊、以及切換模塊。
[0011]創(chuàng)建模塊用于在存儲器中創(chuàng)建第一存儲空間、第二存儲空間、以及管理器存儲空間,并分別將數(shù)據(jù)文件加載至所述第一存儲空間與第二存儲空間中。
[0012]管理模塊用于在所述管理器存儲空間中存儲用于標記活動存儲空間的標識以及所述活動存儲空間的大小,所述活動存儲空間為所述第一存儲空間與第二存儲空間其中處于使用狀態(tài)的存儲空間。
[0013]更新模塊用于在接收到數(shù)據(jù)更新請求后根據(jù)所述標識獲取非活動存儲空間,所述非活動存儲空間為所述第一存儲空間與第二存儲空間中不同于所述活動存儲空間的存儲空間。
[0014]切換模塊用于根據(jù)所述數(shù)據(jù)更新請求更新所述非活動存儲空間,并將所述管理器存儲空間內(nèi)的活動存儲空間的標識更新為所述非活動存儲空間的標識。
[0015]根據(jù)上述的方法及裝置,通過在非活動存儲空間內(nèi)先完成數(shù)據(jù)更新,在更新完成后,將活動存儲空間切換的方式,可以在數(shù)據(jù)服務不中斷的情形下實現(xiàn)數(shù)據(jù)更新。進一步地,通過管理器存儲空間,實現(xiàn)對兩個存儲空間的管理,從而可通過應用程序接口實現(xiàn)數(shù)據(jù)更新的過程,降低數(shù)據(jù)更新過程的耦合度以及復雜程度。
[0016]為讓本發(fā)明的上述和其他目的、特征和優(yōu)點能更明顯易懂,下文特舉較佳實施例,并配合所附圖式,作詳細說明如下。
【附圖說明】
[0017]圖1為一種計算機的結構框圖。
[0018]圖2為圖1所示的計算機的存儲器內(nèi)存儲空間分配示意圖。
[0019]圖3為第一實施例提供的一種共享存儲器數(shù)據(jù)存取方法的流程圖。
[0020]圖4為第二實施例提供的一種共享存儲器數(shù)據(jù)存取方法的流程圖。
[0021]圖5為第三實施例提供的一種共享存儲器數(shù)據(jù)存取方法的流程圖。
[0022]圖6為第四實施例提供的一種共享存儲器數(shù)據(jù)存取裝置的結構框圖。
[0023]圖7為第五實施例提供的一種共享存儲器數(shù)據(jù)存取裝置的結構框圖。
[0024]圖8為第六實施例提供的一種共享存儲器數(shù)據(jù)存取裝置的結構框圖。
【具體實施方式】
[0025]為更進一步闡述本發(fā)明為實現(xiàn)預定發(fā)明目的所采取的技術手段及功效,以下結合附圖及較佳實施例,對依據(jù)本發(fā)明的【具體實施方式】、結構、特征及其功效,詳細說明如后。
[0026]圖1示出了一種計算機的結構框圖。如圖1所示,計算機100包括一個或多個(圖中僅示出一個)存儲器102、存儲控制器104、一個或多個處理器106、外設接口 108、以及外部設備110。本領域普通技術人員可以理解,圖1所示的結構僅為示意,其并不對計算機100的結構造成限定。例如,計算機100還可包括比圖1中所示更多或者更少的組件,或者具有與圖1所示不同的配置。
[0027]存儲器102可包括高速隨機存儲器,還可包括非易失性存儲器,如一個或者多個磁性存儲裝置、閃存、或者其他非易失性固態(tài)存儲器。在一些實例中,存儲器102可進一步包括相對于處理器106遠程設置的存儲器,這些遠程存儲器可以通過網(wǎng)絡連接至計算機100。上述網(wǎng)絡的實例包括但不限于互聯(lián)網(wǎng)、企業(yè)內(nèi)部網(wǎng)、局域網(wǎng)、移動通信網(wǎng)及其組合。
[0028]外設接口 108將計算機100的輸入/輸出外設耦合至處理器106以及存儲器102。存儲器102可用于存儲軟件程序以及數(shù)據(jù),處理器106通過運行存儲在存儲器102內(nèi)的軟件程序以及模塊,從而執(zhí)行各種功能應用以及數(shù)據(jù)處理。
[0029]存儲器102內(nèi)存儲的軟件程序與模塊例如可包括操作系統(tǒng)122、服務模塊124、應用程序編程接口 126以及存儲管理模塊128。操作系統(tǒng)122例如可為Unix、Linux、Windows等操作系統(tǒng),其可包括各種用于管理系統(tǒng)任務(例如內(nèi)存管理、存儲設備控制、電源管理等)的軟件組件和/或驅動,并可與各種硬件或軟件組件相互通訊,從而提供其他軟件組件的運行環(huán)境。服務模塊124、應用程序編程接口 126以及存儲管理模塊128運行在操作系統(tǒng)122的基礎上,其中,服務模塊124用于根據(jù)其他計算機發(fā)送的數(shù)據(jù)處理請求進行數(shù)據(jù)處理并返回處理結果,例如,進行數(shù)據(jù)查詢或者更新存儲器102內(nèi)的數(shù)據(jù),而進行數(shù)據(jù)查詢或者更新數(shù)據(jù)是通過應用程序編程接口 126實現(xiàn)的,存儲管理模塊128用于通過應用程序編程接口 126進行存儲空間的管理操作以及數(shù)據(jù)更新操作。
[0030]應用程序編程接口 126具體可包括以下接口:用于進行初始化的接口、用于關聯(lián)存儲空間的接口、用于創(chuàng)建存儲空間的接口、用于切換活動存儲空間的接口、以及用于查詢活動存儲空間的接口。
[0031]以下接口,可分別采用C語言偽代碼描述如下:
[0032]用于進行初始化的接口:int shm_init (struct ShmSwitch*api, int create_shm_manager, int shm_manager_key)
[0033]用于關聯(lián)存儲空間的接口:int set_data_mem_key (struct ShmSwitch*api, intdata_key0, int data_keyl)
[0034]用于創(chuàng)建存儲空間的接口:void*create_data_mem(struct ShmSwitch*api, intdata_size)
[0035]用于切換活動存儲空間的接口:int switch_data_mem (structShmSwitch*api, int data_size)
[0036]用于查詢活動存儲空間的接口:void*get_inuse_data(struct ShmSwitch*api)。
[0037]其中,struct ShmSwitch為用于管理三塊存儲空間的結構體類型。參閱圖2,其為上述的三塊存儲空間的示意圖。第一存