国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      多租戶環(huán)境下擴(kuò)展數(shù)據(jù)庫表的方法和系統(tǒng)的制作方法

      文檔序號(hào):6599759閱讀:244來源:國(guó)知局
      專利名稱:多租戶環(huán)境下擴(kuò)展數(shù)據(jù)庫表的方法和系統(tǒng)的制作方法
      技術(shù)領(lǐng)域
      本發(fā)明涉及數(shù)據(jù)庫技術(shù),尤其涉及在多租戶環(huán)境下對(duì)數(shù)據(jù)庫表進(jìn)行擴(kuò)展的技術(shù)。
      背景技術(shù)
      由于&iaS(Software as a Service軟件作為服務(wù)、軟件即服務(wù))的出現(xiàn),軟件行業(yè)正在經(jīng)歷一場(chǎng)深刻的變革。MaS在許多國(guó)家已經(jīng)流行并進(jìn)入了普及階段。MaS的安全技術(shù)日新月異,越來越多的企業(yè)開始認(rèn)可MaS安全性和可靠性。基于互聯(lián)網(wǎng)的特點(diǎn),SaaS 軟件有許多區(qū)別于前一代軟件的獨(dú)特性,從服務(wù)器端軟件和數(shù)據(jù)庫、數(shù)據(jù)傳輸、到客戶端瀏覽器都出現(xiàn)了許多新技術(shù)。開發(fā)MaS軟件系統(tǒng)時(shí),均建立在多重租賃(Multi-Tenant),又稱“多租戶”的基礎(chǔ)上,也就是一套軟件和數(shù)據(jù)庫平臺(tái),經(jīng)過軟件和數(shù)據(jù)庫的隔離及保密等技術(shù),多個(gè)企業(yè)(或者企業(yè)內(nèi)部多個(gè)租戶)同時(shí)使用。雖然非多重租賃的MaS產(chǎn)品不一定是“假M(fèi)aS”產(chǎn)品, 然而多重租賃大大提高了運(yùn)營(yíng)效率、穩(wěn)定性,降低運(yùn)營(yíng)商的維護(hù)和升級(jí)成本,變相地說最終消費(fèi)者得到了價(jià)格上的實(shí)惠。在MaS系統(tǒng)中,相對(duì)于應(yīng)用程序計(jì)算邏輯/層面而言,如何處理多租戶 (Multi-Tenant)對(duì)數(shù)據(jù)庫的訪問更具有挑戰(zhàn)性。在與“多租戶對(duì)數(shù)據(jù)庫的訪問”相關(guān)的問題中,如何滿足不同的租戶對(duì)于擴(kuò)展數(shù)據(jù)庫表的不同需求是一個(gè)基礎(chǔ)性的問題。舉例而言, 在某&iaS員工信息系統(tǒng)中,存在一個(gè)基礎(chǔ)信息統(tǒng)計(jì)表I,在表I中,租戶A需要對(duì)其內(nèi)部每個(gè)員工的員工代碼進(jìn)行記錄,用于標(biāo)識(shí)員工,而租戶B不需要記錄其每個(gè)員工的員工代碼, 而是通過記錄員工的家庭住址來標(biāo)識(shí)員工。這就導(dǎo)致該員工信息系統(tǒng)在設(shè)計(jì)數(shù)據(jù)庫表時(shí)會(huì)產(chǎn)生難題,因?yàn)樵谠O(shè)計(jì)該系統(tǒng)時(shí)無法充分預(yù)料到未來的租戶可能會(huì)有哪些對(duì)數(shù)據(jù)庫表的需求。目前存在一些在多租戶環(huán)境下擴(kuò)展數(shù)據(jù)庫表的技術(shù)方案。根據(jù)一種現(xiàn)有技術(shù)中的解決方案,可以在設(shè)計(jì)多租戶^aS應(yīng)用系統(tǒng)時(shí)為每個(gè)數(shù)據(jù)庫表定義好所有的允許租戶根據(jù)各自不同的需求去擴(kuò)展的數(shù)據(jù)庫表列。根據(jù)上面的例子,可以在設(shè)計(jì)該員工信息系統(tǒng)時(shí)就在表I中定義好一個(gè)可擴(kuò)展的空表列?!皢T工代碼”列和“員工家庭住址”列。這樣,租戶 A就可以選擇該空表列作為“員工代碼”列,而租戶B就可以選擇該空表列作為“員工家庭住址”列,從而根據(jù)各自的需求將該預(yù)先定義好的可擴(kuò)展的空表列定義為其所需的表列,并完成相應(yīng)的數(shù)據(jù)輸入、查詢等數(shù)據(jù)庫操作。該解決方案的顯著缺點(diǎn)是如果在設(shè)計(jì)系統(tǒng)時(shí)開發(fā)人員只提供了較少的可擴(kuò)展的空表列,那么大量租戶的對(duì)數(shù)據(jù)庫表進(jìn)行擴(kuò)展的需求可能將無法得到滿足。而如果在設(shè)計(jì)系統(tǒng)時(shí)開發(fā)人員提供了大量的可擴(kuò)展的空表列,那么又會(huì)使得數(shù)據(jù)庫表占用并且浪費(fèi)大量空間,因?yàn)橛性S多可擴(kuò)展表列可能僅僅是極個(gè)別租戶所需的。在有些情況下,上述兩個(gè)缺點(diǎn)可能同時(shí)發(fā)生既存在一些租戶的需求無法被滿足,又存在大量的可擴(kuò)展表列的使用率極低導(dǎo)致大量空間被浪費(fèi)。該解決方案的再一缺點(diǎn)是由于事先定義的可擴(kuò)展的空表列不包含數(shù)據(jù)類型等相關(guān)信息(如數(shù)字型、日期型、字符串型), 這些信息必須由租戶自行定義,因此必須通過聯(lián)合操作(JointOperation)才能對(duì)數(shù)據(jù)正確進(jìn)行解釋,這就會(huì)耗費(fèi)大量的運(yùn)算資源從而影響系統(tǒng)性能以及用戶體驗(yàn)。并且這樣的解決方案需要多租戶應(yīng)用系統(tǒng)的開發(fā)者對(duì)于該產(chǎn)生的租戶需求非常了解,會(huì)加大系統(tǒng)開發(fā)者的負(fù)擔(dān)。根據(jù)另一種現(xiàn)有技術(shù)中的解決方案,通過創(chuàng)建私有表來為每個(gè)租戶存儲(chǔ)其私有數(shù)據(jù)(需要擴(kuò)展的數(shù)據(jù)表列)。該解決方案的顯著缺點(diǎn)是其一,需要在多租戶系統(tǒng)中創(chuàng)建大量的私有表以滿足大量未知租戶的需求,并且所能創(chuàng)建的私有表的數(shù)量受到數(shù)據(jù)庫管理系統(tǒng)DBMS的限制;其二,租戶對(duì)其創(chuàng)建的私有數(shù)據(jù)(擴(kuò)展表列中的數(shù)據(jù))進(jìn)行操作時(shí),必須通過私有表和公有表之間的聯(lián)合操作(Join Operation)才能進(jìn)行,會(huì)耗費(fèi)大量的運(yùn)算資源從而影響系統(tǒng)性能以及用戶體驗(yàn)。

      發(fā)明內(nèi)容
      考慮到上述存在的問題,本發(fā)明的目的之一在于提供一種對(duì)應(yīng)用的開發(fā)者透明的擴(kuò)展數(shù)據(jù)庫表(定制化)的方法和系統(tǒng)。本發(fā)明的又一目的在于提供一種對(duì)租戶而言具有統(tǒng)一的數(shù)據(jù)模型的擴(kuò)展數(shù)據(jù)庫表(定制化)的方法和系統(tǒng)。本發(fā)明的再一目的在于提供一種無需占用大量數(shù)據(jù)庫空間并且在執(zhí)行數(shù)據(jù)庫處理操作時(shí)無需進(jìn)行聯(lián)合操作(Joint Operation)的擴(kuò)展數(shù)據(jù)庫表(定制化)的方法和系統(tǒng)。根據(jù)本發(fā)明的一個(gè)方面,提供了一種用于擴(kuò)展數(shù)據(jù)庫表的方法,包括接收租戶關(guān)于擴(kuò)展數(shù)據(jù)庫表的請(qǐng)求;以及根據(jù)所接收到的請(qǐng)求,生成對(duì)應(yīng)于所述租戶的描述文件,所述描述文件將為數(shù)據(jù)庫表定義的擴(kuò)展字段描述為至少一個(gè)擴(kuò)展列。根據(jù)本發(fā)明的一個(gè)實(shí)施方式,所述方法還包括接收所述租戶對(duì)所述數(shù)據(jù)庫表的數(shù)據(jù)處理請(qǐng)求,所述數(shù)據(jù)處理請(qǐng)求與所述數(shù)據(jù)庫表的擴(kuò)展字段相關(guān);根據(jù)所述租戶的標(biāo)識(shí)信息以及所述數(shù)據(jù)處理請(qǐng)求要處理的數(shù)據(jù)庫表,查找對(duì)應(yīng)于所述租戶的所述描述文件;根據(jù)所查找到的所述描述文件的內(nèi)容,重寫所述數(shù)據(jù)處理請(qǐng)求;以及利用重寫后的數(shù)據(jù)處理請(qǐng)求執(zhí)行數(shù)據(jù)處理。根據(jù)本發(fā)明的另一方面,提供了一種用于擴(kuò)展數(shù)據(jù)庫表的系統(tǒng),包括擴(kuò)展請(qǐng)求接收裝置,用于接收租戶關(guān)于擴(kuò)展數(shù)據(jù)庫表的請(qǐng)求;以及描述文件生成裝置,用于根據(jù)所接收到的請(qǐng)求,生成對(duì)應(yīng)于所述租戶的描述文件,所述描述文件將為數(shù)據(jù)庫表定義的擴(kuò)展字段描述為至少一個(gè)擴(kuò)展列。通過本發(fā)明的方法和系統(tǒng),可以實(shí)現(xiàn)使得擴(kuò)展數(shù)據(jù)庫表的過程無論對(duì)于多租戶系統(tǒng)的設(shè)計(jì)開發(fā)者而言還是對(duì)于租戶自身而言都是透明的技術(shù)效果。還可以實(shí)現(xiàn)向租戶提供一種統(tǒng)一的數(shù)據(jù)模型來擴(kuò)展數(shù)據(jù)庫表(定制化)的技術(shù)效果。還可以實(shí)現(xiàn)在擴(kuò)展數(shù)據(jù)庫表時(shí)無需占用并浪費(fèi)大量的數(shù)據(jù)庫空間的技術(shù)效果。


      通過對(duì)結(jié)合附圖所示出的實(shí)施方式進(jìn)行詳細(xì)說明,本發(fā)明的上述以及其他特征將更加明顯,本發(fā)明附圖中相同的標(biāo)號(hào)表示相同或相似的部件。在附圖中,圖1示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的用于擴(kuò)展數(shù)據(jù)庫表的方法的流程圖;圖2示出了根據(jù)本發(fā)明另一個(gè)實(shí)施例的用于擴(kuò)展數(shù)據(jù)庫表的方法的流程圖;圖3示出了在圖1或圖2的基礎(chǔ)上根據(jù)本發(fā)明一個(gè)實(shí)施例的用于擴(kuò)展數(shù)據(jù)庫表的方法的流程圖;圖4A至4D示出了根據(jù)本發(fā)明又一個(gè)實(shí)施例的對(duì)數(shù)據(jù)庫表進(jìn)行擴(kuò)展的實(shí)例的表結(jié)構(gòu)變化圖,其中圖4A示出了多租戶系統(tǒng)(平臺(tái))中的一個(gè)未經(jīng)擴(kuò)展的“employee”表,圖4B 示出了定義了擴(kuò)展字段后的“employee”表,也就是定義了擴(kuò)展字段后的多租戶系統(tǒng)的后端數(shù)據(jù)庫中的實(shí)際表結(jié)構(gòu),圖4C示出了租戶tenantl擴(kuò)展了其所需的“ID”列的前端(租戶端)的數(shù)據(jù)結(jié)構(gòu)展示,圖4D示出了租戶tenant2擴(kuò)展了其所需的“Home Address"列的前端(租戶端)的數(shù)據(jù)結(jié)構(gòu)展示;圖5示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的用于擴(kuò)展數(shù)據(jù)庫表的系統(tǒng)的結(jié)構(gòu)圖;圖6示出了根據(jù)本發(fā)明另一個(gè)實(shí)施例的用于擴(kuò)展數(shù)據(jù)庫表的系統(tǒng)的結(jié)構(gòu)圖。
      具體實(shí)施例方式在下文中,將參考附圖通過實(shí)施方式對(duì)本發(fā)明提供的用于確定要被物化的節(jié)點(diǎn)的方法和系統(tǒng)進(jìn)行詳細(xì)地描述。圖1示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的用于擴(kuò)展數(shù)據(jù)庫表的方法的流程圖。首先需要指出的是,在本說明書、權(quán)利要求書以及附圖的任何地方,“擴(kuò)展數(shù)據(jù)庫表”并不一定意味著從物理上或者實(shí)際上對(duì)數(shù)據(jù)庫表進(jìn)行了真正的擴(kuò)展,而可能意味著雖然沒有真正從物理上或者實(shí)際上擴(kuò)展數(shù)據(jù)庫表,但是對(duì)于多租戶系統(tǒng)中的租戶而言,產(chǎn)生了擴(kuò)展數(shù)據(jù)庫表的效果或用戶體驗(yàn)。在步驟101中,接收租戶關(guān)于擴(kuò)展數(shù)據(jù)庫表的請(qǐng)求。根據(jù)本發(fā)明的一個(gè)實(shí)施方式,租戶的擴(kuò)展數(shù)據(jù)庫表的請(qǐng)求可以是例如“ALTERTABLE employee ADD COLUMN homeaddress varchar(lOO) ”這樣的SQL語句。在多租戶系統(tǒng)中,有的租戶可能需要對(duì)原始數(shù)據(jù)庫表進(jìn)行擴(kuò)展,而有的租戶可能不需要對(duì)原始數(shù)據(jù)庫表進(jìn)行擴(kuò)展,并且有擴(kuò)展需求的租戶對(duì)于將原始數(shù)據(jù)庫表擴(kuò)展多少列、擴(kuò)展什么列這樣具體的擴(kuò)展需求也是不同的。租戶擴(kuò)展數(shù)據(jù)庫表的請(qǐng)求的表達(dá)方式可以有多種。如上面所舉的例子,租戶可以通過輸入SQL 語句中的“ALTERTABLE. . . ADD COLUMN”語句來直接表達(dá)其擴(kuò)展數(shù)據(jù)庫的請(qǐng)求,也可以通過其它任何可能的語句和模式來表達(dá)該種請(qǐng)求,只要租戶提出的請(qǐng)求包含有擴(kuò)展數(shù)據(jù)庫表的目的(雖然可能并不是唯一目的),即可認(rèn)為租戶提出了擴(kuò)展數(shù)據(jù)庫的請(qǐng)求。當(dāng)然,多租戶系統(tǒng)(平臺(tái))可以另行設(shè)置一些對(duì)擴(kuò)展數(shù)據(jù)庫的請(qǐng)求的類型或格式的限制。接下來進(jìn)行至步驟102,根據(jù)所接收到的請(qǐng)求,生成對(duì)應(yīng)于所述租戶以及所述數(shù)據(jù)庫表的描述文件,所述描述文件將為數(shù)據(jù)庫表定義的擴(kuò)展字段描述為至少一個(gè)擴(kuò)展列。下面,首先詳細(xì)介紹擴(kuò)展字段的含義和定義過程。在多租戶應(yīng)用系統(tǒng)或多租戶應(yīng)用平臺(tái)上,系統(tǒng)或平臺(tái)的開發(fā)者已經(jīng)定義了一些數(shù)據(jù)庫表,這些數(shù)據(jù)庫表中可以包括一些基礎(chǔ)性的表列(也就是無論是什么租戶來使用,都會(huì)需要的表列)。例如在員工信息管理系統(tǒng)這樣一個(gè)多租戶系統(tǒng)中,該系統(tǒng)的開發(fā)者可能定義了一個(gè)名叫“employee”的表,這個(gè)表中包含有“員工姓名”、“員工性別”等所有租戶都會(huì)使用的列。根據(jù)本發(fā)明,除了這些已經(jīng)由多租戶系統(tǒng)的開發(fā)者定義好的表列之外,再加入一個(gè)用于由各個(gè)租戶根據(jù)自身的需求來擴(kuò)展的擴(kuò)展字段,由于此時(shí)多租戶系統(tǒng)的開發(fā)者不可能清楚準(zhǔn)確地預(yù)計(jì)到租戶會(huì)需要什么樣的表列,因此這個(gè)擴(kuò)展字段不對(duì)要擴(kuò)展的表列的標(biāo)題或者信息類型作出任何限定。同時(shí)這個(gè)擴(kuò)展字段也不是通常意義上的空列,因?yàn)榭樟袑?shí)
      6際上相當(dāng)于僅僅為原始的數(shù)據(jù)庫表預(yù)留了一個(gè)數(shù)據(jù)存儲(chǔ)空間,并且空列的數(shù)目必須是事先確定的。而根據(jù)本發(fā)明,可以只定義一個(gè)擴(kuò)展字段,并且根據(jù)這一個(gè)擴(kuò)展字段可以擴(kuò)展出不限定數(shù)目的表列。根據(jù)本發(fā)明的一個(gè)實(shí)施方式,為數(shù)據(jù)庫表定義的擴(kuò)展字段是可擴(kuò)展標(biāo)記語言(XML)類型的字段,而對(duì)于該XML類型的字段,可以有多個(gè)不同的描述文件來驗(yàn)證XML 數(shù)據(jù)的有效性。根據(jù)本發(fā)明的另一個(gè)實(shí)施方式,為數(shù)據(jù)庫表定義的擴(kuò)展字段是Java腳本對(duì)象注釋(JavaScript Object Notation)(下文簡(jiǎn)稱Json)類型的字段。本領(lǐng)域技術(shù)人員應(yīng)當(dāng)了解,除了 XML和Json之外,依據(jù)數(shù)據(jù)庫類型的不同,可以定義其它各種類型的擴(kuò)展字段,均落入本發(fā)明的保護(hù)范圍。在為數(shù)據(jù)庫表定義的擴(kuò)展字段是XML類型字段的實(shí)施方式下,根據(jù)本發(fā)明的一個(gè)實(shí)施方式,在多租戶系統(tǒng)或多租戶平臺(tái)上線運(yùn)行前就在多租戶系統(tǒng)或平臺(tái)的數(shù)據(jù)庫表中定義了 XML類型的擴(kuò)展字段。根據(jù)本發(fā)明的另一個(gè)實(shí)施方式,在多租戶系統(tǒng)或多租戶平臺(tái)上線運(yùn)行前并不在數(shù)據(jù)庫表中定義XML類型的擴(kuò)展字段,而是在接收到來自租戶(tenant)的擴(kuò)展數(shù)據(jù)庫表的請(qǐng)求時(shí),先在數(shù)據(jù)庫表中定義XML類型的擴(kuò)展字段。同理,在定義Json類型的擴(kuò)展字段的情況下,也可以有上述兩種實(shí)施方式。也就是說,在圖1中的步驟101和 “為數(shù)據(jù)庫表定義擴(kuò)展字段”之間并沒有絕對(duì)的時(shí)間上的先后順序。在第一種實(shí)施方式下 (先“為數(shù)據(jù)庫表定義擴(kuò)展字段”,再執(zhí)行步驟101),在多租戶系統(tǒng)或平臺(tái)上線運(yùn)行前通過例如下面的語句為數(shù)據(jù)庫中的表增加XML擴(kuò)展字段ALTER TABLE employee ADD COLUMN X_C0LXML。其中,“employee”是表的名稱,“X_C0L XML”即表示XML類型的擴(kuò)展字段。在第二種實(shí)施方式下(先執(zhí)行步驟101,再“為數(shù)據(jù)庫表定義擴(kuò)展字段”),租戶的擴(kuò)展數(shù)據(jù)庫表的請(qǐng)求可以是例如ALTER TABLE employee ADD COLUMN homeaddress varchar (100)。其中“homeaddress”表示租戶希望在名稱為“employee”的表中增加名稱為“homeaddress” 的列,“varchaHlOO) ”表示該列具有可變長(zhǎng)度的字符類型,最多不超過100個(gè)字符。當(dāng)在步驟101中接收到例如上面的來自租戶的擴(kuò)展數(shù)據(jù)庫表的請(qǐng)求時(shí),即在“employee”表中定義一個(gè)XML類型的擴(kuò)展字段,然后再根據(jù)所接收到的租戶的擴(kuò)展數(shù)據(jù)庫表的請(qǐng)求中的具體內(nèi)容來生成將所定義的擴(kuò)展字段描述為至少一個(gè)擴(kuò)展列的描述文件,具體生成描述文件的方式將在下文詳述。本領(lǐng)域技術(shù)人員應(yīng)當(dāng)了解,也可以采用另外的實(shí)施方式,例如對(duì)于一部分的表,在多租戶系統(tǒng)或平臺(tái)上線運(yùn)行前即定義好擴(kuò)展字段,而對(duì)于另一部分的表,當(dāng)實(shí)時(shí)運(yùn)行過程中接收到來自租戶的擴(kuò)展數(shù)據(jù)庫表的請(qǐng)求時(shí)再定義擴(kuò)展字段。但是一旦某個(gè)表已經(jīng)存在了定義好的擴(kuò)展字段,那么所有的租戶在提出擴(kuò)展數(shù)據(jù)庫表的請(qǐng)求時(shí)都無需再重新定義擴(kuò)展字段,而只需要生成新的描述文件即可。也就是說,對(duì)于一個(gè)特定的表而言,擴(kuò)展字段適用于多個(gè)租戶或者所有的租戶(也就是由多個(gè)租戶共享)。本領(lǐng)域技術(shù)人員還應(yīng)當(dāng)了解,上文中給出的定義擴(kuò)展字段和來自租戶的請(qǐng)求的語句均只是為了示例性地說明技術(shù)方案,并非構(gòu)成對(duì)本發(fā)明保護(hù)范圍的任何限制,根據(jù)數(shù)據(jù)庫類型的不同,本領(lǐng)域技術(shù)人員完全可以采用其它的語句描述方式而仍然落入本發(fā)明的保護(hù)范圍。根據(jù)本發(fā)明的一個(gè)實(shí)施方式,無論是在多租戶系統(tǒng)或平臺(tái)上線運(yùn)行前就定義好擴(kuò)展字段,還是在接收到來自租戶(tenant)的擴(kuò)展數(shù)據(jù)庫表的請(qǐng)求時(shí)再定義擴(kuò)展字段,也無論租戶的數(shù)量以及每個(gè)租戶需要擴(kuò)展的數(shù)據(jù)庫表列的數(shù)量,對(duì)于一個(gè)數(shù)據(jù)庫表而言,只定義一個(gè)擴(kuò)展字段。這是因?yàn)?,XML和Json均屬于描述性的語言,可以通過描述文件的方式對(duì)一個(gè)擴(kuò)展字段進(jìn)行多種描述,從而根據(jù)不同租戶的不同需求而生成多種描述文件以實(shí)現(xiàn)對(duì)數(shù)據(jù)庫表的擴(kuò)展。還需要特別指出的是,無論是在多租戶系統(tǒng)或平臺(tái)上線運(yùn)行前就定義好擴(kuò)展字段,還是在接收到來自租戶(tenant)的擴(kuò)展數(shù)據(jù)庫表的請(qǐng)求時(shí)再定義擴(kuò)展字段,都不需要了解租戶要擴(kuò)展的數(shù)據(jù)庫表列的具體內(nèi)容(包括列標(biāo)題以及數(shù)據(jù)格式信息等均無需了解)。也就是說,對(duì)于多租戶系統(tǒng)的租戶以及多租戶系統(tǒng)的設(shè)計(jì)開發(fā)者而言,擴(kuò)展數(shù)據(jù)庫表的操作都是透明的。因?yàn)槎嘧鈶粝到y(tǒng)的設(shè)計(jì)開發(fā)者在定義擴(kuò)展字段時(shí)無需了解將來租戶需要擴(kuò)展什么樣的表列,而租戶在實(shí)際使用多租戶系統(tǒng)時(shí)如果需要擴(kuò)展表列的話也只需按照傳統(tǒng)的方式提出擴(kuò)展數(shù)據(jù)庫表的SQL語句即可而并不知曉在原始數(shù)據(jù)庫表中已經(jīng)定義了一個(gè)擴(kuò)展字段。在接收到來自租戶(tenant)的擴(kuò)展數(shù)據(jù)庫表的請(qǐng)求時(shí)再定義擴(kuò)展字段的實(shí)施方式下,并非根據(jù)租戶的擴(kuò)展數(shù)據(jù)庫表的請(qǐng)求的具體內(nèi)容來定義擴(kuò)展字段,而是只要接收到來自任意一個(gè)租戶的對(duì)于一個(gè)特定的表的擴(kuò)展請(qǐng)求,就自動(dòng)定義擴(kuò)展字段,這與該請(qǐng)求所要擴(kuò)展的表列的具體內(nèi)容無關(guān)。而且只要定義過一次擴(kuò)展字段,以后再接收到來自租戶(無論是同一租戶還是其它租戶)的擴(kuò)展數(shù)據(jù)庫表的請(qǐng)求,也無需再次定義擴(kuò)展字段, 而是直接執(zhí)行步驟102中生成描述文件的操作。接下來詳細(xì)描述步驟102中生成描述文件的過程。雖然對(duì)于一個(gè)表而言,之前定義的擴(kuò)展字段的數(shù)量可能只有一個(gè),但是每個(gè)租戶仍然可以利用這一個(gè)擴(kuò)展字段來擴(kuò)展出任意數(shù)量、任意類型的表列。之所以能夠?qū)崿F(xiàn)這樣的效果,就是因?yàn)閷?duì)于一個(gè)擴(kuò)展字段(例如XML類型的擴(kuò)展字段,XML類型的擴(kuò)展字段是描述性的擴(kuò)展字段),可以生成多個(gè)不同的描述文件,從而實(shí)現(xiàn)擴(kuò)展數(shù)據(jù)庫表的效果。根據(jù)本發(fā)明的一個(gè)實(shí)施方式,描述文件是XML結(jié)構(gòu)定義(XML khemasDefinition,以下簡(jiǎn)稱xsd)文件。根據(jù)本發(fā)明的另一個(gè)實(shí)施方式,描述文件是文檔類型定義(Document Type Definition,以下簡(jiǎn)稱dtd)文件。繼續(xù)采用上文中的例子,當(dāng)接收到租戶的擴(kuò)展數(shù)據(jù)庫表的請(qǐng)求ALTER TABLE employee ADD COLUMN homeaddress varchar(lOO)時(shí),所生成的 xsd 描述文件如下< ? xml version = “ 1.0〃 encoding = " UTF-8" ? ><xs: schema xmlns:xs = " http://www.aa.org/2001/XMLSchema"targetNamespace = " http://www.bb.com/database/tenantl"xmlns = " http://www.bb.com/database/tenantl" ><xs:element name =〃 X_C0L〃 type =" xs:string" maxOccurs =〃 1〃minOccurs = 〃 I" ><xs: attribute name = " homeaddress " type =" xs: string"use = " optional" ></xs:attribute)</xs:element)</xs: schema)可選地,如果采用dtd文件作為描述文件,則所生成的描述文件如下< ! D0CTYPE X_C0L[< ! ELEMENT X_C0L (homeaddress)>< ! ELEMENT homeaddress (#PCDATA)>]>需要指出的是,無論采用何種方式生成描述文件,所生成的描述文件都是對(duì)應(yīng)于提出擴(kuò)展數(shù)據(jù)庫請(qǐng)求的租戶,并且對(duì)應(yīng)于所述數(shù)據(jù)庫表的。因?yàn)橹挥羞@樣才能使得每個(gè)租戶都根據(jù)自己的特定需求實(shí)現(xiàn)對(duì)特定數(shù)據(jù)表所進(jìn)行的不同的擴(kuò)展,而不會(huì)使一個(gè)租戶所作的擴(kuò)展影響到另一個(gè)租戶,從而真正實(shí)現(xiàn)定制化的對(duì)數(shù)據(jù)庫表的擴(kuò)展。如果上述描述文件是針對(duì)租戶Ktenantl)所提出的擴(kuò)展數(shù)據(jù)庫表的請(qǐng)求而生成的,那么該描述文件即可以 名為 tenant 1. xsd 或者 tenant 1. dtd。也可以亥 δ ^Μ名為 employee—tenant 1. xsd以體現(xiàn)該描述文件既對(duì)應(yīng)于該租戶,又對(duì)應(yīng)于該租戶要擴(kuò)展的數(shù)據(jù)庫表。然而,本領(lǐng)域技術(shù)人員可以了解,對(duì)所生成的描述文件進(jìn)行命名并保存并非實(shí)現(xiàn)擴(kuò)展數(shù)據(jù)庫表的技術(shù)方案所必須的特征或步驟,因?yàn)榧词共粚?duì)描述文件進(jìn)行命名或者保存,只要描述文件已經(jīng)生成,就實(shí)現(xiàn)了對(duì)數(shù)據(jù)庫表的擴(kuò)展。如上面給出的例子,描述文件將已經(jīng)定義的數(shù)據(jù)庫表的擴(kuò)展字段X_C0L描述為“homeaddress”這個(gè)擴(kuò)展列。當(dāng)然,一個(gè)描述文件還可以將擴(kuò)展字段 X.C0L描述為多個(gè)擴(kuò)展列,本領(lǐng)域技術(shù)人員在參考了上面的例子之后,完全可以知曉根據(jù)租戶的具體需求來生成將擴(kuò)展字段X_C0L描述為多個(gè)擴(kuò)展列的描述文件。也就是說,描述文件將已經(jīng)定義好的數(shù)據(jù)庫表的擴(kuò)展字段描述為至少一個(gè)擴(kuò)展列。也可以將描述文件的作用理解為將租戶所要擴(kuò)展的表列的信息“填寫”或“填充”到由擴(kuò)展字段所定義的“骨架”之中?;蛘咭部梢赃@樣理解,根據(jù)租戶擴(kuò)展數(shù)據(jù)庫的請(qǐng)求而生成的描述文件是對(duì)所定義的擴(kuò)展字段進(jìn)行的一個(gè)“實(shí)例化”。當(dāng)然,這樣的理解只是為了幫助本領(lǐng)域技術(shù)人員更好地理解本發(fā)明的內(nèi)容,并不構(gòu)成任何對(duì)本發(fā)明保護(hù)范圍的限制。 還需要指出的是,根據(jù)本發(fā)明的一個(gè)實(shí)施方式,描述文件所描述的至少一個(gè)擴(kuò)展列具有樹形結(jié)構(gòu)。舉例而言,如果租戶tenantl請(qǐng)求擴(kuò)展的家庭住址(home address)列里面還要包含家庭電話(hom印hone)以及居住時(shí)間(living time),那么租戶tenantl的描述文件tenantl. xsd將被修改為< ? xml version = " 1.0〃 encoding = " UTF-8" ? ><xs: schema xmlns: xs = " http://www.aa.org/2001/XMLSchema"targetNamespace = " http://www.bb.com/database/tenantl"xmlns = " http://www.bb.com/database/tenantl" ><xs: element name =" X_C0L" type =" xs: string" maxOccurs =" 1〃minOccurs = " 1〃 ><xs: attribute name = " homeaddress " type =" xs: string"use=" optional" ><xs: attribute name =" homephone" type =" xs: string"use=" optional" ><xs: attribute name =" livingtime" type =" xs: string"use=" optional" ></xs:attribute)</xs:element)</xs: schema)由此可見,通過增加一個(gè)XML或Json類型的擴(kuò)展字段方式,我們不僅能實(shí)現(xiàn)通常
      的字段擴(kuò)展,也能實(shí)現(xiàn)樹形結(jié)構(gòu)的擴(kuò)展,甚至其他結(jié)構(gòu)模型的擴(kuò)展。 還需要指出的是,如果該租戶之前已經(jīng)提出過擴(kuò)展數(shù)據(jù)庫表的請(qǐng)求并且生成過對(duì)應(yīng)于該租戶的描述文件(舊的描述文件),然后該租戶又提出了新的擴(kuò)展數(shù)據(jù)庫表的請(qǐng)求, 那么在步驟102中仍然要針對(duì)該租戶新提出的擴(kuò)展數(shù)據(jù)庫表的請(qǐng)求生成新的對(duì)應(yīng)于該租戶的描述文件。而如果不存在舊的描述文件,則直接創(chuàng)建描述文件即可。具體的技術(shù)方案將在圖2以及下文相應(yīng)的文字部分進(jìn)行描述。通過上述內(nèi)容可以看出,利用圖1所示的方法,可以使擴(kuò)展數(shù)據(jù)庫表的過程無論對(duì)于多租戶系統(tǒng)的設(shè)計(jì)開發(fā)者而言還是對(duì)于租戶自身而言都是透明的。利用圖1所示的方法,還可以向租戶提供一種統(tǒng)一的數(shù)據(jù)模型來擴(kuò)展數(shù)據(jù)庫表(定制化)。這種統(tǒng)一的數(shù)據(jù)模型正是體現(xiàn)在多租戶系統(tǒng)后端數(shù)據(jù)庫中的統(tǒng)一擴(kuò)展字段。在后端數(shù)據(jù)庫中,數(shù)據(jù)庫表被定義了統(tǒng)一的單一擴(kuò)展字段,而在多租戶系統(tǒng)的前端(租戶端),租戶通過提交不同的擴(kuò)展數(shù)據(jù)庫表列的請(qǐng)求而生成不同的描述文件,從而實(shí)現(xiàn)了對(duì)后端統(tǒng)一的擴(kuò)展字段的前端實(shí)例化。利用圖1所示的方法,顯然還可以實(shí)現(xiàn)在擴(kuò)展數(shù)據(jù)庫表時(shí)無需占用并浪費(fèi)大量的數(shù)據(jù)庫空間的技術(shù)效果,因?yàn)椴恍枰獮槊總€(gè)數(shù)據(jù)庫表事先定義大量的可擴(kuò)展的空列。并且利用圖1所示的方法,在針對(duì)擴(kuò)展后的數(shù)據(jù)庫表執(zhí)行數(shù)據(jù)庫處理操作時(shí)無需進(jìn)行大量的不同表之間的聯(lián)合操作(Joint Operation),因?yàn)椴]有增加另外的新表。圖2示出了根據(jù)本發(fā)明另一個(gè)實(shí)施例的用于擴(kuò)展數(shù)據(jù)庫表的方法的流程圖。圖2 中的步驟201對(duì)應(yīng)于圖1中的步驟101,不再重述。與圖1的步驟102不同的是,圖2加入了判斷步驟,也就是在接收到租戶關(guān)于擴(kuò)展數(shù)據(jù)庫表的請(qǐng)求之后,在步驟202中根據(jù)該請(qǐng)求中包含的租戶的身份信息以及要擴(kuò)展的數(shù)據(jù)庫表的標(biāo)識(shí)信息,判斷是否已經(jīng)存在對(duì)應(yīng)于所述租戶以及所述數(shù)據(jù)庫表的描述文件。如果判斷結(jié)果為是,則在步驟203中通過修改舊的描述該新的描述文件覆蓋舊的描述文件,也就是說無論一個(gè)租戶提出過多少次擴(kuò)展數(shù)據(jù)庫表的請(qǐng)求,始終只存在一個(gè)描述文件與其相對(duì)應(yīng)。當(dāng)然,新的描述文件中會(huì)包含舊的描述文件中關(guān)于擴(kuò)展數(shù)據(jù)庫表的內(nèi)容,從而不會(huì)使得原先租戶已經(jīng)請(qǐng)求擴(kuò)展的數(shù)據(jù)庫表列無效。本領(lǐng)域技術(shù)人員應(yīng)當(dāng)理解,步驟203中的“修改”可以包括多種實(shí)施方式。根據(jù)本發(fā)明的一個(gè)實(shí)施方式,“修改”包括讀取舊的描述文件,并對(duì)舊的描述文件進(jìn)行編輯而生成新的描述文件。根據(jù)本發(fā)明的另一個(gè)實(shí)施方式,“修改”是指先根據(jù)租戶的擴(kuò)展數(shù)據(jù)庫表的請(qǐng)求生成新的描述文件,然后將舊的描述文件中的內(nèi)容合并到新的描述文件中,并且刪除舊的描述文件。如果步驟202的判斷結(jié)果為否,則在步驟204中直接創(chuàng)建對(duì)應(yīng)于所述租戶的描述文件。圖3示出了根據(jù)本發(fā)明另一個(gè)實(shí)施例的用于擴(kuò)展數(shù)據(jù)庫表的方法的流程圖。圖3 中的步驟301和步驟302可以理解為分別對(duì)應(yīng)于圖1中的步驟101和102,在此不再詳述。在步驟303中,接收租戶的數(shù)據(jù)處理請(qǐng)求,所述數(shù)據(jù)處理請(qǐng)求與數(shù)據(jù)庫表的擴(kuò)展字段相關(guān)。之所以所述數(shù)據(jù)處理請(qǐng)求是與數(shù)據(jù)庫表的擴(kuò)展字段相關(guān)的,是因?yàn)槿绻粋€(gè)數(shù)據(jù)處理請(qǐng)求只涉及原始數(shù)據(jù)庫表(例如查詢一個(gè)原始數(shù)據(jù)庫表中的表列的數(shù)值),那么這個(gè)數(shù)據(jù)處理請(qǐng)求可以直接由數(shù)據(jù)庫服務(wù)器解析并執(zhí)行,而不會(huì)產(chǎn)生錯(cuò)誤。需要指出的是,由于租戶要先登錄才能提交數(shù)據(jù)處理請(qǐng)求,因此所接收到的租戶的數(shù)據(jù)處理請(qǐng)求中含有租戶的身份信息或者標(biāo)識(shí)信息。租戶提交的數(shù)據(jù)處理請(qǐng)求可能包括但不限于數(shù)據(jù)插入、數(shù)據(jù)查詢、數(shù)據(jù)更新或數(shù)據(jù)刪除等,并且數(shù)據(jù)處理請(qǐng)求不包括擴(kuò)展數(shù)據(jù)庫的請(qǐng)求,因?yàn)槿绻墙邮盏搅藬U(kuò)展數(shù)據(jù)庫的請(qǐng)求,應(yīng)當(dāng)生成描述文件。在步驟304中,根據(jù)租戶的數(shù)據(jù)處理請(qǐng)求中所包含的租戶的身份信息(或稱為“識(shí)
      10別信息”)以及該數(shù)據(jù)處理請(qǐng)求要處理的數(shù)據(jù)庫表的識(shí)別信息,查找與該租戶對(duì)應(yīng)的描述文件。在多租戶系統(tǒng)中,可能存在大量的數(shù)據(jù)庫表,而對(duì)于同一租戶而言,如果該租戶對(duì)多個(gè)數(shù)據(jù)庫表都提出了擴(kuò)展請(qǐng)求,那么就會(huì)存在多個(gè)對(duì)應(yīng)于該租戶但是對(duì)應(yīng)于不同的數(shù)據(jù)庫表的描述文件。而對(duì)于同一個(gè)數(shù)據(jù)庫表而言,如果有多個(gè)租戶對(duì)該數(shù)據(jù)庫表都提出了擴(kuò)展請(qǐng)求,那么就會(huì)有多個(gè)對(duì)應(yīng)于該數(shù)據(jù)庫表但是對(duì)應(yīng)于不同租戶的描述文件。因此,要查找到正確的描述文件,必須根據(jù)數(shù)據(jù)處理請(qǐng)求要處理的特定的數(shù)據(jù)庫表和提出請(qǐng)求的特定租戶來查找描述文件。本領(lǐng)域技術(shù)人員應(yīng)當(dāng)了解,租戶的身份信息或標(biāo)識(shí)信息作為租戶的元數(shù)據(jù)信息加以保存從而便于租戶登錄多租戶系統(tǒng)并進(jìn)行后續(xù)的操作,這是MaS或多租戶技術(shù)的通常技術(shù)手段,在此不展開描述。本領(lǐng)域技術(shù)人員還應(yīng)當(dāng)了解,在步驟302中生成了描述文件后,可能采取一些手段保存所生成的描述文件,也可能多租戶系統(tǒng)會(huì)自動(dòng)保存所生成的描述文件。保存描述文件的目的是為了當(dāng)接收到租戶的數(shù)據(jù)處理請(qǐng)求時(shí)能夠找到對(duì)應(yīng)于該租戶的描述文件,需要指出的是,描述文件的保存位置沒有限制,例如可以保存在多租戶系統(tǒng)的后端數(shù)據(jù)庫中,也可以保存在租戶本地,還可以保存在通過以太網(wǎng)等網(wǎng)絡(luò)連接的任何遠(yuǎn)程存儲(chǔ)裝置上。在步驟305中,根據(jù)所查找到的所述描述文件的內(nèi)容,重寫所述數(shù)據(jù)處理請(qǐng)求。之所以要重寫租戶的數(shù)據(jù)處理請(qǐng)求,是因?yàn)樽鈶舻臄?shù)據(jù)處理請(qǐng)求是根據(jù)其所了解的前端(租戶端)的數(shù)據(jù)結(jié)構(gòu)而提出的,租戶可能并不知道(也沒有必要知道)在后端(多租戶系統(tǒng)數(shù)據(jù)庫)實(shí)際上數(shù)據(jù)庫表中只有一個(gè)擴(kuò)展字段,而并沒有租戶在前端所見的經(jīng)擴(kuò)展后的表列。這樣的話,如果直接把租戶的數(shù)據(jù)處理請(qǐng)求發(fā)送至后端的多租戶系統(tǒng)的數(shù)據(jù)庫服務(wù)器, 則數(shù)據(jù)庫服務(wù)器無法正確執(zhí)行該請(qǐng)求,從而返回錯(cuò)誤。因此,通過重寫租戶的數(shù)據(jù)庫處理請(qǐng)求的方式來解決這一問題。舉例而言,如果租戶tenantl在將原始“employee”表中擴(kuò)展了 “homeaddress” 列之后,提出了插入一行記錄的數(shù)據(jù)處理請(qǐng)求,該請(qǐng)求的S QL語句如下=Insert into employee(PersonID, Employee Type, LastName, FirstName, homeaddress)values (1003, ‘Regular,,‘Yang,,‘Matt,,Street 1,New York,),那么在步驟 304 中,根據(jù)該租戶的身份識(shí)別信息查找該租戶對(duì)應(yīng)的描述文件,假設(shè)是tenantl. xsd。根據(jù)tenantl. xsd的內(nèi)容, 可以獲知表列“homeaddress”是描述文件tenantl. xsd將X_C0L擴(kuò)展字段描述成的一個(gè)擴(kuò)展列,從而將上面租戶請(qǐng)求的SQL語句進(jìn)行重寫如下Insert into employee (PersonID, EmployeeType, LastName, FirstName, X_C0L)values (1003, 'Regular', iYang', iMatt', XMLPARSE(document ‘<X_C0L homeaddress = " Street 1,New York”/〉,),經(jīng)重寫后的這個(gè)語句才會(huì)真正被利用來執(zhí)行數(shù)據(jù)處理(也就是步驟306)。再以查詢請(qǐng)求為例,如果租戶tenantl請(qǐng)求查詢家庭住址為” Streetl,New York" 的員工姓名信息,則該查詢請(qǐng)求對(duì)應(yīng)的標(biāo)準(zhǔn)SQL語句為select LastName, FirstName from employee where homeaddress =' Streetl, New York’,類似地,可以獲知表列 “homeaddress”是描述文件tenantl. xsd將X_C0L擴(kuò)展字段描述成的一個(gè)擴(kuò)展列,從而將上面禾且戶請(qǐng)求的 SQL i吾句進(jìn)行重寫如下select LastName, FirstName fromemployee where XMLEXISTS ( "$i/X_C0L[ihomeaddress = iSreet 1, NewYork"' PASSINGX_C0L AS i),經(jīng)重寫后的這個(gè)語句才會(huì)真正被利用來執(zhí)行數(shù)據(jù)處理(也就是步驟306)。類似地,本領(lǐng)域技術(shù)人員根據(jù)上述內(nèi)容完全可以了解在數(shù)據(jù)處理請(qǐng)求為數(shù)據(jù)更新請(qǐng)求或數(shù)據(jù)刪除請(qǐng)求的情況下,如何重寫所述請(qǐng)求并利用重寫后的數(shù)據(jù)處理請(qǐng)求執(zhí)行數(shù)據(jù)處理。需要強(qiáng)調(diào)的是,步驟306中“執(zhí)行數(shù)據(jù)處理”的含義廣泛,可能是指將重寫后的數(shù)據(jù)處理請(qǐng)求發(fā)送至多租戶系統(tǒng)的數(shù)據(jù)庫服務(wù)器,以便由該服務(wù)器最終執(zhí)行數(shù)據(jù)處理(此時(shí)步驟306中的“執(zhí)行數(shù)據(jù)處理”實(shí)際上是發(fā)送該重寫后的數(shù)據(jù)處理請(qǐng)求)。如果本發(fā)明的方法或系統(tǒng)直接實(shí)現(xiàn)在多租戶系統(tǒng)的數(shù)據(jù)庫服務(wù)器中的話,則步驟306中的“執(zhí)行數(shù)據(jù)處理” 即是指直接執(zhí)行經(jīng)重寫后的數(shù)據(jù)處理請(qǐng)求。由此可見,通過上述重寫機(jī)制,盡管前端(租戶端)的數(shù)據(jù)結(jié)構(gòu)與多租戶系統(tǒng)后端的實(shí)際數(shù)據(jù)庫表的結(jié)構(gòu)不同,并且租戶可能也不知曉這種不同,仍然可以將租戶的數(shù)據(jù)處理請(qǐng)求“映射”到后端的實(shí)際數(shù)據(jù)庫表的結(jié)構(gòu)上,保證了不僅在擴(kuò)展數(shù)據(jù)庫表的操作上,而且在擴(kuò)展完成后對(duì)數(shù)據(jù)庫進(jìn)行數(shù)據(jù)處理操作對(duì)前端的租戶和后端的多租戶系統(tǒng)的開發(fā)人員均具有透明性。此外,從上述例子中可以看出,在進(jìn)行數(shù)據(jù)處理操作時(shí),無需進(jìn)行跨多個(gè)表之間的聯(lián)合操作(JointOperation),從而節(jié)省了大量運(yùn)算資源,提升了系統(tǒng)性能和租戶體驗(yàn)。需要指出的是,圖3中的步驟303-306是在擴(kuò)展數(shù)據(jù)庫表完成后,對(duì)租戶提出的數(shù)據(jù)處理請(qǐng)求進(jìn)行處理的步驟,其并非本發(fā)明的技術(shù)方案的必要組成步驟,因?yàn)橐坏┩瓿闪瞬襟E302,就已經(jīng)實(shí)現(xiàn)了對(duì)數(shù)據(jù)庫表的擴(kuò)展。還需要指出的是,圖2所示的方法也可以合并到圖3所示的方法中。圖4A至4D示出了根據(jù)本發(fā)明又一個(gè)實(shí)施例的對(duì)數(shù)據(jù)庫表進(jìn)行擴(kuò)展的實(shí)例的表結(jié)構(gòu)變化圖。其中圖4A示出了多租戶系統(tǒng)(平臺(tái))中的一個(gè)未經(jīng)擴(kuò)展的“employee”表,該原始表中含有“kx”、“Last Name”和“First Name”三列。假設(shè)有兩個(gè)租戶tenantl和tenant2 使用這個(gè)多租戶系統(tǒng),tenantl希望將原始表“employee”中增加一列“ ID”,而tenant2希望將原始臺(tái)表“employee”中增加一列“Home Address”。圖4B示出了定義了擴(kuò)展字段后的“employee”表,也就是定義了擴(kuò)展字段后的多租戶系統(tǒng)的后端數(shù)據(jù)庫中的實(shí)際表結(jié)構(gòu)。需要指出的是,如圖1以及對(duì)應(yīng)的文字部分所描述的那樣,定義擴(kuò)展字段可以發(fā)生在多租戶系統(tǒng)上線運(yùn)行前,也可以發(fā)生在多租戶系統(tǒng)實(shí)際運(yùn)行過程中接收到來自租戶的擴(kuò)展數(shù)據(jù)庫表的請(qǐng)求時(shí)。從圖4B中可以看出,原始 “employee”表中增加了一列“X_C0L”,此即XML類型的擴(kuò)展字段。tenantl和tenant2均可以利用該同一擴(kuò)展字段根據(jù)自己不同的需求來擴(kuò)展“employee”表的列。圖4C示出了租戶tenantl擴(kuò)展了其所需的“ID”列的前端(租戶端)的數(shù)據(jù)結(jié)構(gòu)展示。從圖4C中可以看出,租戶tenantl可以看見展示在其面前的表結(jié)構(gòu)中已經(jīng)包含了 “ID”列,而實(shí)際上“ID”列并未存在于后端的實(shí)際數(shù)據(jù)庫表中。后端的實(shí)際的“employee” 表的結(jié)構(gòu)仍然如圖4B所示。圖4D示出了租戶tenant2擴(kuò)展了其所需的“Home Address"列的前端(租戶端) 的數(shù)據(jù)結(jié)構(gòu)展示。從圖4D中可以看出,租戶tenant2可以看見展示在其面前的表結(jié)構(gòu)中已經(jīng)包含了“Home Addres”列,而且并不包含展示在租戶tenantl面前的“ID”列。而實(shí)際上 “HomeAddres”列也并未存在于后端的實(shí)際數(shù)據(jù)庫表中。后端的實(shí)際的“employee”表的結(jié)構(gòu)仍然如圖4B所示。關(guān)于tenantl和tenant〗如何擴(kuò)展數(shù)據(jù)庫表,以及系統(tǒng)如何執(zhí)行兩個(gè)租戶后續(xù)提出的數(shù)據(jù)處理請(qǐng)求的相關(guān)內(nèi)容,已在圖1、圖2、圖3以及相應(yīng)的文字部分進(jìn)行了詳細(xì)描述。圖5示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的用于擴(kuò)展數(shù)據(jù)庫表的系統(tǒng)的結(jié)構(gòu)圖。圖5所示的系統(tǒng)在總體上由500表示。系統(tǒng)500包括擴(kuò)展請(qǐng)求接收裝置501,用于接收來自租戶的擴(kuò)展數(shù)據(jù)庫表的請(qǐng)求;以及描述文件生成裝置502,用于根據(jù)所接收到的請(qǐng)求,生成對(duì)應(yīng)于所述租戶的描述文件,所述描述文件將為數(shù)據(jù)庫表定義的擴(kuò)展字段描述為至少一個(gè)擴(kuò)展列。可以理解,系統(tǒng)500中包含的裝置501和502分別對(duì)應(yīng)于圖1所示的流程圖中的步驟 101和102。利用圖5所示的系統(tǒng)500,可以使擴(kuò)展數(shù)據(jù)庫表的過程無論對(duì)于多租戶系統(tǒng)的設(shè)計(jì)開發(fā)者而言還是對(duì)于租戶自身而言都是透明的,可以向租戶提供一種統(tǒng)一的數(shù)據(jù)模型來擴(kuò)展數(shù)據(jù)庫表(定制化),可以實(shí)現(xiàn)在擴(kuò)展數(shù)據(jù)庫表時(shí)無需占用并浪費(fèi)大量的數(shù)據(jù)庫空間的技術(shù)效果,并且在針對(duì)擴(kuò)展后的數(shù)據(jù)庫表執(zhí)行數(shù)據(jù)庫處理操作時(shí)無需進(jìn)行大量的不同表之間的聯(lián)合操作(Joint Operation),因?yàn)椴]有增加另外的新表。圖6示出了根據(jù)本發(fā)明另一個(gè)實(shí)施例的用于擴(kuò)展數(shù)據(jù)庫表的系統(tǒng)的結(jié)構(gòu)圖。圖6 所示的系統(tǒng)在總體上由600表示。系統(tǒng)600包括擴(kuò)展請(qǐng)求接收裝置601,用于接收來自租戶的擴(kuò)展數(shù)據(jù)庫表的請(qǐng)求;描述文件生成裝置602,用于根據(jù)所接收到的請(qǐng)求,生成對(duì)應(yīng)于所述租戶以及所述數(shù)據(jù)庫表的描述文件,所述描述文件將為數(shù)據(jù)庫表定義的擴(kuò)展字段描述為至少一個(gè)擴(kuò)展列;數(shù)據(jù)處理請(qǐng)求接收裝置603,用于接收租戶提出的數(shù)據(jù)處理請(qǐng)求;描述文件查找裝置604,用于根據(jù)提出數(shù)據(jù)處理請(qǐng)求的租戶的身份信息查找對(duì)應(yīng)的描述文件;數(shù)據(jù)處理請(qǐng)求重寫裝置605,用于根據(jù)查找到的描述文件的內(nèi)容重寫該租戶提出的數(shù)據(jù)處理請(qǐng)求;以及數(shù)據(jù)處理執(zhí)行裝置606,用于利用重寫后的數(shù)據(jù)處理請(qǐng)求執(zhí)行數(shù)據(jù)處理??梢岳斫猓到y(tǒng)600中的裝置601-606分別對(duì)應(yīng)于圖3所示的流程圖中的步驟301-306。需要指出的是,系統(tǒng)600中的裝置603-606用于在擴(kuò)展數(shù)據(jù)庫表完成后,對(duì)租戶提出的數(shù)據(jù)處理請(qǐng)求進(jìn)行處理,其并非本發(fā)明的技術(shù)方案的必要組成部分。在圖6中示出裝置603-606的目的在于說明利用圖6所示的系統(tǒng)600可以保證不僅在擴(kuò)展數(shù)據(jù)庫表的操作上,而且在擴(kuò)展完成后對(duì)數(shù)據(jù)庫進(jìn)行數(shù)據(jù)處理操作對(duì)前端的租戶和后端的多租戶系統(tǒng)的開發(fā)人員均具有透明性。需要強(qiáng)調(diào)的是,圖5所示的系統(tǒng)500中的描述文件生成裝置502以及圖6所示的系統(tǒng)600中的描述文件生成裝置602均可以被進(jìn)一步配置為執(zhí)行如圖2所示的步驟202-204。還需要強(qiáng)調(diào)的是,根據(jù)本發(fā)明的各個(gè)實(shí)施方式的方法或系統(tǒng),既可以在租戶端部署或執(zhí)行,也可以在多租戶系統(tǒng)的服務(wù)器端部署或執(zhí)行,還可以在其它任何位置或區(qū)域部署或執(zhí)行,只要該位置或區(qū)域能夠與多租戶系統(tǒng)的租戶端或服務(wù)器端進(jìn)行通信即可。通過以上對(duì)具體實(shí)施例的描述,本領(lǐng)域技術(shù)人員可以理解,上述的系統(tǒng)、裝置和方法可以使用計(jì)算機(jī)可執(zhí)行指令和/或包含在處理器控制代碼中來實(shí)現(xiàn),例如在諸如磁盤、 CD或DVD-ROM的載體介質(zhì)、諸如只讀存儲(chǔ)器(固件)的可編程的存儲(chǔ)器或者諸如光學(xué)或電子信號(hào)載體的數(shù)據(jù)載體上提供了這樣的代碼。本實(shí)施例的裝置、服務(wù)器及其單元可以由諸如超大規(guī)模集成電路或門陣列、諸如邏輯芯片、晶體管等的半導(dǎo)體、或者諸如現(xiàn)場(chǎng)可編程門陣列、可編程邏輯設(shè)備等的可編程硬件設(shè)備的硬件電路實(shí)現(xiàn),也可以用由各種類型的處理器執(zhí)行的軟件實(shí)現(xiàn),也可以由上述硬件電路和軟件的結(jié)合實(shí)現(xiàn)。雖然以上結(jié)合具體實(shí)施例,對(duì)本發(fā)明的利用遠(yuǎn)程應(yīng)用處理本地文件的系統(tǒng)及方法進(jìn)行了詳細(xì)描述,但本發(fā)明并不限于此。本領(lǐng)域普通技術(shù)人員能夠在說明書教導(dǎo)之下對(duì)本發(fā)明進(jìn)行多種變換、替換和修改而不偏離本發(fā)明的精神和范圍。應(yīng)該理解,所有這樣的變化、替換、修改仍然落入本發(fā)明的保護(hù)范圍之內(nèi)。本發(fā)明的保護(hù)范圍由所附權(quán)利要求來限定。
      權(quán)利要求
      1.一種用于擴(kuò)展數(shù)據(jù)庫表的方法,包括 接收租戶關(guān)于擴(kuò)展數(shù)據(jù)庫表的請(qǐng)求;以及根據(jù)所接收到的請(qǐng)求,生成對(duì)應(yīng)于所述租戶以及所述數(shù)據(jù)庫表的描述文件,所述描述文件將為所述數(shù)據(jù)庫表定義的擴(kuò)展字段描述為至少一個(gè)擴(kuò)展列。
      2.如權(quán)利要求1所述的方法,其中根據(jù)所接收到的請(qǐng)求,生成對(duì)應(yīng)于所述租戶的描述文件的步驟包括根據(jù)所接收到的請(qǐng)求,判斷是否已經(jīng)存在對(duì)應(yīng)于所述租戶以及所述數(shù)據(jù)庫表的描述文件;如果判斷結(jié)果為是,則通過修改所述已經(jīng)存在的描述文件來生成對(duì)應(yīng)于所述租戶以及所述數(shù)據(jù)庫表的新的描述文件。
      3.如權(quán)利要求2所述的方法,其中根據(jù)所接收到的請(qǐng)求,生成對(duì)應(yīng)于所述租戶的描述文件的步驟還包括如果判斷結(jié)果為否,則創(chuàng)建對(duì)應(yīng)于所述租戶以及所述數(shù)據(jù)庫表的描述文件。
      4.如權(quán)利要求1至3任一所述的方法,還包括接收所述租戶對(duì)所述數(shù)據(jù)庫表的數(shù)據(jù)處理請(qǐng)求,所述數(shù)據(jù)處理請(qǐng)求與所述數(shù)據(jù)庫表的擴(kuò)展字段相關(guān);根據(jù)所述數(shù)據(jù)處理請(qǐng)求中包含的所述租戶和所述數(shù)據(jù)庫表的標(biāo)識(shí)信息,查找所述描述文件;根據(jù)所查找到的描述文件的內(nèi)容,重寫所述數(shù)據(jù)處理請(qǐng)求;以及利用重寫后的數(shù)據(jù)處理請(qǐng)求執(zhí)行數(shù)據(jù)處理。
      5.如權(quán)利要求4所述的方法,其中數(shù)據(jù)處理請(qǐng)求至少包括下列之一數(shù)據(jù)插入請(qǐng)求、數(shù)據(jù)查詢請(qǐng)求、數(shù)據(jù)更新請(qǐng)求和數(shù)據(jù)刪除請(qǐng)求。
      6.如權(quán)利要求1-5任一所述的方法,其中擴(kuò)展字段包括XML擴(kuò)展字段。
      7.如權(quán)利要求1-6任一所述的方法,所述描述文件所描述的至少一個(gè)擴(kuò)展列具有樹形結(jié)構(gòu)。
      8.如權(quán)利要求1-7任一所述的方法,其中為一個(gè)數(shù)據(jù)庫表定義一個(gè)擴(kuò)展字段,并且所定義的一個(gè)擴(kuò)展字段由多個(gè)租戶共享。
      9.一種用于擴(kuò)展數(shù)據(jù)庫表的系統(tǒng),包括擴(kuò)展請(qǐng)求接收裝置,用于接收租戶關(guān)于擴(kuò)展數(shù)據(jù)庫表的請(qǐng)求;以及描述文件生成裝置,用于根據(jù)所接收到的請(qǐng)求,生成對(duì)應(yīng)于所述租戶以及所述數(shù)據(jù)庫表的描述文件,所述描述文件將為數(shù)據(jù)庫表定義的擴(kuò)展字段描述為至少一個(gè)擴(kuò)展列。
      10.如權(quán)利要求9所述的系統(tǒng),其中所述描述文件生成裝置進(jìn)一步被配置為 判斷是否已經(jīng)存在對(duì)應(yīng)于所述租戶以及所述數(shù)據(jù)庫表的描述文件;如果判斷結(jié)果為是,則通過修改所述已經(jīng)存在的描述文件來生成對(duì)應(yīng)于所述租戶以及所述數(shù)據(jù)庫表的新的描述文件。
      11.如權(quán)利要求10所述的系統(tǒng),其中所述描述文件生成裝置進(jìn)一步被配置為 如果判斷結(jié)果為否,則直接創(chuàng)建對(duì)應(yīng)于所述租戶以及所述數(shù)據(jù)庫表的描述文件。
      12.如權(quán)利要求9至11任一所述的系統(tǒng),還包括數(shù)據(jù)處理請(qǐng)求接收裝置,用于接收所述租戶對(duì)所述數(shù)據(jù)庫表的數(shù)據(jù)處理請(qǐng)求,所述數(shù)據(jù)處理請(qǐng)求與所述擴(kuò)展字段相關(guān);描述文件查找裝置,用于根據(jù)所述數(shù)據(jù)處理請(qǐng)求中包含的所述租戶和所述數(shù)據(jù)庫表的標(biāo)識(shí)信息,查找所述描述文件;數(shù)據(jù)處理請(qǐng)求重寫裝置,用于根據(jù)所查找到的描述文件的內(nèi)容,重寫所述數(shù)據(jù)處理請(qǐng)求;以及數(shù)據(jù)處理執(zhí)行裝置,用于利用重寫后的數(shù)據(jù)處理請(qǐng)求執(zhí)行數(shù)據(jù)處理。
      13.如權(quán)利要求12所述的系統(tǒng),其中數(shù)據(jù)處理請(qǐng)求包括下列之一數(shù)據(jù)插入請(qǐng)求、數(shù)據(jù)查詢請(qǐng)求、數(shù)據(jù)更新請(qǐng)求和數(shù)據(jù)刪除請(qǐng)求。
      14.如權(quán)利要求9-13任一所述的系統(tǒng),其中擴(kuò)展字段包括XML擴(kuò)展字段。
      15.如權(quán)利要求9-14任一所述的系統(tǒng),所述描述文件所描述的至少一個(gè)擴(kuò)展列具有樹形結(jié)構(gòu)。
      16.如權(quán)利要求9-15任一所述的系統(tǒng),其中擴(kuò)展字段定義裝置被進(jìn)一步配置為為一個(gè)數(shù)據(jù)庫表定義一個(gè)擴(kuò)展字段,并且所定義的一個(gè)擴(kuò)展字段由多個(gè)租戶共享。
      全文摘要
      本發(fā)明涉及數(shù)據(jù)庫技術(shù),尤其涉及在多租戶環(huán)境下對(duì)數(shù)據(jù)庫表進(jìn)行擴(kuò)展的技術(shù)。本發(fā)明提供了一種用于擴(kuò)展數(shù)據(jù)庫表的方法,包括接收租戶關(guān)于擴(kuò)展數(shù)據(jù)庫表的請(qǐng)求;以及根據(jù)所接收到的請(qǐng)求,生成對(duì)應(yīng)于所述租戶的描述文件,所述描述文件將為數(shù)據(jù)庫表定義的擴(kuò)展字段描述為至少一個(gè)擴(kuò)展列。
      文檔編號(hào)G06F17/30GK102200977SQ20101013248
      公開日2011年9月28日 申請(qǐng)日期2010年3月23日 優(yōu)先權(quán)日2010年3月23日
      發(fā)明者劉長(zhǎng)浩, 周英華, 張春林, 王啟榮, 王寧, 王小鋒, 肖振春 申請(qǐng)人:國(guó)際商業(yè)機(jī)器公司
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
      1