專利名稱::一種初始化多租戶數(shù)據(jù)庫的方法和裝置的制作方法
技術領域:
:本發(fā)明涉及多租戶應用,具體涉及一種用于初始化多租戶數(shù)據(jù)庫的方法和裝置。
背景技術:
:越來越多的獨立軟件開發(fā)商(ISV)希望通過SaaS(軟件即服務)業(yè)務模型提交其服務,并希望使現(xiàn)有的遺留單租戶應用具有多租戶特征。對于這些遺留應用來說,總是存在一些用于初始化其數(shù)據(jù)庫(包括模式和數(shù)據(jù))的自動化工具(包括初始化應用、腳本等)。例如,下面是一個初始化應用的代碼片斷Createtableregion(regionldlong,regionName,varchar(50));Insertintoregionvalues(100001,‘SanFrancisco,)...(或許初始化應用將進行計算)Createtablesalesorder(soldlong,merchandiseldlong,pricelong,...)Createtablemersalesreport(mdldlong,avgpricelong)...(或許初始化應用將進行計算)insertintomersalesreportselectmerchandiseld,avg(price)fromsalesordergroupbymerchandiseld該初始化應用首先創(chuàng)建名稱為region的表,并在該表中插入值,然后創(chuàng)建名稱為salesorder的表以及名稱為mersalesreport的表,并從salesorder表中取出相關數(shù)據(jù)并經(jīng)計算后填入mersalesreport表中。用于遺留應用的初始化工具顯然無法應用于多租戶數(shù)據(jù)庫。在通常的多租戶數(shù)據(jù)庫中,存在如下三種類型的表I.應用系統(tǒng)表,其模式是在所有租戶間共享的,并存儲有由所有租戶共享的系統(tǒng)數(shù)據(jù);表模式和表數(shù)據(jù)的創(chuàng)建和修改權限都屬于應用管理員;2.租戶共享表,其模式對于各租戶來說是相同的,并存儲有各租戶的私有數(shù)據(jù),且使用一個特殊的租戶ID列來區(qū)分不同租戶的數(shù)據(jù);表模式的創(chuàng)建和修改權限屬于應用管理員,而表數(shù)據(jù)的創(chuàng)建和修改權限屬于各租戶管理員;3.租戶私有表,其模式對于租戶來說是私有的,并存儲有租戶的私有數(shù)據(jù);表模式和表數(shù)據(jù)的創(chuàng)建和修改權限屬于各租戶管理員。為了使現(xiàn)有的用于遺留應用的初始化工具能夠應用于多租戶數(shù)據(jù)庫,一種辦法是修改現(xiàn)有的初始化工具的代碼,包括將多租戶數(shù)據(jù)庫中的租戶共享表的租戶ID列納入考慮之中,例如將現(xiàn)有的初始化工具中的DML(數(shù)據(jù)修改語言)Insertintosalesreportselectavg(price)fromsalesorder修改為新的DML:Insertintosalesreportselectavg(price),tidfromsalesordergroupbytid這種辦法的缺點是需要進行大量的代碼修改,工作量很大;而且,修改是特定于初始化工具的,也就是說,對于不同的初始化應用需要分別進行不同的修改,從而進一步增加了工作量。
發(fā)明內容根據(jù)本發(fā)明的一個方面,提供了一種初始化多租戶數(shù)據(jù)庫的方法,包括針對試驗數(shù)據(jù)庫試驗執(zhí)行遺留初始化工具;捕獲所述遺留初始化工具在試驗執(zhí)行過程中發(fā)出的數(shù)據(jù)庫語句和數(shù)據(jù)庫語句的試驗執(zhí)行結果;針對多租戶數(shù)據(jù)庫執(zhí)行遺留初始化工具;截獲遺留初始化工具在執(zhí)行過程中發(fā)出的數(shù)據(jù)庫語句;根據(jù)數(shù)據(jù)庫語句的類型、數(shù)據(jù)庫語句涉及的表的類型以及數(shù)據(jù)庫語句的試驗執(zhí)行結果,模擬執(zhí)行所截獲的數(shù)據(jù)庫語句,以完成對多租戶數(shù)據(jù)庫的初始化。根據(jù)本發(fā)明的另一個方面,提供了一種初始化多租戶數(shù)據(jù)庫的裝置,包括執(zhí)行模塊,用于針對試驗數(shù)據(jù)庫試驗執(zhí)行遺留初始化工具;捕獲模塊,用于捕獲所述遺留初始化工具在試驗執(zhí)行過程中發(fā)出的數(shù)據(jù)庫語句和數(shù)據(jù)庫語句的試驗執(zhí)行結果;所述執(zhí)行模塊還針對多租戶數(shù)據(jù)庫執(zhí)行遺留初始化工具;截獲模塊,用于截獲遺留初始化工具在執(zhí)行過程中發(fā)出的數(shù)據(jù)庫語句;模擬執(zhí)行模塊,用于根據(jù)數(shù)據(jù)庫語句的類型、數(shù)據(jù)庫語句涉及的表的類型以及數(shù)據(jù)庫語句的試驗執(zhí)行結果,模擬執(zhí)行所截獲的數(shù)據(jù)庫語句,以完成對多租戶數(shù)據(jù)庫中的初始化。本發(fā)明的技術方案實現(xiàn)了通過遺留初始化工具完成多租戶數(shù)據(jù)庫的初始化,而無需修改遺留工具的代碼。并且,本發(fā)明的技術方案并不是針對特定的遺留工具的,而是通用的,可用于任何遺留工具。所附權利要求中闡述了被認為是本發(fā)明的特點的創(chuàng)造性特征。但是,通過參照附圖閱讀下面對說明性實施例的詳細說明可更好地理解發(fā)明本身以及其優(yōu)選使用模式、目標、特征以及優(yōu)點,在附圖中圖I示意性地示出了本發(fā)明的技術方案的體系結構;圖2示出了在應用上線時初始化多租戶數(shù)據(jù)庫的應用級部分的執(zhí)行過程;圖3示出了在每個租戶上線時初始化多租戶數(shù)據(jù)庫的租戶級部分的執(zhí)行過程;圖4示出了根據(jù)本發(fā)明的實施例的透明地初始化多租戶數(shù)據(jù)庫的方法;以及圖5示出了根據(jù)本發(fā)明的實施例的透明地初始化多租戶數(shù)據(jù)庫的裝置。具體實施例方式下面參照附圖來說明本發(fā)明的實施例。在下面的說明中,闡述了許多具體細節(jié)以便更全面地了解本發(fā)明。但是,對于本
技術領域:
內的技術人員明顯的是,本發(fā)明的實現(xiàn)可不具有這些具體細節(jié)中的一些。此外,應當理解的是,本發(fā)明并不限于所介紹的特定實施例。相反,可以考慮用下面的特征和要素的任意組合來實施本發(fā)明,而無論它們是否涉及不同的實施例。因此,下面的方面、特征、實施例和優(yōu)點僅作說明之用而不應被看作是所附權利要求的要素或限定,除非權利要求中明確提出?,F(xiàn)參照附圖1,其示意性地示出了本發(fā)明的技術方案的體系結構。如圖所示,該技術方案包括兩個階段準備階段以及基于模擬的運行時階段。一、準備階段步驟1.1,捕獲DDL/DML-遺留工具調度器101針對試驗數(shù)據(jù)庫104執(zhí)行遺留初始化工具102。所述試驗數(shù)據(jù)庫104是指僅僅為了捕獲遺留初始化工具102在執(zhí)行過程中發(fā)出的DDL/DML語句以及相應的執(zhí)行結果而指定的任何數(shù)據(jù)庫。如前文中所述,所述遺留初始化工具102是指用于初始化遺留應用的數(shù)據(jù)庫的現(xiàn)有自動化工具,包括初始化應用、腳本等等。-DDL/DML捕獲器103捕獲遺留初始化工具102在執(zhí)行過程中發(fā)出的所有DDL/DML語句以及相應的執(zhí)行結果。如本領域的技術人員所知的,DDL語句是指數(shù)據(jù)描述語言語句,其用于創(chuàng)建、撤銷和修改表結構,而DML語句是指數(shù)據(jù)修改語言語句,其用于在表中插入、修改或刪除數(shù)據(jù),以及用于查看數(shù)據(jù)。如本領域的技術人員所知的,可以多種方案實現(xiàn)DDL/DML捕獲器103。例如,可通過修改諸如ODBC或JDBC等數(shù)據(jù)庫驅動程序來捕獲通過該數(shù)據(jù)庫驅動程序的DDL/DML語句,從而實現(xiàn)DDL/DML捕獲器103。-DDL/DML捕獲器103將這些DDL/DML語句和執(zhí)行結果存儲在多租戶元數(shù)據(jù)庫105中。例如,可以將所捕獲的DDL/DML語句以及執(zhí)行結果存儲在如以下表I所例示的表中。表I所捕獲的DDL/DML語句及其執(zhí)行結果ID_DDL/DML語句_執(zhí)行結果創(chuàng)建時間應用ID120087createtableRegion(regionidvoid2009-11-110562long,namechar(20))121003createtableSalesorder(soidVoid2009-11-110562long,namevarchar(20)...)該表列出了所捕獲的每一個DDL/DML語句及其執(zhí)行結果,并賦予每一個DDL/DML語句一個唯一ID,此外還可選地列出了每一個DDL/DML語句的創(chuàng)建時間,并可選地列出了應用ID。步驟I.2,維護多租戶元數(shù)據(jù)庫-通過多租戶元數(shù)據(jù)管理器106,從多租戶元數(shù)據(jù)庫105中的DDL語句中獲得所包含的表的信息。-通過多租戶元數(shù)據(jù)管理器106,標識表的類型,即標識表是應用系統(tǒng)表、租戶共享表還是租戶私有表。這可以由用戶(例如應用管理員)來人工執(zhí)行。-通過多租戶元數(shù)據(jù)管理器106,對于租戶私有表,將表名稱修改為一個全局唯一名稱。對于租戶共享表,修改其表名,以便與原來的表名相區(qū)別??梢詫⑸鲜霰淼念愋偷刃畔⒋鎯υ谌缦卤?所例示的表中表2表的類型表ID表名稱DDL語表類型租戶修改的表名稱應用ID句IDID000002Region120087應用系0562統(tǒng)000003Salesorder121003多租戶Salesorder_MMT0562_______000005Soext121034租戶TlSoext_Tl0562私有該表2列出了所捕獲的DDL語句中包含的各表的ID、名稱、所對應的DDL語句的ID、類型、租戶ID(僅適用于租戶私有表)、所對應的修改的表名稱(僅適用于租戶共享表和租戶私有表)、以及可選的應用ID。由該表2可知,表Region來自于表I中的ID為120087的DDL語句,其類型是應用系統(tǒng)表;表Salesorder來自于表I中的ID為121003的DDL語句,其類型是租戶共享表,其對應的修改的表名稱為Salesorder_MMT;表Soext來自于表I中的ID為121034的DDL語句(在表I中未示出),其類型是租戶私有表,其對應的租戶ID是Tl,其對應的修改的表名稱為Soext_Tl。-通過多租戶元數(shù)據(jù)管理器106,對來自多租戶元數(shù)據(jù)庫105的針對租戶共享表的每一個DDL語句進行修改以獲得修改的DDL語句,包括將該DDL語句中包含的租戶共享表的名稱更換為所對應的修改的表名稱,以及向該DDL中添加租戶ID列。另外,形成一個創(chuàng)建觸發(fā)器的語句,該觸發(fā)器用于在向該租戶共享表插入記錄時,將當前用戶的ID設置到該租戶共享表中該記錄的租戶ID字段。另外,形成一個創(chuàng)建視圖的語句,該視圖名稱與該租戶共享表的原來名稱相同,且用于從該租戶共享表中獲得租戶ID為當前用戶的ID的所有記錄??梢詫趤碜远嘧鈶粼獢?shù)據(jù)庫105的針對租戶共享表的每一個DDL語句的修改的DLL語句、創(chuàng)建觸發(fā)器的語句與創(chuàng)建視圖的語句存儲在如下表3所例示的表中表3修改的DDL語句修改的DLL修改的DDL語句等創(chuàng)建時間DDL語句應用ID語句等的ID__ID__552131createtable2009-11-111210030562SalesorderMMT(soidlong,namevarchar(20),tenantIDint)552132Createtrigger2009-11-111210030562TRSalesorderbeforeinsertonSalesorderMMTreferencingnewAsForEACHROWSetn.tenantlD=CURRENT_CLIENTUSERID____552133CREATEVIEW2009-11-111210030562SalesorderASSelectsoid,namefromSalesorderMMTwheretenantID=CURRENT_|CLIENT_USERID___該表3列出了修改的DDL語句(以及創(chuàng)建觸發(fā)器的語句和創(chuàng)建視圖的語句)的ID、修改的DDL語句(以及創(chuàng)建觸發(fā)器的語句和創(chuàng)建視圖的語句)、其創(chuàng)建時間、與其對應的來自多租戶元數(shù)據(jù)庫的針對租戶共享表的DDL語句的ID、以及應用ID。如該表3所示,對于表I中ID為121003的DDL語句,創(chuàng)建了ID為552131的修改的DDL;與該DDL相比,該修改的DDL將表的名稱由Salesorder修改為Salesorder_MMT,并在該Salesorder_MMT表中添加了tenantID列。另外,對于該DDL語句,還形成了ID為552132的用于創(chuàng)建觸發(fā)器的語句,該觸發(fā)器用于在向Salesorder_MMT表中插入一條記錄時,將當前用戶的ID,⑶RRENTCLIENT_USERID,設置到該表中該條記錄中tenantID字段。另外,對于該DDL語句,還形成了ID為552133的用于創(chuàng)建視圖的語句,該視圖的名稱與該租戶共享表原來的名稱Salesorder相同,并用于從SalesorderMMT表中選擇tenantID為當前用戶的ID的所有記錄,如本領域的技術人員所知的,這是通過該視圖創(chuàng)建語句中的where子句“wheretenantID=CURRENTCLIENT_USERID”實現(xiàn)的。二、基于模擬的運行時階段步驟2,在應用上線(on-boarding)時,初始化多租戶數(shù)據(jù)庫108的應用級部分。多租戶數(shù)據(jù)庫108包含應用級部分和租戶級部分。應用級部分是指多租戶數(shù)據(jù)庫108中應用管理員有權限操作的部分,包括應用系統(tǒng)表的模式和數(shù)據(jù)的創(chuàng)建和修改,以及租戶共享表的模式的創(chuàng)建和修改。而租戶級部分是指多租戶數(shù)據(jù)庫108中各租戶管理員有權限操作的部分,包括租戶共享表的數(shù)據(jù)的創(chuàng)建和修改,以及租戶私有表的模式和數(shù)據(jù)的創(chuàng)建和修改?,F(xiàn)參照圖2,其示出了該步驟2的具體執(zhí)行過程。如圖2所示,在子步驟201,遺留工具調度器101以應用管理員角色針對真實的多租戶數(shù)據(jù)庫108執(zhí)行遺留初始化工具102。在子步驟202,遺留初始化工具102在執(zhí)行過程中發(fā)出數(shù)據(jù)庫語句。如本領域的技術人員所知的,數(shù)據(jù)庫語句通常為SQL語句,且SQL語句可分為DDL語句和DML語句。在子步驟203,多租戶模擬器107截獲每個數(shù)據(jù)庫語句,并分析出其包含的表名稱。在子步驟204,多租戶模擬器107判斷所截獲的數(shù)據(jù)庫語句包含的表的類型和數(shù)據(jù)庫語句的類型。多租戶模擬器107可通過查詢在上述準備階段的步驟I.I中所形成和存儲的表的類型表(如表2所例示的),來判斷分析出的表名稱的類型是應用系統(tǒng)表、租戶共享表還是租戶私有表。多租戶模塊器可通過分析所截獲的數(shù)據(jù)庫語句來判斷該數(shù)據(jù)庫語句的類型,即判斷該數(shù)據(jù)庫語句是DDL語句還是DML語句。如果在子步驟204判斷所截獲的數(shù)據(jù)庫語句包含的表為應用系統(tǒng)表(無論該數(shù)據(jù)庫語句是DDL語句還是DML語句),則轉到子步驟205,執(zhí)行原數(shù)據(jù)庫語句。如果在子步驟204判斷所截獲的數(shù)據(jù)庫語句包含的表為租戶共享表、且該數(shù)據(jù)庫語句為DDL語句,則轉到子步驟206,從在上述準備階段的步驟I.2中所形成和存儲的修改的DDL語句表(如表3所例示的)中,獲得并執(zhí)行與該DDL語句對應的修改的DDL語句,從而在多租戶數(shù)據(jù)庫108中創(chuàng)建包含了租戶ID列、且具有修改的表名稱的租戶共享表;獲得并執(zhí)行與該DDL語句對應的用于創(chuàng)建觸發(fā)器的語句,從而在多租戶數(shù)據(jù)庫108中的該租戶共享表上創(chuàng)建一個觸發(fā)器,該觸發(fā)器用于在該租戶共享表中插入記錄時將當前用戶的ID設置到該租戶共享表的該記錄中的租戶ID字段;此外,獲得并執(zhí)行與該DDL語句對應的用于創(chuàng)建視圖的語句,從而在多租戶數(shù)據(jù)庫108中的該租戶共享表上創(chuàng)建一個視圖,該視圖具有與該租戶共享表原來的名稱相同的名稱,并用于獲得該租戶共享表中租戶ID的值為當前用戶的ID的所有記錄。由于該視圖與該租戶共享表原來的名稱相同,這樣,遺留初始化工具以及租戶客戶端發(fā)出的針對多租戶數(shù)據(jù)庫108中的該租戶共享表的查看、插入、修改和刪除等DML操作,實際上將是針對該視圖執(zhí)行的。如果在步驟205判斷所截獲的數(shù)據(jù)庫語句包含的表為租戶共享表且該數(shù)據(jù)庫語句為DML語句,或者該數(shù)據(jù)庫語句包含的表為租戶私有表(無論該數(shù)據(jù)庫語句是DDL語句還是DML語句),則轉到步驟207,不執(zhí)行該數(shù)據(jù)庫語句,并獲得模擬的執(zhí)行結果。所述模擬的執(zhí)行結果是指在上述試驗數(shù)據(jù)庫104上執(zhí)行該數(shù)據(jù)庫語句時所獲得的執(zhí)行結果,且可以從上述準備階段的步驟I.I中形成和存儲的所捕獲的DDL/DML語句及其執(zhí)行結果表(如表I所例示的)中獲得。在子步驟208,返回執(zhí)行結果。該執(zhí)行結果為在步驟205執(zhí)行原數(shù)據(jù)庫語句或在步驟206執(zhí)行修改的DDL語句所獲得的執(zhí)行結果,或者在步驟207獲得的模擬的執(zhí)行結果。然后,返回到步驟202,繼續(xù)處理遺留初始化工具102發(fā)出的其他數(shù)據(jù)庫語句,直接處理完畢遺留初始化工具102發(fā)出的所有數(shù)據(jù)庫語句。經(jīng)過該步驟2的執(zhí)行過程,將在多租戶數(shù)據(jù)庫108中創(chuàng)建由遺留初始化工具102中的各數(shù)據(jù)庫語句所定義的各應用系統(tǒng)表及其數(shù)據(jù)、以及各租戶共享表。以上描述的步驟2是在應用上線時以應用管理員的角色執(zhí)行的,其用于初始化多租戶數(shù)據(jù)庫108中的應用級部分。如果多租戶數(shù)據(jù)庫108在初始化時只包括應用級部分,而不包括租戶級部分,則僅需要執(zhí)行上述步驟I和2;如果多租戶數(shù)據(jù)庫108在初始化時除包括應用級部分外,還包括租戶級部分,則需要在執(zhí)行完上述步驟I和2之后,接著執(zhí)行下述步驟3。步驟3,在每個租戶上線時,初始化多租戶數(shù)據(jù)庫108的租戶級部分。也就是說,該步驟在每一個租戶上線時執(zhí)行,從而創(chuàng)建多租戶數(shù)據(jù)庫108中的租戶共享表中該租戶的數(shù)據(jù),以及創(chuàng)建多租戶數(shù)據(jù)庫108中該租戶的租戶私有表的模式及其數(shù)據(jù)?,F(xiàn)參照圖3,其示出了該步驟3的執(zhí)行過程。如圖3所示,在子步驟301,遺留工具調度器101以一個租戶管理員的角色針對真實的多租戶數(shù)據(jù)庫108執(zhí)行該遺留初始化工具102。在子步驟302,在其執(zhí)行過程中,該遺留初始化工具102發(fā)出數(shù)據(jù)庫語句。在子步驟303,多租戶模擬器107截獲每個數(shù)據(jù)庫語句,并分析出其包含的表名稱。在子步驟304,多租戶模擬器107判斷所截獲的數(shù)據(jù)庫語句包含的表的類型和數(shù)據(jù)庫語句的類型。多租戶模擬器107可通過查詢在上述準備階段的步驟I.2中所形成和存儲的表的類型表(如表2所例示的),來判斷分析出的表名稱的類型是應用系統(tǒng)表、租戶共享表還是租戶私有表。多租戶模塊器可通過分析所截獲的數(shù)據(jù)庫語句來判斷該數(shù)據(jù)庫語句的類型,即判斷該數(shù)據(jù)庫語句是DDL語句還是DML語句。如果在子步驟304判斷所截獲的數(shù)據(jù)庫語句包含的表的類型為租戶私有表(無論該數(shù)據(jù)庫語句是DDL語句還是DML語句),則轉到子步驟305,將該數(shù)據(jù)庫語句中租戶私有表的名稱替換為修改的全局唯一的表名稱,并執(zhí)行替換了表名稱的該數(shù)據(jù)庫語句。所述修改的全局唯一的表名稱可以從上述準備階段的步驟I.2中形成并存儲的表的類型表(如表2所例示的)中獲得。如果在子步驟304判斷所截獲的數(shù)據(jù)庫語句包含的表的類型是租戶共享表,且該數(shù)據(jù)庫語句是DML語句,則轉到子步驟306,執(zhí)行該數(shù)據(jù)庫語句。由于已在應用上線時在上述子步驟206中在多租戶數(shù)據(jù)庫108中創(chuàng)建了與租戶共享表名稱相同的視圖,因此,針對該租戶共享表的該DML語句的執(zhí)行實際是針對該視圖執(zhí)行的,而該視圖的數(shù)據(jù)則來自于該租戶共享表。如果該DML語句是用于查看租戶共享表中的數(shù)據(jù)的DML語句,由于該視圖包含了用于過濾出當前租戶的所有記錄的where子句,因此該DML語句的執(zhí)行將從租戶共享表中獲得當前租戶的所有相關記錄。如果該DML語句是用于更新租戶共享表中的數(shù)據(jù)的DML語句,同樣由于該視圖包含了用于過濾出當前租戶的所有記錄的where子句,因此,該DML語句的執(zhí)行將更新多租共享表中當前租戶的相關記錄。如果該DML語句是用于刪除租戶共享表中的數(shù)據(jù)的DML語句,同樣由于該視圖包含了用于過濾出當前租戶的所有記錄的where子句,因此,該DML語句的執(zhí)行將刪除多租共享表中當前租戶的相關記錄。如果該DML語句是用于向租戶共享表中插入記錄的DML語句,由于已在應用上線時在上述子步驟206中在該租戶共享表上創(chuàng)建了所述觸發(fā)器,這樣,該DML語句的執(zhí)行將通過該視圖向該租戶共享表插入該記錄,并引起該觸發(fā)器的執(zhí)行,而該觸發(fā)器的執(zhí)行將在該租戶共享表的該記錄的租戶ID字段設置當前用戶的ID。如果在子步驟304判斷所截獲的數(shù)據(jù)庫語句包含的表的類型為應用系統(tǒng)表(無論該數(shù)據(jù)庫語句是DDL語句還是DML語句),或者該數(shù)據(jù)庫語句包含的表的類型是租戶共享表且該數(shù)據(jù)庫語句是DDL語句,則轉到子步驟307,不執(zhí)行該數(shù)據(jù)庫語句,并獲得模擬的執(zhí)行結果。所述模擬的執(zhí)行結果是指在上述試驗數(shù)據(jù)庫104上執(zhí)行該數(shù)據(jù)庫語句時所獲得的執(zhí)行結果,且可以從上述準備階段的步驟I.I中形成和存儲的所捕獲的DDL/DML語句及執(zhí)行結果表(如表I所例示的)中獲得。在子步驟308,返回執(zhí)行結果。該執(zhí)行結果為在子步驟305執(zhí)行修改表名稱的數(shù)據(jù)庫語句所獲得的執(zhí)行結果,或者在步驟306執(zhí)行原數(shù)據(jù)庫語句所獲得的執(zhí)行結果,或者在步驟307獲得的模擬的執(zhí)行結果。然后,返回到步驟302,繼續(xù)處理遺留初始化工具102發(fā)出的其他數(shù)據(jù)庫語句,直到處理完畢遺留初始化工具102發(fā)出的所有數(shù)據(jù)庫語句。經(jīng)過由各租戶管理員執(zhí)行該步驟3,將在多租戶數(shù)據(jù)庫108中創(chuàng)建由遺留初始化工具102中的數(shù)據(jù)庫語句所定義的各租戶共享表的數(shù)據(jù)、以及各租戶私有表的模式及其數(shù)據(jù)。本發(fā)明的技術方案通過截獲遺留工具發(fā)送的數(shù)據(jù)庫語句并以應用管理員的角色和租戶管理員的角色分別針對多租戶數(shù)據(jù)庫108模擬執(zhí)行所截獲的數(shù)據(jù)庫語句,其中所述模擬執(zhí)行基于數(shù)據(jù)庫語句的類型、數(shù)據(jù)庫語句涉及的表的類型以及數(shù)據(jù)庫語句的試驗執(zhí)行結果,實現(xiàn)了多租戶數(shù)據(jù)庫108的初始化,而無需修改遺留工具的代碼。并且,本發(fā)明的技術方案并不是針對特定的遺留工具的,而是通用的,可用于任何遺留工具。以上參照附圖描述了本發(fā)明的技術方案的體系結構,應指出的是,以上描述僅為示例,而不是對本發(fā)明的限制。為了使本領域的技術人員更好地理解和實施本發(fā)明,在以上描述中包含了大量的細節(jié),但其中的很多細節(jié)并非是必不可少的。本領域的技術人員通過以上對本發(fā)明的技術方案的詳細描述可知,本發(fā)明提供了一種透明地初始化多租戶數(shù)據(jù)庫的方法以及一種透明地初始化多租戶數(shù)據(jù)庫的裝置。下面分別參照附圖描述根據(jù)本發(fā)明的實施例的透明地初始化多租戶數(shù)據(jù)庫的方法和裝置。為簡明起見,在以下描述中省略了與以上描述重復的部分細節(jié),因此可參照以上描述獲得對根據(jù)本發(fā)明的實施例的透明地初始化多租戶數(shù)據(jù)庫的方法和裝置的更詳細的了解。下面參照附圖4,其示出了根據(jù)本發(fā)明的實施例的一種透明地初始化多租戶數(shù)據(jù)庫的方法。如圖所示,該方法包括以下步驟在步驟401,針對試驗數(shù)據(jù)庫試驗執(zhí)行遺留初始化工具。在步驟402,捕獲所述遺留初始化工具在試驗執(zhí)行過程中發(fā)出的數(shù)據(jù)庫語句和數(shù)據(jù)庫語句的試驗執(zhí)行結果。在步驟403,針對多租戶數(shù)據(jù)庫執(zhí)行遺留初始化工具,在一實施例中可以應用管理員的角色進行。在步驟404,截獲遺留初始化工具在執(zhí)行過程中發(fā)出的數(shù)據(jù)庫語句。在步驟405,根據(jù)數(shù)據(jù)庫語句的類型、數(shù)據(jù)庫語句涉及的表的類型以及數(shù)據(jù)庫語句的試驗執(zhí)行結果,模擬執(zhí)行所截獲的數(shù)據(jù)庫語句,以完成對多租戶數(shù)據(jù)庫的初始化,在一實施例中,是對多租戶數(shù)據(jù)庫中應用級部分的初始化。如本領域的技術人員所知的,多租戶數(shù)據(jù)庫中應用級部分的初始化包括多租戶數(shù)據(jù)庫中的應用系統(tǒng)表的模式和數(shù)據(jù)的創(chuàng)建,以及租戶共享表的模式的創(chuàng)建。根據(jù)本發(fā)明的實施例,所述數(shù)據(jù)庫語句的類型包括DDL語句和DML語句,所述表的類型包括應用系統(tǒng)表、租戶共享表和租戶私有表。根據(jù)本發(fā)明的實施例,所述步驟405包括以下子步驟如果所截獲的數(shù)據(jù)庫語句是針對應用系統(tǒng)表的數(shù)據(jù)庫語句,則針對多租戶數(shù)據(jù)庫執(zhí)行該數(shù)據(jù)庫語句;如果所截獲的數(shù)據(jù)庫語句是針對租戶共享表的DDL語句,則獲得并執(zhí)行通過向租戶共享表添加租戶ID列修改的DDL語句;以及如果所截獲的數(shù)據(jù)庫語句是針對租戶共享表的DML語句或針對租戶私有表的數(shù)據(jù)庫語句,則不執(zhí)行該數(shù)據(jù)庫語句,并將該數(shù)據(jù)庫語句的試驗執(zhí)行結果返回給遺留初始化工具。根據(jù)本發(fā)明的進一步的實施例,所述步驟405還包括響應于所截獲的數(shù)據(jù)庫語句是針對租戶共享表的DDL語句,則獲得并執(zhí)行用于創(chuàng)建觸發(fā)器的語句,該觸發(fā)器用于在該租戶共享表中插入記錄時將當前用戶的ID設置到該租戶共享表的該記錄中的租戶ID字段。根據(jù)本發(fā)明的進一步的實施例,所述修改的DLL語句還包括修改的租戶共享表名稱,且所述步驟405還包括響應于所截獲的數(shù)據(jù)庫語句是針對租戶共享表的DDL語句,則獲得并執(zhí)行用于創(chuàng)建視圖的語句,該視圖具有與該租戶共享表的名稱相同的名稱,并用于獲得該租戶共享表中租戶ID的值為當前用戶的ID的所有記錄。根據(jù)本發(fā)明的實施例,該方法還包括以下步驟提取在遺留初始化工具的試驗執(zhí)行過程中捕獲的數(shù)據(jù)庫語句中包含的表;確定所述表的類型;以及存儲所述表及其類型。根據(jù)本發(fā)明進一步的實施例,該方法還包括以下進一步的步驟響應于所提取的表是租戶共享表,則修改其名稱,并與該表相關聯(lián)地存儲修改的名稱;以及如果所提取的表租戶私有表,則將其名稱修改為全局唯一名稱,并與該表相關聯(lián)地存儲修改后的名稱。根據(jù)本發(fā)明的進一步的實施例,該方法還包括以下進一步的步驟響應于所捕獲的數(shù)據(jù)庫語句是針對多租戶共享表的DDL語句,則通過向該數(shù)據(jù)庫語句包含的多租戶共享表添加租戶ID列修改該數(shù)據(jù)庫語句;以及與所捕獲的數(shù)據(jù)庫語句相關聯(lián)地存儲修改的數(shù)據(jù)庫語句。根據(jù)本發(fā)明的進一步的實施例,該方法還包括以下進一步的步驟響應于所捕獲的數(shù)據(jù)庫語句是針對多租戶共享表的DDL語句,則形成用于創(chuàng)建觸發(fā)器的語句,該觸發(fā)器用于在該租戶共享表中插入記錄時將當前用戶的ID設置到該租戶共享表的該記錄中的租戶ID字段;以及與所捕獲的數(shù)據(jù)庫語句相關聯(lián)地存儲該用于創(chuàng)建觸發(fā)器的語句。根據(jù)本發(fā)明的進一步的實施例,該方法還包括以下進一步的步驟響應于所捕獲的數(shù)據(jù)庫語句是針對多租戶共享表的DDL語句,則形成用于創(chuàng)建視圖的語句,該視圖具有與該租戶共享表的名稱相同的名稱,并用于獲得該租戶共享表中租戶ID的值為當前用戶的ID的所有記錄;以及與所捕獲的數(shù)據(jù)庫語句相關聯(lián)地存儲該用于創(chuàng)建視圖的語句。根據(jù)本發(fā)明的實施例,該方法還包括以租戶管理員的角色針對多租戶數(shù)據(jù)庫執(zhí)行遺留初始化工具;截獲遺留初始化工具在執(zhí)行過程中發(fā)出的數(shù)據(jù)庫語句;根據(jù)數(shù)據(jù)庫語句的類型、數(shù)據(jù)庫語句涉及的表的類型以及數(shù)據(jù)庫語句的試驗執(zhí)行結果,模擬執(zhí)行所截獲的數(shù)據(jù)庫語句,以完成對多租戶數(shù)據(jù)庫中租戶級部分的初始化。如本領域的技術人員所知的,多租戶數(shù)據(jù)庫中租戶級部分的初始化包括多租戶數(shù)據(jù)庫中的租戶共享表的數(shù)據(jù)的創(chuàng)建,以及租戶私有表的模式和數(shù)據(jù)的創(chuàng)建。根據(jù)本發(fā)明的進一步的實施例,所述模擬執(zhí)行所截獲的數(shù)據(jù)庫語句以完成對多租戶數(shù)據(jù)庫中租戶級部分的初始化的步驟包括如下子步驟如果所截獲的數(shù)據(jù)庫語句是針對租戶私有表的數(shù)據(jù)庫語句,則獲得租戶私有表的名稱被修改為全局唯一名稱的對應的數(shù)據(jù)庫語句,并針對多租戶數(shù)據(jù)庫執(zhí)行該對應的數(shù)據(jù)庫語句;如果所截獲的數(shù)據(jù)庫語句是針對租戶共享表的DML語句,則執(zhí)行該DML語句;以及如果所截獲的數(shù)據(jù)庫語句是針對應用系統(tǒng)表的數(shù)據(jù)庫語句或針對租戶共享表的DDL語句,則不執(zhí)行該數(shù)據(jù)庫語句,并將該數(shù)據(jù)庫語句的試驗執(zhí)行結果返回給遺留初始化工具。以上參照附圖描述了根據(jù)本發(fā)明的實施例的透明地初始多租戶數(shù)據(jù)庫的方法,應指出的是,以上描述僅為示例,而不是對本發(fā)明的限制。在本發(fā)明的其他實施例中,該方法可具有更多、更少或不同的步驟,且各步驟之間的順序和包含等關系可以與所描述和圖示的不同?,F(xiàn)參照圖5,其示出了根據(jù)本發(fā)明的實施例的透明地初始化多租戶數(shù)據(jù)庫的裝置。如圖所示,該裝置包括執(zhí)行模塊501,用于針對試驗數(shù)據(jù)庫試驗執(zhí)行遺留初始化工具;捕獲模塊502,用于捕獲遺留初始化工具在試驗執(zhí)行過程中發(fā)出的數(shù)據(jù)庫語句和數(shù)據(jù)庫語句的試驗執(zhí)行結果;其中所述執(zhí)行模塊501還針對多租戶數(shù)據(jù)庫執(zhí)行遺留初始化工具,在一個實施例中是以應用管理員的角色進行的;截獲模塊503,用于截獲遺留初始化工具在執(zhí)行過程中發(fā)出的數(shù)據(jù)庫語句;模擬執(zhí)行模塊504,用于根據(jù)數(shù)據(jù)庫語句的類型、數(shù)據(jù)庫語句涉及的表的類型以及數(shù)據(jù)庫語句的試驗執(zhí)行結果,模擬執(zhí)行所截獲的數(shù)據(jù)庫語句,以完成對多租戶數(shù)據(jù)庫的初始化,在一個實施例中,是完成對多租戶數(shù)據(jù)庫中應用級部分的初始化。所述執(zhí)行模塊501可以由圖I中所示的遺留工具調度器101實現(xiàn)。所述捕獲模塊502可以由圖I中所示的DDL/DML捕獲器103實現(xiàn)。所述截獲模塊503和所述模擬執(zhí)行模塊504可以由圖I中所示的多租戶模擬器107實現(xiàn)?;蛘撸鼋孬@模塊503也可以與所述捕獲模塊502是同一個模塊。根據(jù)本發(fā)明的實施例,所述數(shù)據(jù)庫語句的類型包括DDL語句和DML語句,所述表的類型包括應用系統(tǒng)表、租戶共享表和租戶私有表。根據(jù)本發(fā)明的實施例,所述模擬執(zhí)行模塊504包括用于如果所截獲的數(shù)據(jù)庫語句是針對應用系統(tǒng)表的數(shù)據(jù)庫語句,則針對多租戶數(shù)據(jù)庫執(zhí)行該數(shù)據(jù)庫語句的裝置;用于如果所截獲的數(shù)據(jù)庫語句是針對租戶共享表的DDL語句,則獲得并執(zhí)行通過向租戶共享表添加租戶ID列修改的DDL語句的裝置;以及用于如果所截獲的數(shù)據(jù)庫語句是針對租戶共享表的DML語句或針對租戶私有表的數(shù)據(jù)庫語句,則不執(zhí)行該數(shù)據(jù)庫語句,并將該數(shù)據(jù)庫語句的試驗執(zhí)行結果返回給遺留初始化工具的裝置。根據(jù)本發(fā)明的進一步的實施例,所述模擬執(zhí)行模塊504還包括用于如果所截獲的數(shù)據(jù)庫語句是針對租戶共享表的DDL語句,則獲得并執(zhí)行用于創(chuàng)建觸發(fā)器的語句的裝置,該觸發(fā)器用于在該租戶共享表中插入記錄時將當前用戶的ID設置到該租戶共享表的該記錄中的租戶ID字段。根據(jù)本發(fā)明的進一步的實施例,所述修改的DLL語句還包括修改的租戶共享表名稱,且所述模擬執(zhí)行模塊還包括用于如果所截獲的數(shù)據(jù)庫語句是針對租戶共享表的DDL語句,則獲得并執(zhí)行用于創(chuàng)建視圖的語句的裝置,該視圖具有與該租戶共享表的名稱相同的名稱,并用于獲得該租戶共享表中租戶ID的值為當前用戶的ID的所有記錄。根據(jù)本發(fā)明的實施例,該透明地初始化多租戶數(shù)據(jù)庫的裝置還包括提取模塊,用于提取在遺留初始化工具的試驗執(zhí)行過程中捕獲的數(shù)據(jù)庫語句中包含的表;確定模塊,用于確定所述表的類型;以及存儲模塊,用于存儲所述表及其類型。所述提取模塊和確定模塊可以由圖I中所示的DDL/DML捕獲器103實現(xiàn)。所述存儲模塊可以由圖I中所示的多租戶元數(shù)據(jù)庫105實現(xiàn)。根據(jù)本發(fā)明的實施例,該透明地初始化多租戶數(shù)據(jù)庫的裝置還包括修改模塊,用于如果所提取的表是租戶共享表,則修改其名稱,且所述存儲模塊還用于與表相關聯(lián)地存儲修改的名稱;以及所述修改模塊還用于如果所提取的表為租戶私有表,則將其名稱修改為全局唯一名稱,且所述存儲模塊還用于與表相關聯(lián)地存儲所述全局唯一名稱。所述修改模塊可以由圖I中所示的多租戶元數(shù)據(jù)管理器106實現(xiàn)。根據(jù)本發(fā)明的進一步的實施例,所述修改模塊還用于如果所捕獲的數(shù)據(jù)庫語句是針對多租戶共享表的DDL語句,則通過向該數(shù)據(jù)庫語句包含的多租戶共享表添加租戶ID列修改該數(shù)據(jù)庫語句;以及所述存儲模塊還用于與所捕獲的數(shù)據(jù)庫語句相關聯(lián)地存儲修改的數(shù)據(jù)庫語句。根據(jù)本發(fā)明的進一步的實施例,所述修改模塊還用于如果所捕獲的數(shù)據(jù)庫語句是針對多租戶共享表的DDL語句,則形成用于創(chuàng)建觸發(fā)器的語句,該觸發(fā)器用于在該租戶共享表中插入記錄時將當前用戶的ID設置到該租戶共享表的該記錄中的租戶ID字段;以及所述存儲模塊還用于與所捕獲的數(shù)據(jù)庫語句相關聯(lián)地存儲該用于創(chuàng)建觸發(fā)器的語句。根據(jù)本發(fā)明的進一步的實施例,所述修改模塊還用于如果所捕獲的數(shù)據(jù)庫語句是針對多租戶共享表的DDL語句,則形成用于創(chuàng)建視圖的語句,該視圖具有與該租戶共享表的名稱相同的名稱,并用于獲得該租戶共享表中租戶ID的值為當前用戶的ID的所有記錄;以及所述存儲模塊還用于與所捕獲的數(shù)據(jù)庫語句相關聯(lián)地存儲該用于創(chuàng)建視圖的語句。根據(jù)本發(fā)明的實施例,所述執(zhí)行模塊501還用于以租戶管理員的角色針對多租戶數(shù)據(jù)庫執(zhí)行遺留初始化工具;所述截獲模塊503還用于截獲遺留初始化工具在執(zhí)行過程中發(fā)出的數(shù)據(jù)庫語句;所述模擬執(zhí)行模塊504還用于根據(jù)數(shù)據(jù)庫語句的類型、數(shù)據(jù)庫語句涉及的表的類型以及數(shù)據(jù)庫語句的試驗執(zhí)行結果,模擬執(zhí)行所截獲的數(shù)據(jù)庫語句,以完成對多租戶數(shù)據(jù)庫中租戶級部分的初始化。根據(jù)本發(fā)明的進一步的實施例,所述模擬執(zhí)行模塊504包括用于如果所截獲的數(shù)據(jù)庫語句是針對租戶私有表的數(shù)據(jù)庫語句,則獲得租戶私有表的名稱被修改為全局唯一名稱的數(shù)據(jù)庫語句,并針對多租戶數(shù)據(jù)庫執(zhí)行該數(shù)據(jù)庫語句的裝置;用于如果所截獲的數(shù)據(jù)庫語句是針對租戶共享表的DML語句,則執(zhí)行該DML語句的裝置;以及用于如果所截獲的數(shù)據(jù)庫語句是針對應用系統(tǒng)表的數(shù)據(jù)庫語句或針對租戶共享表的DDL語句,則不執(zhí)行該數(shù)據(jù)庫語句,并將該數(shù)據(jù)庫語句的試驗執(zhí)行結果返回給遺留初始化工具的裝置。以上參照附圖描述了根據(jù)本發(fā)明的實施例的透明地初始化多租戶數(shù)據(jù)庫的裝置。應指出的是,以上描述僅為示例,而不是對本發(fā)明的限制。在本發(fā)明的其他實施例中,該方法可具有更多、更少或不同的模塊,且各模塊之間的連接、包含、功能等關系可以與所描述和圖不的不同。本發(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í)行所述方法。盡管已參照優(yōu)選實施例具體示出和說明了本發(fā)明,但是本領域內的那些技術人員應理解,可在形式和細節(jié)上對其進行各種改變而不會背離本發(fā)明的精神和范圍。權利要求1.一種初始化多租戶數(shù)據(jù)庫的方法,包括針對試驗數(shù)據(jù)庫試驗執(zhí)行遺留初始化工具;捕獲所述遺留初始化工具在試驗執(zhí)行過程中發(fā)出的數(shù)據(jù)庫語句和數(shù)據(jù)庫語句的試驗執(zhí)行結果;針對多租戶數(shù)據(jù)庫執(zhí)行遺留初始化工具;截獲遺留初始化工具在執(zhí)行過程中發(fā)出的數(shù)據(jù)庫語句;根據(jù)數(shù)據(jù)庫語句的類型、數(shù)據(jù)庫語句涉及的表的類型以及數(shù)據(jù)庫語句的試驗執(zhí)行結果,模擬執(zhí)行所截獲的數(shù)據(jù)庫語句,以完成對多租戶數(shù)據(jù)庫的初始化。2.根據(jù)權利要求I的方法,其中,所述針對多租戶數(shù)據(jù)庫執(zhí)行遺留初始化工具是以應用管理員的角色進行的;所述模擬執(zhí)行所截獲的數(shù)據(jù)庫語句,是用以完成對多租戶數(shù)據(jù)庫中應用級部分的初始化。3.根據(jù)權利要求I或2中任何一個的方法,其中,所述數(shù)據(jù)庫語句的類型包括DDL語句和DML語句,所述表的類型包括應用系統(tǒng)表、租戶共享表和租戶私有表。4.根據(jù)權利要求3的方法,其中,所述模擬執(zhí)行所截獲的數(shù)據(jù)庫語句,以完成對多租戶數(shù)據(jù)庫中應用級部分的初始化包括響應于所截獲的數(shù)據(jù)庫語句是針對應用系統(tǒng)表的數(shù)據(jù)庫語句,針對多租戶數(shù)據(jù)庫執(zhí)行該數(shù)據(jù)庫語句;響應于所截獲的數(shù)據(jù)庫語句是針對租戶共享表的DDL語句,獲得并執(zhí)行通過向租戶共享表添加租戶ID列修改的DDL語句;以及響應于所截獲的數(shù)據(jù)庫語句是針對租戶共享表的DML語句或針對租戶私有表的數(shù)據(jù)庫語句,不執(zhí)行該數(shù)據(jù)庫語句,并將該數(shù)據(jù)庫語句的試驗執(zhí)行結果返回給遺留初始化工具。5.根據(jù)權利要求4的方法,其中,所述模擬執(zhí)行所截獲的數(shù)據(jù)庫語句,以完成對多租戶數(shù)據(jù)庫中應用級部分的初始化還包括響應于所截獲的數(shù)據(jù)庫語句是針對租戶共享表的DDL語句,獲得并執(zhí)行用于創(chuàng)建觸發(fā)器的語句,該觸發(fā)器用于在該租戶共享表中插入記錄時將當前用戶的ID設置到該租戶共享表的該記錄中的租戶ID字段。6.根據(jù)權利要求4的方法,其中,所述修改的DLL語句還包括修改的租戶共享表名稱;所述模擬執(zhí)行所截獲的數(shù)據(jù)庫語句,以完成對多租戶數(shù)據(jù)庫中應用級部分的初始化還包括響應于所截獲的數(shù)據(jù)庫語句是針對租戶共享表的DDL語句,獲得并執(zhí)行用于創(chuàng)建視圖的語句,該視圖具有與該租戶共享表的名稱相同的名稱,并用于獲得該租戶共享表中租戶ID的值為當前用戶的ID的所有記錄。7.根據(jù)權利要求I到6中任何一個的方法,還包括提取在遺留初始化工具的試驗執(zhí)行過程中捕獲的數(shù)據(jù)庫語句中包含的表;確定所述表的類型;以及存儲所述表及其類型。8.根據(jù)權利要求7的方法,還包括響應于所提取的表是租戶共享表,修改其名稱,并與所述租戶共享表相關聯(lián)地存儲修改的名稱;以及響應于所提取的表租戶私有表,將其名稱修改為全局唯一名稱,并與所述租戶私有表相關聯(lián)地存儲修改后的名稱。9.根據(jù)權利要求7的方法,還包括響應于所捕獲的數(shù)據(jù)庫語句是針對多租戶共享表的DDL語句,通過向該數(shù)據(jù)庫語句包含的多租戶共享表添加租戶ID列修改該數(shù)據(jù)庫語句;以及與所捕獲的數(shù)據(jù)庫語句相關聯(lián)地存儲修改的數(shù)據(jù)庫語句。10.根據(jù)權利要求1-6中任何一個的方法,還包括以租戶管理員的角色針對多租戶數(shù)據(jù)庫執(zhí)行遺留初始化工具;截獲遺留初始化工具在執(zhí)行過程中發(fā)出的數(shù)據(jù)庫語句;根據(jù)數(shù)據(jù)庫語句的類型、數(shù)據(jù)庫語句涉及的表的類型以及數(shù)據(jù)庫語句的試驗執(zhí)行結果,模擬執(zhí)行所截獲的數(shù)據(jù)庫語句,以完成對多租戶數(shù)據(jù)庫中租戶級部分的初始化。11.根據(jù)權利要求10的方法,其中,所述模擬執(zhí)行所截獲的數(shù)據(jù)庫語句,以完成對多租戶數(shù)據(jù)庫中租戶級部分的初始化包括響應于所截獲的數(shù)據(jù)庫語句是針對租戶私有表的數(shù)據(jù)庫語句,獲得租戶私有表的名稱被修改為全局唯一名稱的數(shù)據(jù)庫語句,并針對多租戶數(shù)據(jù)庫執(zhí)行該數(shù)據(jù)庫語句;響應于所截獲的數(shù)據(jù)庫語句是針對租戶共享表的DML語句,執(zhí)行該DML語句;以及響應于所截獲的數(shù)據(jù)庫語句是針對應用系統(tǒng)表的數(shù)據(jù)庫語句或針對租戶共享表的DDL語句,不執(zhí)行該數(shù)據(jù)庫語句,并將該數(shù)據(jù)庫語句的試驗執(zhí)行結果返回給遺留初始化工具。12.—種初始化多租戶數(shù)據(jù)庫的裝置,包括執(zhí)行模塊,被配置為針對試驗數(shù)據(jù)庫試驗執(zhí)行遺留初始化工具;捕獲模塊,被配置為捕獲所述遺留初始化工具在試驗執(zhí)行過程中發(fā)出的數(shù)據(jù)庫語句和數(shù)據(jù)庫語句的試驗執(zhí)行結果;所述執(zhí)行模塊針對多租戶數(shù)據(jù)庫執(zhí)行遺留初始化工具;截獲模塊,被配置為截獲遺留初始化工具在執(zhí)行過程中發(fā)出的數(shù)據(jù)庫語句;模擬執(zhí)行模塊,被配置為根據(jù)數(shù)據(jù)庫語句的類型、數(shù)據(jù)庫語句涉及的表的類型以及數(shù)據(jù)庫語句的試驗執(zhí)行結果,模擬執(zhí)行所截獲的數(shù)據(jù)庫語句,以完成對多租戶數(shù)據(jù)庫中應用級部分的初始化。13.根據(jù)權利要求12的裝置,其中,所述執(zhí)行模塊是以應用管理員的角色針對多租戶數(shù)據(jù)庫執(zhí)行遺留初始化工具;所述模擬執(zhí)行模塊是完成對多租戶數(shù)據(jù)庫中應用級部分的初始化。14.根據(jù)權利要求12或13任何一個的裝置,其中,所述數(shù)據(jù)庫語句的類型包括DDL語句和DML語句,所述表的類型包括應用系統(tǒng)表、租戶共享表和租戶私有表。15.根據(jù)權利要求14的裝置,其中,所述模擬執(zhí)行模塊包括被配置為響應所截獲的數(shù)據(jù)庫語句是針對應用系統(tǒng)表的數(shù)據(jù)庫語句,針對多租戶數(shù)據(jù)庫執(zhí)行該數(shù)據(jù)庫語句的裝置;被配置為響應所截獲的數(shù)據(jù)庫語句是針對租戶共享表的DDL語句,獲得并執(zhí)行通過向租戶共享表添加租戶ID列修改的DDL語句的裝置;以及被配置為響應所截獲的數(shù)據(jù)庫語句是針對租戶共享表的DML語句或針對租戶私有表的數(shù)據(jù)庫語句,不執(zhí)行該數(shù)據(jù)庫語句,并將該數(shù)據(jù)庫語句的試驗執(zhí)行結果返回給遺留初始化工具的裝置。16.根據(jù)權利要求15的裝置,其中,所述模擬執(zhí)行模塊還包括被配置為響應所截獲的數(shù)據(jù)庫語句是針對租戶共享表的DDL語句,獲得并執(zhí)行用于創(chuàng)建觸發(fā)器的語句的裝置,該觸發(fā)器用于在該租戶共享表中插入記錄時將當前用戶的ID設置到該租戶共享表的該記錄中的租戶ID字段。17.根據(jù)權利要求15的裝置,其中,所述修改的DLL語句還包括修改的租戶共享表名稱,且所述模擬執(zhí)行模塊還包括被配置為響應所截獲的數(shù)據(jù)庫語句是針對租戶共享表的DDL語句,獲得并執(zhí)行用于創(chuàng)建視圖的語句的裝置,該視圖具有與該租戶共享表的名稱相同的名稱,并用于獲得該租戶共享表中租戶ID的值為當前用戶的ID的所有記錄。18.根據(jù)權利要求12-17中任何一個的裝置,還包括提取模塊,被配置為用于提取在遺留初始化工具的試驗執(zhí)行過程中捕獲的數(shù)據(jù)庫語句中包含的表;確定模塊,被配置為用于確定所述表的類型;以及存儲模塊,被配置為用于存儲所述表及其類型。19.根據(jù)權利要求18的裝置,還包括修改模塊,被配置為響應所提取的表是租戶共享表,修改其名稱;所述存儲模塊還用于與所述租戶共享表相關聯(lián)地存儲修改的名稱;以及所述修改模塊還被配置為如果所提取的表為租戶私有表,則將其名稱修改為全局唯一名稱,且所述存儲模塊還用于與所述租戶私有表相關聯(lián)地存儲為所述全局唯一名稱。20.根據(jù)權利要求18的裝置,其中,所述修改模塊還被配置為如果所捕獲的數(shù)據(jù)庫語句是針對多租戶共享表的DDL語句,則通過向該數(shù)據(jù)庫語句包含的多租戶共享表添加租戶ID列修改該數(shù)據(jù)庫語句;以及所述存儲模塊還被配置為與所捕獲的數(shù)據(jù)庫語句相關聯(lián)地存儲修改的數(shù)據(jù)庫語句。21.根據(jù)權利要求12-17中任何一個的裝置,其中,所述執(zhí)行模塊還被配置為以租戶管理員的角色針對多租戶數(shù)據(jù)庫執(zhí)行遺留初始化工亙..,N9所述截獲模塊還被配置為截獲遺留初始化工具在執(zhí)行過程中發(fā)出的數(shù)據(jù)庫語句;所述模擬執(zhí)行模塊還被配置為根據(jù)數(shù)據(jù)庫語句的類型、數(shù)據(jù)庫語句涉及的表的類型以及數(shù)據(jù)庫語句的試驗執(zhí)行結果,模擬執(zhí)行所截獲的數(shù)據(jù)庫語句,以完成對多租戶數(shù)據(jù)庫中租戶級部分的初始化。22.根據(jù)權利要求21的裝置,其中,所述模擬執(zhí)行模塊包括被配置為響應所截獲的數(shù)據(jù)庫語句是針對租戶私有表的數(shù)據(jù)庫語句,則獲得租戶私有表的名稱被修改為全局唯一名稱的數(shù)據(jù)庫語句,并針對多租戶數(shù)據(jù)庫執(zhí)行該數(shù)據(jù)庫語句的裝置;被配置為響應所截獲的數(shù)據(jù)庫語句是針對租戶共享表的DML語句,則執(zhí)行該DML語句的裝置;以及被配置為響應所截獲的數(shù)據(jù)庫語句是針對應用系統(tǒng)表的數(shù)據(jù)庫語句或針對租戶共享表的DDL語句,則不執(zhí)行該數(shù)據(jù)庫語句,并將該數(shù)據(jù)庫語句的試驗執(zhí)行結果返回給遺留初始化工具的裝置。全文摘要本發(fā)明提出了一種初始化多租戶數(shù)據(jù)庫的方法和裝置,該方法包括針對試驗數(shù)據(jù)庫試驗執(zhí)行遺留初始化工具;捕獲遺留初始化工具在試驗執(zhí)行過程中發(fā)出的數(shù)據(jù)庫語句和數(shù)據(jù)庫語句的試驗執(zhí)行結果;針對多租戶數(shù)據(jù)庫執(zhí)行遺留初始化工具;截獲遺留初始化工具在執(zhí)行過程中發(fā)出的數(shù)據(jù)庫語句;根據(jù)數(shù)據(jù)庫語句的類型、數(shù)據(jù)庫語句涉及的表的類型以及數(shù)據(jù)庫語句的試驗執(zhí)行結果,模擬執(zhí)行所截獲的數(shù)據(jù)庫語句,以完成對多租戶數(shù)據(jù)庫的初始化。文檔編號G06F17/30GK102737020SQ20111008110公開日2012年10月17日申請日期2011年3月31日優(yōu)先權日2011年3月31日發(fā)明者張春林,王啟榮,王寧,王小鋒,王芝虎,肖振春,郭常杰,高波申請人:國際商業(yè)機器公司