欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

多租戶數(shù)據(jù)存儲和訪問方法和裝置的制作方法

文檔序號:6465314閱讀:216來源:國知局
專利名稱:多租戶數(shù)據(jù)存儲和訪問方法和裝置的制作方法
技術領域
本發(fā)明涉及數(shù)據(jù)處理領域,具體涉及多租戶技術,更具體涉及一種多 租戶數(shù)據(jù)存儲和訪問方法和裝置。
背景技術
多租戶(imilti-tenancy)技術,作為一種近年來日益引起人們更大興 趣的技術,是指在服務提供商的服務器上運行軟件的單個實例,由該單個 實例為多個客戶組織(即租戶)尤其是中小企業(yè)提供服務。圖1示出了多 租戶應用的體系結構的示意圖。在大目的多租戶應用場景中,可能有大 量的(例如超過100萬個)中小企業(yè)租戶同時訪問托管平臺上的應用實例。 隨著租戶數(shù)量的大量增加,多租戶應用面臨著如下挑戰(zhàn) 一是繼續(xù)保持較 低和穩(wěn)定的每租戶資源使用成本,并同時保持可接受的每租戶性能水平; 二是保持較低的諸如租戶間操作、租戶注冊等管理操作的復雜性?,F(xiàn)有的多租戶技術使用如圖2所示的三種典型的物理數(shù)據(jù)存儲或共享 模式第一種是單獨數(shù)據(jù)庫模式,即每個租戶擁有自己單獨的數(shù)據(jù)庫。這種 模式存在著如下缺點以當前主流數(shù)據(jù)庫關系系統(tǒng)為例,每新構建一個數(shù) 據(jù)庫至少需要大約80M的缺省硬盤空間,這樣,如果需要300個數(shù)據(jù)庫, 則需要24G的硬盤空間;如果需要500個數(shù)據(jù)庫,則需要40G的硬盤空間。 在運行時,數(shù)據(jù)庫耗用的內存空間較大,比如300個數(shù)據(jù)庫本身至少需要 2.4G的內存空間,而500個數(shù)據(jù)庫本身至少需要3G的內存空間。此外, 隨著租戶數(shù)量的增加,即使增加的租戶數(shù)量并不大,整體系統(tǒng)數(shù)據(jù)訪問性 能水平已經(jīng)急劇降低。由于有以上缺點,這種單獨數(shù)據(jù)庫模式在僅適用于租戶數(shù)量很少且為大型租戶的場景。第二種模式是共享數(shù)據(jù)庫及共享表模式,在這種模式中,所有租戶共享同一個數(shù)據(jù)庫中的同一個表組(即用于特定應用的一組表),這樣就需要在表組的每個表中增加一個新的"租戶ID"字段,以便將不同租戶的數(shù) 據(jù)記錄區(qū)分開來。這種模式的優(yōu)點包括由于僅有一個表組,因此易于進 行跨租戶的管理操作;構建一個數(shù)據(jù)庫僅需要約80M的缺省硬盤空間;在 運行時,數(shù)據(jù)庫本身所耗用的缺省內存空間約為600-700M。然而,這種 模式的缺點是,隨著租戶數(shù)量增加到一個很大的數(shù)量(例如,超過IOOO), 會出現(xiàn)多租戶數(shù)據(jù)間互相嚴重干擾,整體系統(tǒng)數(shù)據(jù)訪問性能急劇降低的斷 點(break point)。第三種才莫式是共享數(shù)據(jù)庫及單獨表模式,在這種才莫式中,所有租戶共 享同一個數(shù)據(jù)庫,但每個租戶擁有自己單獨的表組。這種模式的優(yōu)點在于 即使租戶的數(shù)量增加到很大的數(shù)量,也不會出現(xiàn)整體系統(tǒng)數(shù)據(jù)訪問性能急 劇降低的斷點;構建一個數(shù)據(jù)庫只需要大約80M的缺省硬盤空間;在運行 時,數(shù)據(jù)庫本身的內存空間消耗缺省約為600-700M。然而,這種才莫式的 缺點是由于表組數(shù)量等于租戶數(shù)量,因而隨著租戶數(shù)量增加,表組數(shù)量 會變得太大,這樣租戶注冊、跨租戶等管理操作會異常復雜。圖3示出了在上述三種模式下一示例多租戶應用的整體系統(tǒng)數(shù)據(jù)訪問 性能隨著租戶數(shù)的增加而變化的情況。從圖中可見,共享數(shù)據(jù)庫且單獨表 模式下的性能較高且相對于租戶數(shù)的增加較為穩(wěn)定。而共享數(shù)據(jù)庫且共享 表模式下的性能低一些,且隨著租戶數(shù)增加到如1000個左右出現(xiàn)整體系統(tǒng) 數(shù)據(jù)訪問性能較快下降的斷點。單獨數(shù)據(jù)庫模式下的整體系統(tǒng)數(shù)據(jù)訪問性 能隨著租戶數(shù)的增加而急劇下降。顯然,本領域中需要一種既能夠隨著租戶數(shù)的大量增加而保持整體系 統(tǒng)數(shù)據(jù)訪問性能的穩(wěn)定性、又可降低管理成本的多租戶數(shù)據(jù)存儲方案。發(fā)明內容根據(jù)本發(fā)明的一個方面,提供了 一種用于存儲和訪問多租戶數(shù)據(jù)的方表組,其中每個表組用于 存儲所述多個租戶中的一組租戶的數(shù)據(jù);以及響應于接收到來自租戶的數(shù)據(jù)訪問請求,訪問相應的表組中的租戶數(shù)據(jù)。根據(jù)本發(fā)明的另一個方面,提供了一種用于存儲和訪問多租戶數(shù)據(jù)的裝置,包括建立模塊,被配置為在一個或多個數(shù)據(jù)庫中建立多個表組, 其中每個表組用于存儲所述多個租戶中的一組租戶的數(shù)據(jù);以及多租戶數(shù) 據(jù)路由器,被配置為響應于接收到來自租戶的數(shù)據(jù)訪問請求,訪問相應的 表組中的租戶數(shù)據(jù)。本發(fā)明的優(yōu)點是在租戶數(shù)很大的情況下既保證了較高的性能,又保證 了較低的管理成本。具體地說,由于與共享數(shù)據(jù)庫且單獨表組模式相比, 表組數(shù)減少了,因此提高了資源使用效率,并且跨租戶操作等的管理成本 減少了。此外,在一定的表共享率(即每個表組所對應的租戶數(shù)量)下, 即使租戶數(shù)量增加到很大數(shù)量(例如超過4000個租戶),整體系統(tǒng)數(shù)據(jù)訪問性能也保持接近于共享數(shù)據(jù)庫且單獨表模式下的性能水平。此外,提供 了在部署多租戶應用部署時可預測的適當數(shù)據(jù)共享方案。


所附權利要求中闡述了被認為是本發(fā)明的特點的創(chuàng)造性特征。但是, 通過參照附圖閱讀下面對說明性實施例的詳細說明可更好地理解發(fā)明本身以及其優(yōu)選使用模式、另外的目標、特征以及優(yōu)點,在附圖中 圖l示出了多租戶應用的體系結構示意圖;圖2示出了現(xiàn)有的多租戶技術使用的三種典型的物理數(shù)據(jù)存儲或共享 模式;圖3示出了在三種共享模式下一示例多租戶應用的性能隨著租戶數(shù)的 增加而變化的情況;圖4示出了根據(jù)本發(fā)明的實施例的用于存儲和訪問多租戶數(shù)據(jù)的方法; 圖5示出了根據(jù)本發(fā)明的實施例根據(jù)最小表組數(shù)策略創(chuàng)建和分配共享組和表組的具體步驟;圖6示出了根據(jù)本發(fā)明的實施例根據(jù)最大性能策略創(chuàng)建和分配共享組 和表組的具體步驟;圖7示出了根據(jù)本發(fā)明的實施例的用于獲得在數(shù)據(jù)庫中存儲多租戶應 用的多租戶數(shù)據(jù)的共享方案的方法;圖8例示了根據(jù)本發(fā)明的實施例的用于獲得在數(shù)據(jù)庫中存儲多租戶應 用的多租戶數(shù)據(jù)的共享方案的方法的具體步驟;以及圖9示出了根據(jù)本發(fā)明的實施例的用于存儲和訪問多租戶數(shù)據(jù)的裝置。
具體實施方式
下面參照附圖來說明本發(fā)明的實施例。在下面的說明中,闡述了許多 具體細節(jié)以便更全面地了解本發(fā)明。但是,對于本技術領域內的技術人員 很明顯,本發(fā)明的實現(xiàn)可不具有這些具體細節(jié)。此外,應當理解的是,本 發(fā)明并不限于所介紹的特定實施例。相反,可以考慮用下面的特征和元素 的任意組合來實施和實踐本發(fā)明。而無論它們是否涉及不同的實施例。因 此,下面的方面、特征、實施例和優(yōu)點僅作說明之用而不應被看作是所附 權利要求的要素或限定,除非權利要求中明確提出。下面參照附圖4描述根據(jù)本發(fā)明的實施例的用于存儲和訪問多租戶數(shù) 據(jù)的方法。如圖所示,在可選步驟401,確定多租戶應用的一個或多個數(shù)據(jù)庫中 的每個數(shù)據(jù)庫中的最大表組數(shù)和最大表共享率。表共享率是指每個表組中 所包含的租戶的數(shù)量??梢允褂枚喾N方法來確定所述最大表組數(shù)和最大表 共享率,例如由用戶根據(jù)經(jīng)驗來確定,或者使用下文中參照圖7所述的仿 真方法來確定。在步驟402,在所述一個或多個數(shù)據(jù)庫中建立多個表組,其中每個表 組用于存儲所述多個租戶中的一組租戶的數(shù)據(jù)。所述一組租戶稱為共享組, 該共享組所包含的租戶的數(shù)量即為表共享率。在本發(fā)明的不同實施例中,表共享率可以不同,例如可以是500、 100、 25、 IO等等。屬于同一共享組中的租戶的數(shù)據(jù)在同一表組中可使用租戶ID區(qū)分開來。用于存儲不同共享組的租戶數(shù)據(jù)的不同表組可位于相同或不同的數(shù)據(jù) 庫中。在本發(fā)明的實施例中,所述在一個或多個數(shù)據(jù)庫中建立多個表組是根 據(jù)所確定的每個數(shù)據(jù)庫中的最大表組數(shù)以及每個表組的最大表共享率進行 的。也就是說,在每個數(shù)據(jù)庫中所建立的表組的數(shù)量不超過所確定的最大 表組數(shù),且每個表組所對應的共享組中租戶的數(shù)量不超過所確定的最大表 共享率。在本發(fā)明的實施例中,當新租戶注冊(on-boarding)時,將根據(jù)預定 的策略,或者選擇現(xiàn)有的共享組和相應的表組,并將該新租戶分配到該現(xiàn) 有的共享組和相應的表組,或者創(chuàng)建新的共享組和相應的表組,并將該新 租戶分配到該新創(chuàng)建的共享組和相應的表組。在本發(fā)明的一實施例中,所述用于創(chuàng)建和分配共享組和表組的預定策 略為最小表組數(shù)策略。圖5示出了根據(jù)本發(fā)明的實施例根據(jù)最小表組數(shù)策 略分配和創(chuàng)建共享組和表組的具體步驟。如圖所示,在步驟501,響應于新租戶注冊,判斷當前數(shù)據(jù)庫中是否 存在未達到所述最大表共享率的表組。如果所述判斷為是,則轉到步驟502,將所述新租戶分配給所i^J且, 并且過程結束。如果所述判斷為否,則轉到步驟503,進一步判斷當前數(shù)據(jù)庫中的表 組數(shù)是否已達到所述最大表組數(shù)。如果所述進一步判斷為否,則轉到步驟504,建立一個新表組,并將 所述新租戶分配給所述新表組,并且過程結束。如果所述進一步判斷為是,則轉到步驟505,判斷是否還存在數(shù)據(jù)庫。如果該判斷為是,則轉到步驟506,將下一個數(shù)據(jù)庫作為當前數(shù)據(jù)庫, 并返回執(zhí)行步驟501。如果該判斷為否,則轉到步驟507,返回錯誤指示,然后過程結束。 以上過程4十對每一個新租戶注冊重復進行。在本發(fā)明的另一實施例中,所述用于創(chuàng)建和分配共享組和表組的預定 的策略為最大性能策略。圖6示出了根據(jù)本發(fā)明的實施例根據(jù)最大性能策 略分配和創(chuàng)建共享組和表組的具體步驟。如圖所示,在步驟601,響應于新租戶注冊,判斷當前數(shù)據(jù)庫中的表 組數(shù)是否已達到所確定的最大表組數(shù)。如果所述判斷是否,則轉到步驟602,根據(jù)數(shù)據(jù)庫的最大表組數(shù),在 當前數(shù)據(jù)庫中創(chuàng)建新表組使當前數(shù)據(jù)庫的表組數(shù)達到最a組數(shù)。然后, 在步驟603,將所述新租戶分配給創(chuàng)建的最后一個新表組,并且過程結束。如果所述判斷為是,則轉到步驟604,從當前數(shù)據(jù)庫中尋找到一個租 戶數(shù)量最少的表組,然后在步驟605,判斷該表組的租戶數(shù)量是否達到所 確定的最大表共享率。如果該判斷是否,在步驟606,將所述新租戶分配給該表組,并且過 程結束。如果該判斷為是,表明當前數(shù)據(jù)庫中已經(jīng)沒有可用的表組,則轉到步 驟607,判斷是否還存在下一個數(shù)據(jù)庫。如果這個判斷為是,則針對該下一個數(shù)據(jù)庫返回執(zhí)行步驟601。 如果這個判斷為否,則轉到步驟608,返回錯誤指示,并且過程結束。 以上過程針對每一個新租戶注冊重復執(zhí)行。應指出的是,以上所述根據(jù)本發(fā)明的實施例用于創(chuàng)建和分配共享組和 表組的策略僅為示例,而不是對本發(fā)明的限制。在本發(fā)明的其他實施例中, 可以使用其他策略來創(chuàng)建和分配共享組和表組。此外,在本發(fā)明的一些實 施例中,所述最小表組數(shù)策略和最大性能策略中的各具體步驟可以與所描 述的不同。在本發(fā)明的實施例中,所創(chuàng)建的每個表組都具有唯一的序列號,并且 該表組中每個表的名稱為該多租戶應用的數(shù)據(jù)庫模式中原表的名稱與表組 序列號的拼接。例如原表的名稱為"SalesOrder",則新創(chuàng)建的表的名稱為"SalesOrder—00000001" 、 "SalesOrder—00000002"等。在本發(fā)明的實施例中,所創(chuàng)建的每個表組中的每個表具有與原表相同 的字段,以及新添加的"tenantID"字段,該字段用來將同一個表中屬于 同一共享組中的不同租戶的數(shù)據(jù)區(qū)分開來,返回圖4,在本發(fā)明的一實施例中,每當將新的租戶分配給現(xiàn)有的或 新創(chuàng)建的表組后,在可選步驟403,將該租戶與所分配的表組之間的對應 關系記錄在多租戶元數(shù)據(jù)庫中。例如,在該元數(shù)據(jù)庫中記錄了每個租戶ID 與相應的表組序列號。這樣,當接收到來自某一租戶的數(shù)據(jù)訪問請求時, 就可以根據(jù)該租戶的ID在多租戶元數(shù)據(jù)庫中找到相應的表組,并進而實 現(xiàn)對相應表組中的表中該租戶的相應數(shù)據(jù)的訪問。在本發(fā)明的實施例中, 元數(shù)據(jù)庫中還存儲有數(shù)據(jù)庫系統(tǒng)單元的訪問地址,例如訪問URL。在步驟404,響應于接收到來自租戶的數(shù)據(jù)訪問請求,訪問相應的表 組中的租戶數(shù)據(jù)。在本發(fā)明的實施例中,所述響應于接收到來自租戶的數(shù)據(jù)訪問請求,求,通過查詢所述多租戶元數(shù)據(jù)庫來找到相應的表組,并訪問相應的表組 中的租戶數(shù)據(jù)。在本發(fā)明的實施例中,所述數(shù)據(jù)訪問請求包含用于數(shù)據(jù)訪問的SQL語 句,且所述響應于接收到來自租戶的數(shù)據(jù)訪問請求,訪問相應的表組中的 租戶數(shù)據(jù)包括響應于接收到來自租戶的數(shù)據(jù)訪問請求,提取并分析該數(shù)據(jù) 訪問請求中包含的SQL語句,將該SQL語句修改為用于訪問相應的表組 中該租戶的相應翁:據(jù)的相應的SQL語句,并將該修改后的SQL語句發(fā)送 給相應的數(shù)據(jù)庫。下面舉例i兌明步驟404的具體執(zhí)行過程。在第一步,例如,某一租戶向多租戶應用發(fā)送包含如下SQL語句的數(shù) 據(jù)訪問請求select * from T一SALESORDER where signdate>,2007-01-05, and signdate<,2007-01-24,。在第二步,根據(jù)本發(fā)明的裝置截獲該請求,獲得當前請求的租戶ID,并通過一多租戶元數(shù)據(jù)管理器從多租戶元數(shù)據(jù)庫中查找與該租戶ID對應 的表組序列號和數(shù)據(jù)庫系統(tǒng)單元的訪問URL。例如,通過多租戶應用的系 統(tǒng)程序接口或安全會話機制獲得當前租戶的租戶ID為"tenantA",而從 多租戶數(shù)據(jù)庫中獲得相應的表組序列號為"00000001"。在第三步,根據(jù)本發(fā)明的裝置分析上述SQL語句,并使用所查找的租 戶ID和相應的表組序列號修改該SQL語句。例如,將該SQL語句修改 為select * from TSALESORDER_00000001 where tenanted = 'tenantA' and signdate > "2007畫01誦05' and signdate < ,2007-01-24,。在第四步,根據(jù)本發(fā)明的裝置將帶有修改后的SQL語句的租戶請求重 新發(fā)送到相應的數(shù)據(jù)庫系統(tǒng)單元的訪問URL。下面參照附圖7描述根據(jù)本發(fā)明的實施例用于通過仿真方法執(zhí)行上述 步驟401、即確定每個數(shù)據(jù)庫中的最大表組數(shù)和最大表共享率的具體步驟。如圖所示,該方法包括以下步驟在步驟701,建立反映所述多租戶應用的使用的仿真用例。在步驟702,針對所述多租戶應用及該數(shù)據(jù)庫運行所述仿真用例,從而獲得所述多租戶應用在多個表共享率中的每個表共享率和多個租戶總數(shù)量水平中的每個下的總性能值。在步驟703,根據(jù)所述總性能值以及對于每個租戶的所要求性能值獲得最大表共享率和最大租戶總數(shù)量水平,并進而得出該數(shù)據(jù)庫中的最大表組數(shù)。根據(jù)本發(fā)明的實施例,其中所述獲得最大表共享率和最大租戶總數(shù)量 水平還才艮據(jù)所述多租戶應用的提供方所能容忍的、在對于每個租戶的所要 求性能值不變的情況下隨著表共享率的增加而造成的租戶總數(shù)量降低的百 分比。根據(jù)本發(fā)明的實施例,所述獲得最大表共享率和租戶總數(shù)量7]C平的步 驟包括以下具體步驟在笫一步,4H據(jù)表共享率為1時各租戶總數(shù)量水平下的總性能值以及 對于每個租戶的所要求性能值獲得表共享率為1時滿足對于每個租戶的所要求性能值的租戶總數(shù)量水平。在第二步,根據(jù)所i^共享率為1時滿足對于每個租戶的所要求性能 值的租戶總數(shù)量水平以及所述多租戶應用的提供方所能容忍的所述租戶總 數(shù)量降低的百分比獲得所述提供方所能接受的最大租戶總數(shù)量水平。在第三步,通過比較所述多租戶應用在多個表共享率和該最大租戶總 數(shù)量水平下的總性能值與在該最大租戶總數(shù)量水平下滿足對于每個租戶的 所要求性能值的總性能值來獲得所述最大表共享率。下面參照附圖8舉例說明根據(jù)本發(fā)明的實施例的用于獲得每個數(shù)據(jù)庫 中的最大表組數(shù)和每個表組的最大表共享率的方法的各具體步驟。在步驟一,才艮據(jù)多租戶應用的使用信息構建仿真用例。典型的多租戶 應用的混合用例包含以下內容-SQL操作屬性 SQL操作腳本與真實的典型混合用例一致的一系列SQL操 作(select, insert, update等)。-表屬性 多租戶應用的表生成腳本 多租戶應用的仿真業(yè)務數(shù)據(jù)生成腳本 .每個表上每租戶的數(shù)據(jù)記錄量 -性能目標屬性 邊界TPS (每秒事務)混合用例的所要求的每租戶TPS (例如,基于服務級別協(xié)議(SLA)) 容許總租戶數(shù)減少百分比在邊界TPS不變的情況下,隨著TSR(表共享率)的增加,多租戶應用的提供商允許總租戶數(shù)減少的百分比 -伸縮屬性 租戶數(shù)伸縮差 TSR伸縮差 邊界伸縮率-伸縮率整體系統(tǒng)單元最大TPS減少的差伹/租戶數(shù)重伸縮 值-如果當前伸縮率超出了邊界伸縮率,則當前租戶數(shù)為斷點 本領域的技術人員可以根據(jù)對仿真用例的以上說明容易地構建出適當 的仿真用例。在步驟二通過針對多租戶應用運行以上仿真用例可獲得該多租戶應 用在各種表共享率和租戶總數(shù)量水平下的總性能值(例如,TPS)。 例如,如圖所示,仿真在TSR-1即單獨表;f莫式下的線l: 租戶數(shù)伸縮差為500 在每個租戶數(shù)伸縮水平下,在目標表中產(chǎn)生業(yè)務數(shù)據(jù)-增加的數(shù)據(jù)大小-(每租戶的記錄數(shù)量)* (租戶數(shù)伸縮差) 多個客戶端請求根據(jù)仿真用例同時執(zhí)行操作以獲得最大的整體系 統(tǒng)單元TPS-監(jiān)視系統(tǒng)瓶頸,例如CPU時間百分比,磁盤空閑時間百分比, 內存使用等)在步驟三確定該數(shù)據(jù)庫系統(tǒng)單元所支持的最大總租戶數(shù) 如果在步驟二中得到的線1中存在斷點(即當前伸縮率超出了邊界伸縮率),則上一次伸縮點與斷點之間的一點可能是最大租戶數(shù)。此時,可以將租戶數(shù)伸縮差設置為較小值,并重新進行仿真,直到精確地定位最大總租戶數(shù)。
如果不存在斷點,但線1與邊界TPS線交于一點,則停止租戶數(shù)伸縮,并且該交點表示單獨表模式下的最大總租戶數(shù)。在圖中所示示例中,該最大總租戶數(shù)為1375,如線2所示。
基于上述最大總租戶數(shù)以及容許租戶數(shù)減少百分比(圖中所示示例為10%),獲得該多租戶應用的提供商所能接受的適當租戶數(shù)。在圖中所示示例為,該提供商所能接受的適當租戶數(shù)為1375 *90%=1250,如圖中線3所示。 在步驟四基于邊界TPS,確定最大TSR16 在由步驟三求出的所能接受的適當租戶數(shù)固定的情況下(線2), 按照TSR伸縮差增加TSR,獲得當前最大總TPS,并確保它大于 當前邊界TPS下的總TPS值(在圖中所示示例中,該總TPS值為 0.3*1275=375). 由此獲得最大TSR,在圖中所示的示例中,該最大TSR為25。 這樣,由以上過程所獲得的示例多租戶應用的適當?shù)臄?shù)據(jù)共享方案為每個數(shù)據(jù)庫系統(tǒng)單元所支持的最大租戶總數(shù)量水平為1250;最大表共享率 (TSR)為25,最大表組數(shù)為50。以上過程既可針對一個數(shù)據(jù)庫系統(tǒng)單元執(zhí)行,并將所獲得的最大表組數(shù)和最大表共享率應用于其他數(shù)據(jù)庫系統(tǒng)單元,也可以針對每一個數(shù)據(jù)庫系統(tǒng)單元分別執(zhí)行,從而獲得每一個數(shù)據(jù)庫系統(tǒng)單元各自的最大表組數(shù)和最大表共享率。以上描述了根據(jù)本發(fā)明的實施例的用于存儲和訪問多租戶數(shù)據(jù)的方 法,應指出的是,以上描述僅為示例,而不是對本發(fā)明的限制。在本發(fā)明 的其他實施例中,該方法可具有更多、更少或不同的步驟,且各步驟之間 的順序可以與所描述的不同。例如,在本發(fā)明的一些實施例中,可以沒有 上述一個或多個可選步驟。每個步驟的具體執(zhí)行方式可以與所描述的不同。 再例如,在本發(fā)明的一些實施例中,作為附加或替代,還可通過監(jiān)視多租 戶應用的實際使用情況來獲得多租戶應用的實際使用數(shù)據(jù),根據(jù)多租戶應 用的實際使用數(shù)據(jù)來生成或修改仿真用例,并針對該多租戶應用運行該仿 真用例,從而獲得適當?shù)拿總€數(shù)據(jù)庫的最大表組數(shù)和每個表組的最大表共 享率,等等。所有這些變化都處于本發(fā)明的精神和范圍之內。下面參照附圖9描述根據(jù)本發(fā)明的實施例的用于存儲和訪問多租戶數(shù) 據(jù)的裝置。該裝置可用于實現(xiàn)上述根據(jù)本發(fā)明的實施例的用于存儲和訪問 多租戶數(shù)據(jù)的方法。為簡明起見,在以下描述中,省略了與以上描述重復 的部分內容。因此,可參見以上描述來了解該裝置的細節(jié)。如圖所示,該裝置包括建立模塊901,被配置為在一個或多個 數(shù)據(jù)庫中建立多個表組,其中每個表組用于存儲所述多個租戶中的一組租戶的數(shù)據(jù);以及多租戶數(shù)據(jù)路由器卯2,被配置為響應于接收到來自租戶 的數(shù)據(jù)訪問請求,訪問相應的表組中的租戶數(shù)據(jù)。所述建立模塊卯l既可 以如圖中所示位于所述多租戶數(shù)據(jù)路由器902之內,作為所述多租戶數(shù)據(jù) 路由器902的一部分,也可以作為單獨的模塊位于所述多租戶數(shù)據(jù)路由器 902之外。根據(jù)本發(fā)明的實施例,所述一個或多個數(shù)據(jù)庫可凈皮擴展為更多的數(shù)據(jù)庫。根據(jù)本發(fā)明的實施例,該裝置還包括多租戶元數(shù)據(jù)庫903,用于記錄 租戶與表組之間的對應關系,即租戶位置信息,且所述多租戶數(shù)據(jù)路由器 902進一步被配置為響應于接收到來自租戶的數(shù)據(jù)訪問請求,通過查詢所 述多租戶元數(shù)據(jù)庫903來找到相應的表組,并訪問相應的表組中的租戶數(shù)據(jù)。根據(jù)本發(fā)明的實施例,所述數(shù)據(jù)訪問請求包含用于數(shù)據(jù)訪問的SQL語 句,且所述多租戶數(shù)據(jù)路由器902進一步被配置為響應于接收到來自租戶 的數(shù)據(jù)訪問請求,提取并分析該數(shù)據(jù)訪問請求中包含的SQL語句,將該 SQL語句修改為用于訪問相應的表組中該租戶的相應數(shù)據(jù)的相應的SQL 語句,并將該<奮^的SQL語句發(fā)送給相應的數(shù)據(jù)庫。根據(jù)本發(fā)明的實施例,該用于存儲和訪問多租戶數(shù)據(jù)的裝置還包括確 定模塊卯4,該確定模塊被配置為確定每個數(shù)據(jù)庫中的最大表組數(shù)和最大 表共享率,并且所述建立模塊901進一步被配置為才艮據(jù)所確定的每個數(shù)據(jù) 庫中的最大表組數(shù)和最;J^共享率在所述一個或多個數(shù)據(jù)庫中建立多個表 組。根據(jù)本發(fā)明的一實施例,所述建立模塊卯l使用最小表組數(shù)據(jù)策略在 一個或多個數(shù)據(jù)庫中建立表組,并將所建立的表組分配給租戶。在這樣的 實施例中,所述建立模塊901可以包括用于響應于新租戶注冊,如果判 斷當前數(shù)據(jù)庫中存在未達到所述最大表共享率的表組,則將新租戶分配給 該表組的裝置;用于如果判斷當前數(shù)據(jù)庫中不存在未達到所述最大表共享 率的表組,并且判斷當前數(shù)據(jù)庫中的表組數(shù)沒有達到所述最大表組數(shù),則建立一個新表組,并將所迷新租戶分配給所述新表組的裝置;以及用于否 則針對下一個數(shù)據(jù)庫執(zhí)行以上搮作,直到所述一個或多個數(shù)據(jù)庫中的每一 個數(shù)據(jù)庫都達到了所述最大表組數(shù),且每一個表組均達到了所述最大表共 享率的裝置。根據(jù)本發(fā)明的另一實施例,所述建立模塊卯l使用最大性能策略在一 個或多個數(shù)據(jù)庫中建立表組,并將所建立的表組分配給租戶。在這樣的實 施例中,所述建立模塊901可以包括用于響應于新租戶注冊,如果判斷 當前數(shù)據(jù)庫中的表組數(shù)未達到所述最大表組數(shù),則創(chuàng)建新表組,并將新租 戶分配給該新表組,直到當前數(shù)據(jù)庫中的表組數(shù)達到所述最大表組數(shù)的裝 置;用于如果判斷當前數(shù)據(jù)庫中的表組數(shù)已達到所述最大表組數(shù),則將新 租戶分配給當前數(shù)據(jù)庫中租戶數(shù)量最少的表組,直到當前數(shù)據(jù)庫中的所有 表組均達到所述最大表共享率的裝置;以及用于然后針對下一個數(shù)據(jù)庫重 復執(zhí)行以上操作,直到所述一個或多個數(shù)據(jù)庫中的每一個數(shù)據(jù)庫都達到了 所述最大表組數(shù),且每一個表組都達到了所述最大表共享率的裝置。根據(jù)本發(fā)明的實施例,所述確定模塊904包括用于建立反映所述多 租戶應用的使用的仿真用例的裝置;用于針對所述多租戶應用以及該數(shù)據(jù) 庫運行所迷仿真用例,從而獲得所迷多租戶應用在多個表共享率中的每個 表共享率和多個租戶總數(shù)量水平中的每個租戶總數(shù)量水平下的總性能值的 裝置;以及用于才艮據(jù)所述總性能值以及對于每個租戶的所要求性能值得出 最大表共享率和最大租戶總數(shù)量水平,并進而得出該數(shù)據(jù)庫中的最大表組 數(shù)的裝置,其中所述得出最大表共享率和最大租戶總數(shù)量水平還根據(jù)所述 多租戶應用的提供方所能容忍的、在對于每個租戶的所要求性能值不變的 情況下隨著表共享率的增加而造成的租戶數(shù)量降低的百分比。根據(jù)本發(fā)明的進一步的實施例,所述用于根據(jù)所述總性能值以及對于 每個租戶的所要求性能值得出最大表共享率和最大租戶總數(shù)量水平的裝置 包括用于祁濕表共享率為1時各租戶總數(shù)量水平下的總性能值以及對于 每個租戶的所要求性能值得出表共享率為l時滿足對于每個租戶的所要求 性能值的租戶總數(shù)量水平的裝置;用于根據(jù)所M共享率為1時滿足對于每個租戶的所要求性能值的租戶總數(shù)量水平以及所述多租戶應用的提供方 所能容忍的所述租戶數(shù)量降低的百分比得出所述提供方所能接受的最大租戶總數(shù)量水平的裝置;以及用于通過比較所述多租戶應用在多個表共享率 和該最大租戶總數(shù)量水平下的總性能值與在該最大租戶總數(shù)量水平下滿足 對于每個租戶的所要求性能值的總性能值來得出所述最大表共享率的裝置。應指出的是,以上對本發(fā)明的用于存儲和訪問多租戶數(shù)據(jù)裝置的描述 和圖示僅為示例,而不是對本發(fā)明的限制。在本發(fā)明的其他實施例中,該 裝置可具有更多、更少或不同的模塊,且各模塊之間的連接或包含關系可 以與所描述和圖示的不同。例如,在本發(fā)明的一些實施例中,還包括多租戶元數(shù)據(jù)管理器905,其中,所述多租戶數(shù)據(jù)路由器902通過所述多租戶 元數(shù)據(jù)管理器卯5來訪問所述多租戶元數(shù)據(jù)庫903。此外,所述多租戶元 數(shù)據(jù)管理器卯5還可用于當新租戶注冊時,根據(jù)適當策略在多租戶元數(shù)據(jù) 庫中建立租戶與表組之間的對應關系。在本發(fā)明的一些實施例中,作為附 加或替代,該用于存儲和訪問多租戶數(shù)據(jù)裝置還包括用于通過監(jiān)視多租戶 應用的實際使用情況來獲得多租戶應用的實際使用數(shù)據(jù)的模塊,用于根據(jù) 多租戶應用的實際使用數(shù)據(jù)來生成或修改仿真用例的模塊,以及用于針對 該多租戶應用運行該仿真用例,從而獲得適當?shù)臄?shù)據(jù)共享方案的模塊。此 外,在本發(fā)明的一些實施例中,可以沒有所述多租戶元數(shù)據(jù)庫903和/或所 述確定模塊卯4。本發(fā)明可以硬件、軟件、或硬件與軟件的結合的方式實現(xiàn)。本發(fā)明可 以集中的方式在一個計算機系統(tǒng)中實現(xiàn),或以分布方式實現(xiàn),在這種分布 方式中,不同的部件分布在若干互連的計算機系統(tǒng)中。適于執(zhí)行本文中描 述的方法的任何計算機系統(tǒng)或其它裝置都是合適的。 一種典型的硬件和軟 件的組合可以是帶有計算機程序的通用計算機系統(tǒng),當該計算^序 載和執(zhí)行時,控制該計算機系統(tǒng)而使其執(zhí)行本發(fā)明的方法,并構成本發(fā)明 的裝置。本發(fā)明也可體現(xiàn)在計算機程序產(chǎn)品中,該程序產(chǎn)品包含使能實現(xiàn)本文中描述的方法的所有特征,并且當其被加載到計算機系統(tǒng)中時,能夠執(zhí)行所述方法o盡管已參照優(yōu)選實施例具體示出和說明了本發(fā)明,但是本領域內的那 些技術人員應理解,可在形式和細節(jié)上對其進行各種改變而不會背離本發(fā) 明的精神和范圍。
權利要求
1.一種用于存儲和訪問多租戶數(shù)據(jù)的方法,包括在一個或多個數(shù)據(jù)庫中建立多個表組,其中每個表組用于存儲所述多個租戶中的一組租戶的數(shù)據(jù);以及響應于接收到來自租戶的數(shù)據(jù)訪問請求,訪問相應的表組中的租戶數(shù)據(jù)。
2. 根據(jù)權利要求1的方法,還包括將租戶與表組之間的對應 關系記錄在多租戶元數(shù)據(jù)庫中,且所述響應于接收到來自租戶的 數(shù)據(jù)訪問請求,訪問相應的表組中的租戶數(shù)據(jù)包括響應于接收到 來自租戶的數(shù)據(jù)訪問請求,通過查詢所述多租戶元數(shù)據(jù)庫來找到 相應的表組,并訪問相應的表組中的租戶數(shù)據(jù)。
3. 根據(jù)權利要求1的方法,其中,所述數(shù)據(jù)訪問請求包含用 于數(shù)據(jù)訪問的SQL語句,且所述響應于接收到來自租戶的數(shù)據(jù)訪 問請求,訪問相應的表組中的租戶數(shù)據(jù)包括響應于接收到來自租 戶的數(shù)據(jù)訪問請求,提取并分析該數(shù)據(jù)訪問請求中包含的SQL語 句,將該SQL語句〗奮改為用于訪問相應的表組中該租戶的相應數(shù) 據(jù)的相應的SQL語句,并將該修改后的SQL語句發(fā)送給相應的 數(shù)據(jù)庫。
4. 根據(jù)權利要求1的方法,還包括確定每個數(shù)據(jù)庫中的最大 表組數(shù)和最大表共享率,且其中,在所述一個或多個數(shù)據(jù)庫中建 立多個表組是根據(jù)所確定的每個數(shù)據(jù)庫中的最大表組數(shù)以及最大 表共享率進行的。
5. 根據(jù)權利要求4的方法,其中在所述一個或多個數(shù)據(jù)庫中 建立多個表組包括響應于新租戶注冊,如果判斷當前數(shù)據(jù)庫中存在未達到所述 最大表共享率的表組,則將新租戶分配給該表組;如果判斷當前數(shù)據(jù)庫中不存在未達到所述最大表共享率的表組,并且判斷當前數(shù)據(jù)庫中的表組數(shù)沒有達到所述最大表組數(shù),則建立一個新表組,并將所述新租戶分配給所述新表組;以及否則針對下一個數(shù)據(jù)庫執(zhí)行以上操作,直到所述一個或多個 數(shù)據(jù)庫中的每一個數(shù)據(jù)庫都包含了所述最大表組數(shù),且每一個表 組都達到了所述最大表共享率。
6. 根據(jù)權利要求4的方法,其中在所述一個或多個數(shù)據(jù)庫中 建立多個表組包括響應于新租戶注冊,如果判斷當前數(shù)據(jù)庫中的表組數(shù)未達到 所述最大表組數(shù),則創(chuàng)建新表組,并將新租戶分配給該新表組, 直到當前數(shù)據(jù)庫中的表組數(shù)達到最大表組數(shù);如果判斷當前數(shù)據(jù)庫中的表組數(shù)已達到所述最大表組數(shù),則 將新租戶分配給當前數(shù)據(jù)庫中租戶數(shù)最少的表組,直到當前數(shù)據(jù)庫中的所有表組均達到所述最大表共享率;以及然后針對下一個數(shù)據(jù)庫重復執(zhí)行以上操作,直到所述一個或 多個數(shù)據(jù)庫中的每一個數(shù)據(jù)庫都達到了所述最大表組數(shù),且每一 個表組都達到了所述最大表共享率。
7. 根據(jù)權利要求4的方法,其中所述確定每個數(shù)據(jù)庫中的最 大表組數(shù)和最大表共享率包括建立反映所述多租戶應用的使用的仿真用例; 針對所迷多租戶應用以及該數(shù)據(jù)庫運行所述仿真用例,從而 獲得所述多租戶應用在多個表共享率中的每個表共享率和多個租 戶總數(shù)量水平中的每個租戶總數(shù)量水平下的總性能值;以及根據(jù)所述總性能值以及對于每個租戶的所要求性能值得出所 述最大表共享率和最大租戶總數(shù)量水平,并進而得出該數(shù)據(jù)庫中 的最大表組數(shù),其中所述得出最大表共享率和最大租戶總數(shù)量水 平還根據(jù)所述多租戶應用的提供方所能容忍的、在對于每個租戶 的所要求性能值不變的情況下隨著表共享率的增加而造成的租戶 總數(shù)量水平降低的百分比。
8. 根據(jù)權利要求7的方法,其中所述得出最大表共享率和租 戶總數(shù)量水平包括根據(jù)表共享率為1時各租戶總數(shù)量水平下的總性能值以及對 于每個租戶的所要求性能值得出表共享率為1時滿足對于每個租 戶的所要求性能值的租戶總數(shù)量水平;根據(jù)所述表共享率為1時滿足對于每個租戶的所要求性能值 的租戶總數(shù)量水平以及所述多租戶應用的提供方所能容忍的所述 租戶數(shù)量降低的百分比得出所述提供方所能接受的最大租戶總數(shù) 量水平',以及通過比較所述多租戶應用在多個表共享率和該最大租戶總數(shù) 量水平下的總性能值與在該最大租戶總數(shù)量水平下滿足對于每個 租戶的所要求性能值的總性能值來得出所述最大表共享率。
9. 一種用于存儲和訪問多租戶數(shù)據(jù)的裝置,包括 建立模塊,被配置為在一個或多個數(shù)據(jù)庫建立多個表組,其中每個表組用于存儲所迷多個租戶中的一組租戶的數(shù)據(jù);以及多租戶數(shù)據(jù)路由器,被配置為響應于接收到來自租戶的數(shù)據(jù) 訪問請求,訪問相應的表組中的租戶數(shù)據(jù)。
10. 根據(jù)權利要求9的裝置,還包括多租戶元數(shù)據(jù)庫,用于記 錄租戶與表組之間的對應關系,且所述多租戶數(shù)據(jù)路由器進一步 被配置為響應于接收到來自租戶的數(shù)據(jù)訪問請求,通過查詢所述 多租戶元數(shù)據(jù)庫來找到相應的表組,并訪問相應的表組中的租戶 數(shù)據(jù)。
11. 根據(jù)權利要求9的裝置,其中,所述數(shù)據(jù)訪問請求包含用 于數(shù)據(jù)訪問的SQL語句,且所述多租戶數(shù)據(jù)路由器進一步被配置 為響應于接收到來自租戶的數(shù)據(jù)訪問請求,提取并分析該數(shù)據(jù)訪 問請求中包含的SQL語句,將該SQL語句4奮改為用于訪問相應 的表組中該租戶的相應數(shù)據(jù)的相應的SQL語句,并將該修改后的 SQL語句發(fā)送給相應的數(shù)據(jù)庫。
12. 根據(jù)權利要求9的裝置,還包括確定模塊,其被配置為確 定每個數(shù)據(jù)庫中的最大表組數(shù)和最大表共享率,且其中,所述建 立模塊進一步被配置為根據(jù)所確定的每個數(shù)據(jù)庫中的最大表組數(shù) 和最大表共享率在所述一個或多個數(shù)據(jù)庫中建立多個表組。
13. 根據(jù)權利要求12的裝置,其中所述建立模塊包括 用于響應于新租戶注冊,如果判斷當前數(shù)據(jù)庫中存在未達到所述最大表共享率的表組,則將新租戶分配給該表組的裝置;用于如果判斷當前數(shù)據(jù)庫中不存在未達到所述最大表共享率 的表組,并且判斷當前數(shù)據(jù)庫中的表組數(shù)沒有達到所述最大表組 數(shù),則建立一個新表組,并將所述新租戶分配給所述新表組的裝 置;以及用于否則針對下一個數(shù)據(jù)庫執(zhí)行以上操作,直到所述一個或 多個數(shù)據(jù)庫中的每一個數(shù)據(jù)庫都達到了所述最大表組數(shù),且每一 個表組均達到了所述最大表共享率的裝置。
14. 根據(jù)權利要求12的裝置,其中所述建立模塊包括 用于響應于新租戶注冊,如果判斷當前數(shù)據(jù)庫中的表組數(shù)未達到所述最大表組數(shù),則創(chuàng)建新表組,并將新租戶分配給該新表 組,直到當前數(shù)據(jù)庫中的表組數(shù)達到所述最大表組數(shù)的裝置;用于如果判斷當前數(shù)據(jù)庫中的表組數(shù)已達到所述最大表組 數(shù),則將新租戶分配給當前數(shù)據(jù)庫中租戶數(shù)量最少的表組,直到 當前數(shù)據(jù)庫中的所有表組均達到所述最大表共享率的裝置;以及用于然后針對下一個數(shù)據(jù)庫重復執(zhí)行以上操作,直到所述一 個或多個數(shù)據(jù)庫中的每一個數(shù)據(jù)庫都達到了所迷最大表組數(shù),且 每一個表組都達到了所述最大表共享率的裝置。
15. 根據(jù)權利要求12的裝置,其中,所述確定模塊包括 用于建立反映所述多租戶應用的使用的仿真用例的裝置;用于針對所述多租戶應用以及該數(shù)據(jù)庫運行所述仿真用例, 從而獲得所述多租戶應用在多個表共享率中的每個表共享率和多個租戶總數(shù)量水平中的每個租戶總數(shù)量水平下的總性能值的裝置;以及用于'根據(jù)所述總性能值以及對于每個租戶的所要求性能值得 出最大表共享率和最大租戶總數(shù)量水平,并進而得出該數(shù)據(jù)庫中 的最大表組數(shù)的裝置,其中所述得出最大表共享率和最大租戶總 數(shù)量水平還根據(jù)所述多租戶應用的提供方所能容忍的、在對于每 個租戶的所要求性能值不變的情況下隨著表共享率的增加而造成的租戶數(shù)量降低的百分比。
16.根據(jù)權利要求15的裝置,其中所述用于根據(jù)所述總性能 值以及對于每個租戶的所要求性能值得出最大表共享率和最大租 戶總數(shù)量水平的裝置包括用于根據(jù)表共享率為1時各租戶總數(shù)量水平下的總性能值以 及對于每個租戶的所要求性能值得出表共享率為1時滿足對于每 個租戶的所要求性能值的租戶總數(shù)量水平的裝置;用于根據(jù)所述表共享率為1時滿足對于每個租戶的所要求性 能值的租戶總數(shù)量水平以及所述多租戶應用的提供方所能容忍的 所述租戶數(shù)量降低的百分比得出所述提供方所能接受的最大租戶 總數(shù)量水平的裝置;以及用于通過比較所述多租戶應用在多個表共享率和該最大租戶 總數(shù)量水平下的總性能值與在該最大租戶總數(shù)量水平下滿足對于 每個租戶的所要求性能值的總性能值來得出所述最大表共享率的 裝置。
全文摘要
提供了一種用于存儲和訪問多租戶數(shù)據(jù)的方法,該方法包括在一個或多個數(shù)據(jù)庫中建立多個表組,其中每個表組用于存儲多個租戶中的一組租戶的數(shù)據(jù);以及響應于接收到來自租戶的數(shù)據(jù)訪問請求,訪問相應的表組中的租戶數(shù)據(jù)。
文檔編號G06F17/30GK101620609SQ20081012727
公開日2010年1月6日 申請日期2008年6月30日 優(yōu)先權日2008年6月30日
發(fā)明者偉 孫, 安文豪, 真 張, 王芝虎, 中 蘇, 郭常杰, 波 高 申請人:國際商業(yè)機器公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
岚皋县| 通道| 大埔县| 宝兴县| 闸北区| 贵港市| 股票| 子洲县| 阿巴嘎旗| 岳阳市| 汉源县| 那曲县| 西乡县| 平江县| 芦溪县| 黔江区| 大关县| 红桥区| 安国市| 长白| 安丘市| 沂南县| 尚义县| 西和县| 武汉市| 和顺县| 怀来县| 南昌市| 新乡市| 太原市| 团风县| 房山区| 莎车县| 永清县| 日喀则市| 蒲城县| 河东区| 华安县| 靖宇县| 临颍县| 若羌县|