基于策略的儲存結構分布的制作方法
【專利說明】基于策略的儲存結構分布
[0001]本申請是2010年4月16日遞交的申請號為201080026694.6、發明名稱為“基于策略的儲存結構分布”的發明專利申請的分案申請。
[0002]背景
技術領域
[0003]所公開的實施方案一般地涉及分布儲存結構,并且更具體地,涉及跨多個服務器分布基于策略的儲存結構。
【背景技術】
[0004]數據庫由多個數據行構成,其中每行被劃分為列或字段。一般地,一個字段被指定為關鍵字字段(key field)。在數據庫結構中,每個關鍵字應當是唯一的。當使用者插入新數據時,數據庫可以自動產生關鍵字,但使用者也可以產生關鍵字并且使所述關鍵字與所插入的數據一起被包括。如果使用者試圖針對已在使用中的關鍵字增加數據,則導致錯誤。例如,新數據會重寫(overwrite)已經與該關鍵字相關聯的數據。
[0005]利用傳統方法,由手動或手工完成在一組服務器上的數據庫中的數據分布。例如,在銀行業背景下,數據庫可以包括銀行數據、待決(pending)交易以及其他銀行業信息。銀行的客戶(customer)擁有銀行賬戶,銀行賬戶具有銀行賬戶號碼。在任何時候,可以對每個賬戶進行多種操作。每個數據片(Piece of data)、每個要被執行的交易或者每個待決操作與賬戶號碼(關鍵字)相關聯。如果這些操作使用賬戶號碼作為關鍵字來以普通數據庫結構進行儲存,在任何一次,僅有一條信息可以與該賬戶號碼相關聯。因為在數據庫中,每個關鍵字僅允許一個輸入(entry),所以當針對同一賬戶號碼的多個交易都是待決的時候,則會出現問題和導致錯誤。
[0006]如果對一賬戶有多于一個操作正被執行,則將會保持針對該賬戶號碼的一隊列。在大量賬戶的情況下,單個服務器可能無法處理針對每個賬戶的所有數據和隊列。結果,賬戶和賬戶隊列應當被分布在一組服務器上。這樣的任務是困難的,并且難于管理。增加或移去服務器只會增加管理的復雜度,因為隊列和數據應當在所述服務器組上被重新平衡。這會達到成千上萬個需要在一組消息服務器上被手動平衡或歸位(home)的隊列。
[0007]在包括每個關鍵字具有潛在的多個輸入、交易或操作的大型數據庫的任何背景(銀行業或其他)下,可以針對每個具有多個輸入的關鍵字創建隊列。由于這樣的系統難于手動地調度這樣大量的隊列,所以其難于管理。所述調度不是自動的并且是低效的。此夕卜,當服務器進入或離開服務器群時,會引入更大的復雜性,因為管理者則必須在一組新的服務器上重新計算和重新分布數據和待決交易。
【發明內容】
[0008]本公開涉及這樣的數據結構,所述數據結構允許每個關鍵字多個輸入。在實施方案中,數據結構可以類似于小隊列的表或微型隊列的表,在所述微型隊列中每個微型隊列輸入具有相同的關鍵字。
[0009]本公開還涉及通過將特定關鍵字值映射到特定節點或服務器群,在一組服務器上對隊列進行自動分布。在實施方案中,一致性哈希(consistent hashing)被用來確定隊列在所述服務器組上的分布。
[0010]本公開還涉及對一組服務器自動且高效地增加或移除節點。在實施方案中,一致性哈希可以被用來對一組服務器增加或移除節點。
[0011 ] 本公開還涉及實施分布式容錯儲存架構。在實施方案中,一致性哈希可以被用來提供并行分布式容錯。
[0012]本公開還涉及一種位于一個或更多個計算設備的系統上的數據儲存器,所述數據儲存器包括可執行代碼,所述可執行代碼執行下列步驟:接收多個數據輸入,所述多個數據輸入包括:第一數據輸入,所述第一數據輸入具有一個或更多個字段,其中至少一個字段為關鍵字字段,并且其中所述第一數據輸入在所述關鍵字字段中具有第一關鍵字值;第二數據輸入,所述第二數據輸入具有一個或更多個字段,其中至少一個字段為關鍵字字段,并且其中所述第二數據輸入在所述關鍵字字段中具有所述第一關鍵字值;以及將所述多個數據輸入儲存在所述數據儲存器中的空間內。
[0013]其中,所述空間包括:數據庫和表中的一個;以及基于策略的儲存結構。
[0014]其中,所述第一數據輸入和所述第二數據輸入共同地包括基于策略的儲存結構。
[0015]其中,所述基于策略的儲存結構為微隊列。
[0016]其中,所述基于策略的儲存結構可操作來實現隊列語義。
[0017]其中,所述隊列語義包括以下內容中的至少一個:歸類、排序、先入先出以及后入先出隊列語義。
[0018]其中,所述空間包括至少一個基于策略的儲存結構,其中所述至少一個基于策略的儲存結構包括:所述第一數據輸入;所述第二數據輸入;以及所述多個數據輸入中的任何相關數據輸入,其中所述相關數據輸入具有一個或更多個字段,其中至少一個字段為所述關鍵字字段,并且其中所述任何相關數據輸入在所述關鍵字字段中具有所述第一關鍵字值。
[0019]其中,所述數據儲存器還包括第二基于策略的儲存結構,所述第二基于策略的儲存結構包括:所述多個數據輸入的第三數據輸入,其中所述第三數據輸入具有一個或更多個字段,其中至少一個字段為所述關鍵字字段,并且其中所述第三數據輸入在所述關鍵字字段中具有第二關鍵字值;以及所述多個數據輸入的第四數據輸入,其中所述第四數據輸入具有一個或更多個字段,其中至少一個字段為所述關鍵字字段,并且其中所述第四數據輸入在所述關鍵字字段中具有第二關鍵字字段。
[0020]其中,所述基于策略的儲存結構為微隊列。
[0021]其中,所述基于策略的儲存結構包括隊列、鏈表、數組、堆棧、樹和圖中的一個。
[0022]其中,所述多個數據輸入通過指定所述關鍵字值是可存取的。
[0023]其中,所述多個數據輸入的具有特定關鍵字值的數據輸入包括微隊列,并且其中所述微隊列通過指定所述特定關鍵字值是可存取的。
[0024]其中,所述多個數據輸入包括操作或交易數據。
[0025]本公開還涉及一種用于在安裝于一個或更多個計算設備上的一個或更多個服務器的系統上分布基于策略的數據結構的方法,所述方法包括:確定來自一空間的至少一個基于策略的數據結構,所述確定步驟包括:識別所述空間中的至少一個數據輸入;確定所述至少一個數據輸入的關鍵字值;將所述至少一個基于策略的數據結構映射到所述一個或更多個服務器的系統中的節點、節點群、服務器和服務器群中的一個,所述映射步驟包括使用考慮所述關鍵字值的分布算法。
[0026]其中,所述映射所述至少一個基于策略的數據結構的步驟包括在所述一個或更多個服務器的系統上分布至少一個微隊列的操作。
[0027]其中,所述映射步驟包括使用一致性哈希算法。
[0028]其中,所述映射步驟包括:使用一致性哈希算法將所述一個或更多個服務器的系統中的節點映射到一刻度;使用所述一致性哈希算法將所述至少一個基于策略的數據結構映射到所述刻度;將所述至少一個基于策略的數據結構分配給最靠近節點,所述最靠近節點是在所述刻度上最靠近所述基于策略的數據結構被映射的節點。
[0029]其中,所述使用一致性哈希算法將所述一個或更多個服務器的系統中的節點映射到一刻度的步驟導致節點的基本上均勻分布。
[0030]其中,所述使用一致性哈希算法將所述一個或更多個服務器的系統中的節點映射到一刻度的步驟導致節點的基本上非均勻分布。
[0031]其中,所述確定所述空間中的至少一個基于策略的數據結構的步驟包括通過基于每個數據輸入的關鍵字值對所述空間中的數據輸入進行分組來確定多個基于策略的數據結構,并且其中所述映射所述多個基于策略的數據結構的步驟包括:使用一致性哈希算法將所述一個或更多個服務器的系統中的節點映射到一刻度;使用所述一致性哈希算法將所述多個基于策略的數據結構映射到所述刻度,其中所述多個基于策略的數據結構中的每個包括一組具有相同關鍵字值的數據輸入,并且其中所述將所述多個基于策略的數據結構映射到所述刻度的步驟包括將所述多個基于策略的數據結構中的每個的所述關鍵字值映射到所述刻度;以及通過將所述基于策略的數據結構中的每個分配到在所述刻度上最靠近所述基于策略的數據結構被映射的節點,將所述多個基于策略的數據結構分配給所述映射的節點。
[0032]其中,所述映射所述至少一個基于策略的數據結構的步驟導致基于策略的數據結構在一組節點或服務器上的基本上均勻分布。
[0033]本公開還涉及一種對計算節點集合增加節點的方法,所述方法包括:將新節點加入所述計算節點集合作為依附節點;在所述依附節點處接收來自所述計算節點集合中其他主動節點的信息;以及此后,將所述依附節點升級為所述計算節點集合中的主動節點。
[0034]其中,所述加入所述新節點作為依附節點的步驟包括所述依附節點與所述計算節點集合中的所述其他主動節點相互作用。
[0035]其中,所述加入所述新節點作為依附節點的步驟包括所述依附節點獲得所述計算節點集合中的所述其他主動節點的關鍵字空間。
[0036]其中,所述接收信息的步驟包括接收與一旦所述新節點成為主動節點時所述新節點將擁有的關鍵字值相關聯的關鍵字值的拷貝。
[0037]其中,所述接收信息的步驟包括協調所述依附節點與所述計算節點集合中的所述其他主動節點之間的數據。
[0038]其中,所述接收信息的步驟包括所述依附節點監控更新的關鍵字值。
[0039]其中,接收信息的步驟還包括使用一致性哈希算法計算關鍵字值在包括所述新節點的計算節點集合上的分布。
[0040]本公開還涉及一種從計算節點集合移除要離開的節點的方法,所述方法包括:所述要離開的節點發信號通知所述計算節