存儲方法及存儲裝置制造方法
【專利摘要】本發(fā)明公開了一種存儲方法及存儲裝置,用于存儲架構(gòu)中,存儲架構(gòu)包括應(yīng)用單元以及至少兩個存儲群,存儲方法包括:接收所述應(yīng)用單元傳來的數(shù)據(jù);將同一數(shù)據(jù)索引對應(yīng)的數(shù)據(jù)分拆成至少兩個數(shù)據(jù)項;為每個數(shù)據(jù)項加上時間戳;根據(jù)所述至少兩個存儲群的可寫狀態(tài),將所述至少兩個數(shù)據(jù)項存儲到所述兩個存儲群的至少其中之一。本發(fā)明具有較高的數(shù)據(jù)容災(zāi)及訪問容災(zāi)的效果,同時實現(xiàn)較優(yōu)選的負(fù)載均衡,提高存儲架構(gòu)中的靈活性和可用性。
【專利說明】存儲方法及存儲裝置
【【技術(shù)領(lǐng)域】】
[0001]本發(fā)明涉及計算機數(shù)據(jù)容錯存儲領(lǐng)域,特別涉及一種存儲方法及存儲裝置。
【【背景技術(shù)】】
[0002]隨著互聯(lián)網(wǎng)的普及與快速發(fā)展,流通的負(fù)載也越來越大,因此存儲架構(gòu)需具有穩(wěn)定的特性,讓使用者在讀取或?qū)懭霐?shù)據(jù)時不會發(fā)生問題。
[0003]請參考圖1,其為現(xiàn)有技術(shù)的存儲架構(gòu)方塊圖。存儲架構(gòu)包括應(yīng)用單元10、存儲群12以及兩個存儲器14、16,應(yīng)用單元10例如是使用者端,存儲群12用于管理兩個存儲器
14、16。所述存儲架構(gòu)中,兩個存儲器14、16存儲相同的數(shù)據(jù),當(dāng)兩個存儲器14、16的其中一個發(fā)生故障時,還有另外一個有安全且正確的數(shù)據(jù)以供應(yīng)用單元10讀取,這種使用備份方式防止數(shù)據(jù)不見的作法稱為數(shù)據(jù)容災(zāi)。
[0004]當(dāng)兩個存儲器14、16的其中一個發(fā)生故障時,另外一個相對應(yīng)的數(shù)據(jù)不可以寫入,藉此保持?jǐn)?shù)據(jù)的一致性,此時稱為只讀,當(dāng)存儲群12發(fā)生只讀時,應(yīng)用單元10只能從存儲群12管理的存儲器14、16讀取數(shù)據(jù)而不能將數(shù)據(jù)寫入存儲器14、16,此種情況稱為訪問故障,會影響使用者端(也就是應(yīng)用單元10),例如使用者端不能通過即時通信(InstantMessage ;IM)軟件QQ發(fā)表說說,亦即不能將發(fā)表的說說寫入存儲器14、16中。
[0005]若是故障的存儲器確定無法再提供服務(wù),可以用人工方式將另一個存儲器從只讀改為可寫,此時對應(yīng)的數(shù)據(jù)只有一份可供使用,必須遷移到其它可以存儲兩份的存儲群中。
[0006]請參考圖2,其為現(xiàn)有技術(shù)的數(shù)據(jù)組織示意圖。圖2是以非關(guān)系型順序查詢語言(Not only Sequential Query Language ;NoSQL)中的鍵值對(Key/Value pair)數(shù)據(jù)庫為例,在現(xiàn)有技術(shù)的存儲架構(gòu)中,是將一個鍵(以下稱為key)對應(yīng)一個值(以下稱為value),其中key例如是QQ號,value可以視為列表且包括多個數(shù)據(jù)(圖中以數(shù)據(jù)I至數(shù)據(jù)8表示),每個數(shù)據(jù)例如是QQ的說說、動態(tài)的一條記錄。
[0007]現(xiàn)有技術(shù)的存儲架構(gòu)中,添加數(shù)據(jù)的步驟如下:讀取value、解碼出數(shù)據(jù)列表、添加數(shù)據(jù)、編碼成數(shù)據(jù)列表、存儲到圖1的存儲器14、16 ;更新數(shù)據(jù)的步驟如下:讀取value、解碼出數(shù)據(jù)列表、找到對應(yīng)的數(shù)據(jù)后更新、編碼成數(shù)據(jù)列表、存儲到圖1的存儲器14、16 ;刪除數(shù)據(jù)的步驟如下:讀取value、解碼出數(shù)據(jù)列表、找到對應(yīng)的數(shù)據(jù)后刪除、編碼成數(shù)據(jù)列表、存儲到圖1的存儲器14、16。由于一個key對應(yīng)一個value,亦即對應(yīng)一個數(shù)據(jù)列表,因此不論是添加、更新或刪除數(shù)據(jù)列表中的某個數(shù)據(jù),都必須讀取整個數(shù)據(jù)列表后再寫入整個數(shù)據(jù)列表,浪費容錯存儲時間而降低存儲架構(gòu)的效率。
[0008]故,有必要 提出一種新的技術(shù)方案,以解決上述存儲群12發(fā)生只讀時,應(yīng)用單元10不能將數(shù)據(jù)寫入的技術(shù)問題,以及添加、更新或刪除數(shù)據(jù)都必須讀取整個數(shù)據(jù)列表后再寫入整個數(shù)據(jù)列表,導(dǎo)致存儲架構(gòu)效率不佳的技術(shù)問題。
【
【發(fā)明內(nèi)容】
】
[0009]本發(fā)明的一個目的在于提供一種存儲方法及存儲裝置,不僅具有較高的數(shù)據(jù)容災(zāi)及訪問容災(zāi)的效果,同時實現(xiàn)較優(yōu)選的負(fù)載均衡,提高存儲架構(gòu)中各節(jié)點設(shè)備的靈活性和可用性。
[0010]為達到上述目的,本發(fā)明提供了一種存儲方法,用于存儲架構(gòu),所述存儲架構(gòu)包括應(yīng)用單元以及至少兩個存儲群,所述存儲方法包括:
[0011]接收所述應(yīng)用單元傳來的數(shù)據(jù);
[0012]將同一數(shù)據(jù)索引對應(yīng)的數(shù)據(jù)分拆成至少兩個數(shù)據(jù)項;
[0013]為每個數(shù)據(jù)項加上時間戳;以及
[0014]根據(jù)所述至少兩個存儲群的可寫狀態(tài),將所述至少兩個數(shù)據(jù)項存儲到所述兩個存儲群的至少其中之一。
[0015]在上述存儲方法中,根據(jù)所述至少兩個存儲群的可寫狀態(tài),將所述至少兩個數(shù)據(jù)項存儲到所述兩個存儲群的至少其中之一的步驟中包括:
[0016]若要寫入的存儲群為只讀,則將所述數(shù)據(jù)項寫入所述至少兩個存儲群的另外一個。
[0017]在上述存儲方法中,根據(jù)所述至少兩個存儲群的可寫狀態(tài),將所述至少兩個數(shù)據(jù)項存儲到所述兩個存儲群的至少其中之一的步驟中包括:
[0018]若所述至少兩個存儲群均為可寫,則根據(jù)所述至少兩個存儲群的負(fù)載情況,將所述數(shù)據(jù)項寫入所述至少兩個存儲群的至少其中之一。
[0019]在上述存儲方法中,還包括:
[0020]讀取所述至少兩個存儲群中對應(yīng)的數(shù)據(jù)項,將所述數(shù)據(jù)項更新后,加上時間戳,
[0021]若原數(shù)據(jù)項對應(yīng)的存儲群可寫,則更新后寫回原存儲群;
[0022]若原數(shù)據(jù)項對應(yīng)的存儲群只讀,則更新后將該數(shù)據(jù)項寫入其它可寫存儲群至少其中之一。
[0023]在上述存儲方法中,還包括:
[0024]讀取所述至少兩個存儲群對應(yīng)于同一數(shù)據(jù)索引的各個數(shù)據(jù)項,以及返回相同數(shù)據(jù)項中時間戳較新的數(shù)據(jù)項;
[0025]或者
[0026]讀取所述至少兩個存儲群的同一個數(shù)據(jù)項,以及返回相同數(shù)據(jù)項中時間戳較新的數(shù)據(jù)項。
[0027]在上述存儲方法中,還包括:
[0028]讀取所述至少兩個存儲群;以及
[0029]將要刪除的數(shù)據(jù)項從對應(yīng)的存儲群中刪除。
[0030]本發(fā)明還提供了一種存儲裝置,用于存儲架構(gòu),所述存儲架構(gòu)包括應(yīng)用單元以及至少兩個存儲群,所述存儲裝置包括:
[0031]接收模塊,用于接收所述應(yīng)用單元傳來的數(shù)據(jù);
[0032]分拆模塊,連接至所述接收模塊,用于將同一數(shù)據(jù)索引對應(yīng)的數(shù)據(jù)分拆成至少兩個數(shù)據(jù)項;
[0033]時間戳標(biāo)識模塊,連接至所述分拆模塊,用于為每個數(shù)據(jù)項加上時間戳;
[0034]容災(zāi)判斷模塊,用于判斷所述至少兩個存儲群是否只讀;以及
[0035]寫入模塊,連接至所述時間戳標(biāo)識模塊及所述容災(zāi)判斷模塊,用于將所述至少兩個數(shù)據(jù)項存儲到所述兩個存儲群的至少其中之一。
[0036]在上述存儲裝置中,還包括:
[0037]讀取模塊,連接至所述時間戳標(biāo)識模塊,用于讀取所述至少兩個存儲群中的數(shù)據(jù)項。
[0038]在上述存儲裝置中,還包括:
[0039]負(fù)載判斷模塊,連接至所述寫入模塊,用于判斷所述兩個存儲群的負(fù)載情況。
[0040]在上述存儲裝置中,還包括:
[0041]時間戳判斷模塊,連接至所述讀取模塊,用于判斷所述至少兩個存儲群中具有較新時間戳的數(shù)據(jù)項。
[0042]在上述存儲裝置中,還包括:
[0043]刪除模塊,連接至所述讀取模塊,用于將要刪除的數(shù)據(jù)項從對應(yīng)的存儲群中刪除。
[0044]本發(fā)明的存儲方法及存儲裝置確保應(yīng)用單元的數(shù)據(jù)項一定能寫入兩個存儲群的其中一個,使得應(yīng)用單元達到訪問容災(zāi)的功能,亦即隨時都能可讀可寫,同時數(shù)據(jù)項又不會不一致。再者,由于數(shù)據(jù)分拆儲存,因此添加、更新或刪除數(shù)據(jù)時只需要針對對應(yīng)的存儲群作寫入的動作,能大幅降低寫入時間,增加效率。
[0045]為讓本發(fā)明的上述內(nèi)容能更明顯易懂,下文特舉優(yōu)選實施例,并配合所附圖式,作詳細(xì)說明如下:
【【專利附圖】
【附圖說明】】
[0046]圖1為現(xiàn)有技術(shù)的存儲架構(gòu)方塊圖;
[0047]圖2為現(xiàn)有技術(shù)的數(shù)據(jù)組織示意圖;
[0048]圖3為本發(fā)明中存儲方法的較佳實施例流程圖;
[0049]圖4為本發(fā)明的存儲方法所應(yīng)用的存儲架構(gòu)及存儲裝置;
[0050]圖5為圖3中步驟A40的一個實施例;
[0051]圖6為本發(fā)明的存儲方法中更新數(shù)據(jù)項的步驟;
[0052]圖7為本發(fā)明的存儲方法中判斷時間戳的步驟;
[0053]圖8為為本發(fā)明的存儲方法中另一個判斷時間戳的步驟;
[0054]圖9為本發(fā)明的存儲方法中刪除數(shù)據(jù)項的步驟;
[0055]圖10為本發(fā)明的存儲方法將數(shù)據(jù)分拆后的組知示意圖;
[0056]圖11為本發(fā)明中存儲裝置的方塊圖。
【【具體實施方式】】
[0057]以下各實施例的說明是參考附加的圖式,用以例示本發(fā)明可用以實施的特定實施例。
[0058]請參考圖3及圖4,圖3 為本發(fā)明中存儲方法的較佳實施例流程圖,圖4為本發(fā)明的存儲方法所應(yīng)用的存儲架構(gòu)2及存儲裝置90。所述存儲架構(gòu)2包括應(yīng)用單元20以及至少兩個存儲群(以第一存儲群22及第二存儲群28表示)。第一存儲群22用于管理存儲器24,26且至少包括一個存儲服務(wù)器220與一個容災(zāi)服務(wù)器222,第二存儲群28用于管理存儲器30、32且至少包括一個存儲服務(wù)器280與一個容災(zāi)服務(wù)器282。存儲裝置90將于圖11中詳述。
[0059]應(yīng)用單元20例如是執(zhí)行即時通信軟件QQ的使用者端,存儲器24、26、30、32通常視為存儲層,作為存儲使用者端發(fā)表說說、動態(tài)及其它數(shù)據(jù)的數(shù)據(jù)庫。
[0060]要說明的是,以下描述讀取或?qū)懭氲谝淮鎯θ?2是指讀取或?qū)懭氲谝淮鎯θ?2管理的兩個存儲器24、26,描述讀取或?qū)懭氲诙鎯θ?8是指讀取或?qū)懭氲诙鎯θ?8管理的兩個存儲器30、32。
[0061]本發(fā)明的存儲方法包括:
[0062]A10.接收應(yīng)用單元20傳來的數(shù)據(jù)。
[0063]A20.將同一數(shù)據(jù)索引對應(yīng)的數(shù)據(jù)分拆成至少兩個數(shù)據(jù)項,數(shù)據(jù)索引例如是應(yīng)用單元20 (亦即使用者端)通過即時通信軟件QQ登錄的QQ號。數(shù)據(jù)項例如是應(yīng)用單元20 (亦即使用者端)通過即時通信軟件QQ發(fā)送的說說、動態(tài)。
[0064]A30.為每個數(shù)據(jù)項加上時間戳。
[0065]A40.根據(jù)第一存儲群22及第二存儲群28的可寫狀態(tài),將所述至少兩個數(shù)據(jù)項存儲到第一存儲群22及第二存儲群28的至少其中之一。若要寫入的存儲群為只讀,則將數(shù)據(jù)項寫入兩個存儲群的另外一個,若兩個存儲群均為可寫,則根據(jù)兩個存儲群的負(fù)載情況,將數(shù)據(jù)項寫入第一存儲群22及第二存儲群28的至少其中之一。
[0066]請參閱圖3至圖5,圖5為圖3中步驟A40的一個實施例,該實施例描述寫入(亦即新增)數(shù)據(jù)項的步驟,包括:
[0067]A400.判斷數(shù)據(jù)項要寫入第一存儲群22或第二存儲群28,若要寫入第一存儲群22,進行步驟A402,若要寫入第二存儲群28,進行步驟A404。
[0068]A402.判斷第一存儲群22是否只讀,若是,進入步驟A406,若否,進入步驟A408。
[0069]A404.判斷第二存儲群28是否只讀,若是,進入步驟A408,若否,進入步驟A406。
[0070]A406.寫入第二存儲群28,亦即將數(shù)據(jù)項寫入存儲器30、32。
[0071]A408.寫入第一存儲群22,亦即將數(shù)據(jù)項寫入存儲器24、26。
[0072]在另一實施例中,若第一存儲群22及第二存儲群22都正常而未發(fā)生只讀的情況時,應(yīng)用單元20的數(shù)據(jù)可以寫入第一存儲群22或第二存儲群28,本發(fā)明的存儲方法可以基于第一存儲群22與第二存儲群28的負(fù)載,靈活地選擇其中一個存儲群來存儲數(shù)據(jù)。更明確地說,本發(fā)明的存儲方法可以判斷哪一個存儲群的負(fù)載例如數(shù)據(jù)量較少,將數(shù)據(jù)寫入數(shù)據(jù)較少的存儲群,達到均衡優(yōu)化的目的。
[0073]要說明的是,第一存儲群22與第二存儲群28同時發(fā)生只能讀取而不能寫入的機率非常小,因此本發(fā)明的存儲方法可以確保應(yīng)用單元20的數(shù)據(jù)一定能寫入第一存儲群22與第二存儲群28的其中一個。舉例來說,本發(fā)明的存儲方法能確保應(yīng)用單元20(亦即使用者端)通過即時通信軟件QQ所發(fā)送的說說、動態(tài)一定能儲存在第一存儲群22與第二存儲群28的其中一個而不會漏掉。
[0074]當(dāng)然,本發(fā)明的存儲方法可以應(yīng)用在包括更多存儲群的存儲架構(gòu),例如包括三個存儲群,三個存儲群同時發(fā)生只能讀取而不能寫入的機率是不可能的。
[0075]請參閱圖3至圖4及圖6,本發(fā)明的存儲方法還包括如圖6更新數(shù)據(jù)項的步驟,包括:
[0076]A50.讀取第一存儲群22與第二存儲群28中對應(yīng)的數(shù)據(jù)項,將所述數(shù)據(jù)項更新后,加上時間戳。
[0077]A60.判斷原數(shù)據(jù)項對應(yīng)的存儲群是否可寫,若是,進行步驟A70,若否(即原數(shù)據(jù)項對應(yīng)的存儲群只讀),進行步驟A80。
[0078]A70.更新后寫回原存儲群。
[0079]A80.更新后將該數(shù)據(jù)項寫入其它可寫存儲群至少其中之一。
[0080]在本實施例中,若原數(shù)據(jù)項對應(yīng)至第一存儲群22而第一存儲群22可寫,則加上時間戳的更新后數(shù)據(jù)項寫回第一存儲群22,若第一存儲群22只讀,則加上時間戳的更新后數(shù)據(jù)項寫入第二存儲群28。若原數(shù)據(jù)項對應(yīng)至第二存儲群28而第二存儲群28可寫,則加上時間戳的更新后數(shù)據(jù)項寫回第二存儲群28,若第二存儲群28只讀,則加上時間戳的更新后數(shù)據(jù)項寫入第一存儲群22。
[0081]在一實施例中,本發(fā)明的存儲方法還包括如圖7的判斷時間戳的步驟:
[0082]A90.讀取第一存儲群22與第二存儲群28對應(yīng)于同一數(shù)據(jù)索引的各個數(shù)據(jù)項。
[0083]A100.返回相同數(shù)據(jù)項中時間戳較新的數(shù)據(jù)項。
[0084]在另一實施例中,本發(fā)明的存儲方法還包括如圖8的判斷時間戳的步驟:
[0085]Al 10.讀取第一存儲群22與第二存儲群28的同一個數(shù)據(jù)項。
[0086]A120.返回相同數(shù)據(jù)項中時間戳較新的數(shù)據(jù)項。
[0087]請參閱圖3至圖4及圖9,本發(fā)明的存儲方法還包括如圖9刪除數(shù)據(jù)項的步驟,包括:
[0088]A130.讀取第一存儲群22及第二存儲群28。
[0089]A140.將要刪除的數(shù)據(jù)項從對應(yīng)的存儲群中刪除。
[0090]上述步驟A140包括:
[0091]A1400.判斷要刪除的數(shù)據(jù)項是否在第一存儲群22,若是,進入步驟A1402,若否,進入步驟A1404。
[0092]A1402.刪除第一存儲群22對應(yīng)的數(shù)據(jù)項。
[0093]A1404.刪除第二存儲群28對應(yīng)的數(shù)據(jù)項。
[0094]以下將介紹將數(shù)據(jù)分拆及容錯存儲數(shù)據(jù)的實際例子。請參閱圖4及圖10,圖10為本發(fā)明的存儲方法將數(shù)據(jù)分拆后的組知示意圖。圖中所示是以鍵值對(Key/Value pair)的數(shù)據(jù)庫為例,然而本發(fā)明并非限制在鍵值對的數(shù)據(jù)庫,也可以適用于其它類型的數(shù)據(jù)庫。
[0095]本發(fā)明的存儲方法將同一個數(shù)據(jù)索弓Kkey)對應(yīng)的數(shù)據(jù)分拆成多個數(shù)據(jù)項(value),數(shù)據(jù)索引例如是QQ號,本實施例中同一個數(shù)據(jù)索引對應(yīng)的數(shù)據(jù)分拆成15個數(shù)據(jù)項(S卩15個value),以數(shù)據(jù)項I至數(shù)據(jù)項15表示,每個數(shù)據(jù)項例如是QQ的說說、動態(tài)的一條記錄。每個數(shù)據(jù)項可以寫入第一存儲群22或第二存儲群28,在圖10中,數(shù)據(jù)項1、3、8、
9、10、12、13、15寫入第一存儲群22,數(shù)據(jù)項2、3、4、5、6、7、11、14寫入第二存儲群28。
[0096]由于一個數(shù)據(jù)索引對應(yīng)的數(shù)據(jù)分拆成15個數(shù)據(jù)項,與現(xiàn)有技術(shù)相比,讀寫粒度更小。
[0097]若需要寫入(亦即添加)數(shù)據(jù)項16時,首先讀取第一存儲群22與第二存儲群28,如上所述,本發(fā)明的存儲方法可以判斷哪一個存儲群的負(fù)載較少,將數(shù)據(jù)項16寫入數(shù)據(jù)較少的存儲群,達到均衡優(yōu)化的目的,例如把數(shù)據(jù)項16寫入第一存儲群22,由于第二存儲群28數(shù)據(jù)未變動,不需要重新寫入第二存儲群28,也就是說,不需要作無效寫入的動作。簡言之,寫入數(shù)據(jù)項時只需要寫入第一存儲群22與第二存儲群28的其中一個,與現(xiàn)有技術(shù)相比,本發(fā)明的存儲方法可大幅減少寫入時間,增加存儲架構(gòu)的效率。
[0098]更新時,假設(shè)數(shù)據(jù)項3初始是存儲在第一存儲群22中,需要更新數(shù)據(jù)項3時若第一存儲群22發(fā)生只讀的情況,亦即第一存儲群22只能讀取而不能寫入,本發(fā)明的存儲方法可以將數(shù)據(jù)項3寫入第二存儲群并加上一時間戳,后續(xù)要讀取數(shù)據(jù)項3時,本發(fā)明的存儲方法會讀取第一存儲群22與第二存儲群28,判斷第二存儲群28的數(shù)據(jù)項3為最新的并傳給應(yīng)用單元20,后續(xù)要寫入第一存儲群22時,可以將第一存儲群22的數(shù)據(jù)項3刪除。
[0099]刪除時,假設(shè)要刪除數(shù)據(jù)項1,讀取第一存儲群22與第二存儲群28,發(fā)現(xiàn)數(shù)據(jù)項I是在第二存儲群28,刪除數(shù)據(jù)項I后再寫入第一存儲群22,而第二存儲群28的數(shù)據(jù)項并未變動,因此第二存儲群28不需要作無效寫入的動作。
[0100]應(yīng)用單元20讀取時,會讀取第一存儲群22與第二存儲群24的數(shù)據(jù)項,將重復(fù)的數(shù)據(jù)項刪除,例如將第一存儲群22的數(shù)據(jù)項3 (具有較舊的時間戳)刪除。
[0101]請參閱圖11,其為本發(fā)明中存儲裝置90的方塊圖。所述存儲裝置用于存儲架構(gòu),所述存儲架構(gòu)包括應(yīng)用單元、以及至少兩個存儲群(以下以第一存儲群以及第二存儲群說明),其中每個存儲群用于管理至少兩個存儲器,存儲裝置包括接收模塊900、分拆模塊910、時間戳標(biāo)識模塊模塊920、容災(zāi)判斷模塊930、寫入模塊940、讀取模塊950、負(fù)載判斷模塊960、時間戳判斷模塊970以及刪除模塊980。
[0102]接收模塊900用于接收應(yīng)用單元傳來的數(shù)據(jù)。
[0103]分拆模塊910連接至接收模塊900,用于將同一數(shù)據(jù)索引對應(yīng)的數(shù)據(jù)分拆成至少兩個數(shù)據(jù)項。
[0104]時間戳標(biāo)識模塊920連接至分拆模塊910,用于為每個數(shù)據(jù)項加上時間戳。
[0105]容災(zāi)判斷模塊930用于判斷第一存儲群與第二存儲群是否只讀。
[0106]寫入模塊940連接至?xí)r間戳標(biāo)識模塊920及容災(zāi)判斷模塊930,用于將所述至少兩個數(shù)據(jù)項存儲到第一存儲群與第二存儲群的至少其中之一。
[0107]讀取模塊950連接至?xí)r間戳標(biāo)識模塊920,用于讀取第一存儲群與第二存儲群中的數(shù)據(jù)項。
[0108]負(fù)載判斷模塊960連接至寫入模塊940,用于判斷第一存儲群與第二存儲群的負(fù)載情況。
[0109]時間戳判斷模塊970連接至讀取模塊950,用于判斷第一存儲群與第二存儲群中具有較新時間戳的數(shù)據(jù)項。
[0110]刪除模塊980連接至讀取模塊950,用于將要刪除的數(shù)據(jù)項從對應(yīng)的存儲群中刪除。
[0111]本發(fā)明的存儲方法及存儲裝置能確保應(yīng)用單元的數(shù)據(jù)一定能寫入兩個存儲群的其中一個,使得應(yīng)用單元達到訪問容災(zāi)的功能,亦即隨時都能可讀可寫,同時數(shù)據(jù)又不會不一致。再者,由于數(shù)據(jù)分拆儲存,因此添加、更新或刪除數(shù)據(jù)時只需要針對對應(yīng)的存儲群作寫入的動作,能大幅降低寫入時間,增加效率。
[0112]綜上所述,雖然本發(fā)明已以優(yōu)選實施例揭露如上,但上述優(yōu)選實施例并非用以限制本發(fā)明,本領(lǐng)域的普通技術(shù)人員,在不脫離本發(fā)明的精神和范圍內(nèi),均可作各種更動與潤飾,因此本發(fā)明的保護范圍以權(quán)利要求界定的范圍為準(zhǔn)。
【權(quán)利要求】
1.一種存儲方法,用于存儲架構(gòu),所述存儲架構(gòu)包括應(yīng)用單元以及至少兩個存儲群,其特征在于,所述存儲方法包括: 接收所述應(yīng)用單元傳來的數(shù)據(jù); 將同一數(shù)據(jù)索引對應(yīng)的數(shù)據(jù)分拆成至少兩個數(shù)據(jù)項; 為每個數(shù)據(jù)項加上時間戳;以及 根據(jù)所述至少兩個存儲群的可寫狀態(tài),將所述至少兩個數(shù)據(jù)項存儲到所述兩個存儲群的至少其中之一。
2.根據(jù)權(quán)利要求1所述的存儲方法,其特征在于,根據(jù)所述至少兩個存儲群的可寫狀態(tài),將所述至少兩個數(shù)據(jù)項存儲到所述兩個存儲群的至少其中之一的步驟中包括: 若要寫入的存儲群為只讀,則將所述數(shù)據(jù)項寫入所述至少兩個存儲群的另外一個。
3.根據(jù)權(quán)利要求1或2所述的存儲方法,其特征在于,根據(jù)所述至少兩個存儲群的可寫狀態(tài),將所述至少兩個數(shù)據(jù)項存儲到所述兩個存儲群的至少其中之一的步驟中包括: 若所述至少兩個存儲群均為可寫,則根據(jù)所述至少兩個存儲群的負(fù)載情況,將所述數(shù)據(jù)項寫入所述至少兩個存儲群的至少其中之一。
4.根據(jù)權(quán)利要求1所述的容錯存儲方法,其特征在于,還包括: 讀取所述至少兩個存儲群中對應(yīng)的數(shù)據(jù)項,將所述數(shù)據(jù)項更新后,加上時間戳, 若原數(shù)據(jù)項對應(yīng)的存儲群可寫,則更新后寫回原存儲群; 若原數(shù)據(jù)項對應(yīng)的存儲群只讀,則更新后將該數(shù)據(jù)項寫入其它可寫存儲群至少其中之
O
5.根據(jù)權(quán)利要求1所述的存儲方法,其特征在于,還包括: 讀取所述至少兩個存儲群對應(yīng)于同一數(shù)據(jù)索引的各個數(shù)據(jù)項,以及返回相同數(shù)據(jù)項中時間戳較新的數(shù)據(jù)項; 或者 讀取所述至少兩個存儲群的同一個數(shù)據(jù)項,以及返回相同數(shù)據(jù)項中時間戳較新的數(shù)據(jù)項。
6.根據(jù)權(quán)利要求1所述的存儲方法,其特征在于,還包括: 讀取所述至少兩個存儲群;以及 將要刪除的數(shù)據(jù)項從對應(yīng)的存儲群中刪除。
7.根據(jù)權(quán)利要求1-6任一項所述的存儲方法,其特征在于,每個存儲群至少包括一個存儲服務(wù)器與一個容災(zāi)服務(wù)器。
8.一種存儲裝置,用于存儲架構(gòu),所述存儲架構(gòu)包括應(yīng)用單元以及至少兩個存儲群,其特征在于,所述存儲裝置包括: 接收模塊,用于接收所述應(yīng)用單元傳來的數(shù)據(jù); 分拆模塊,連接至所述接收模塊,用于將同一數(shù)據(jù)索引對應(yīng)的數(shù)據(jù)分拆成至少兩個數(shù)據(jù)項; 時間戳標(biāo)識模塊,連接至所述分拆模塊,用于為每個數(shù)據(jù)項加上時間戳; 容災(zāi)判斷模塊,用于判斷所述至少兩個存儲群是否只讀;以及寫入模塊,連接至所述時間戳標(biāo)識模塊及所述容災(zāi)判斷模塊,用于將所述至少兩個數(shù)據(jù)項存儲到所述兩個存儲群的至少其中之一。
9.根據(jù)權(quán)利要求8所述的存儲裝置,其特征在于,還包括: 讀取模塊,連接至所述時間戳標(biāo)識模塊,用于讀取所述至少兩個存儲群中的數(shù)據(jù)項。
10.根據(jù)權(quán)利要求8所述的存儲裝置,其特征在于,還包括: 負(fù)載判斷模塊,連接至所述寫入模塊,用于判斷所述兩個存儲群的負(fù)載情況。
11.根據(jù)權(quán)利要求8所述的存儲裝置,其特征在于,還包括: 時間戳判斷模塊,連接至所述讀取模塊,用于判斷所述至少兩個存儲群中具有較新時間戳的數(shù)據(jù)項。
12.根據(jù)權(quán)利要求8所述的存儲裝置,其特征在于,還包括: 刪除模塊,連接至所 述讀取模塊,用于將要刪除的數(shù)據(jù)項從對應(yīng)的存儲群中刪除。
【文檔編號】G06F17/30GK103778025SQ201210403994
【公開日】2014年5月7日 申請日期:2012年10月22日 優(yōu)先權(quán)日:2012年10月22日
【發(fā)明者】朱建平, 許劍峰, 時冰川 申請人:深圳市騰訊計算機系統(tǒng)有限公司