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