專利名稱:面向多租戶的數(shù)據(jù)庫(kù)引擎及其數(shù)據(jù)訪問(wèn)方法
技術(shù)領(lǐng)域:
本發(fā)明涉及多租戶數(shù)據(jù)庫(kù)共享,尤其涉及一種面向多租戶的數(shù)據(jù) 庫(kù)引擎及其數(shù)據(jù)訪問(wèn)方法。
背景技術(shù):
在多租戶系統(tǒng)中,數(shù)據(jù)庫(kù)服務(wù)提供商將一個(gè)數(shù)據(jù)庫(kù)實(shí)例租給多個(gè)
中小型(SMB)租戶,從而大量中小型租戶共享同一個(gè)數(shù)據(jù)庫(kù)實(shí)例。 柚造一個(gè)合理的多租戶體系結(jié)構(gòu),要考慮如下技術(shù)問(wèn)題
安全性問(wèn)題由于多個(gè)租戶共享同一個(gè)數(shù)據(jù)庫(kù)實(shí)例,要防止一個(gè) 租戶訪問(wèn)其它租戶置于該數(shù)據(jù)庫(kù)中的數(shù)據(jù);
應(yīng)用開發(fā)成本必須要考慮在部署這樣一個(gè)多租戶應(yīng)用的時(shí)候開 發(fā)者的開發(fā)復(fù)雜度;
管理成本必須考慮操作平臺(tái)的管理復(fù)雜度,這些操作比如包括 租戶登錄、備份和恢復(fù)、運(yùn)行時(shí)操作等等;
性能和可擴(kuò)展性希望隨著租戶的數(shù)量的增加,依然能提供高性
能的可擴(kuò)展性;
面向租戶的服務(wù)級(jí)別協(xié)議(SLA)管理應(yīng)當(dāng)能夠根據(jù)租戶的 SLA,提供相應(yīng)的服務(wù)質(zhì)量。
現(xiàn)有技術(shù)中存在兩種關(guān)于多租戶系統(tǒng)的解決方案:共享表方案和
單獨(dú)表方案。
在共享表方案中,所有租戶共享數(shù)據(jù)庫(kù)中的一張表。在該表中有 一個(gè)"租戶一id"的字段。租戶靠該"租戶—id"字段來(lái)辨別哪條記錄屬于 哪個(gè)租戶。在這種情況下,雖然各個(gè)租戶在接入到UI及業(yè)務(wù)邏輯時(shí) 有區(qū)分,但對(duì)于數(shù)據(jù)庫(kù)來(lái)說(shuō),所有租戶是利用一個(gè)共同的代理平臺(tái)級(jí) 數(shù)據(jù)庫(kù)(DB )賬號(hào)來(lái)訪問(wèn)數(shù)據(jù)庫(kù)的。代理平臺(tái)級(jí)數(shù)據(jù)庫(kù)賬號(hào)擁有對(duì)數(shù)
5據(jù)庫(kù)空間內(nèi)所有租戶數(shù)據(jù)的訪問(wèn)權(quán)。這樣, 一個(gè)租戶的數(shù)據(jù)實(shí)際上能 夠被另一個(gè)租戶所"看見",產(chǎn)生了不安全問(wèn)題。
在單獨(dú)表方案中,在數(shù)據(jù)庫(kù)中為每個(gè)租戶單獨(dú)準(zhǔn)備一張表。租戶 只能訪問(wèn)到數(shù)據(jù)庫(kù)中它自己的表,不能訪問(wèn)其它租戶的表。在這種情
況下,對(duì)于數(shù)據(jù)庫(kù)來(lái)說(shuō),租戶是利用它獨(dú)有的DB賬號(hào)來(lái)訪問(wèn)數(shù)據(jù)庫(kù) 的。每個(gè)租戶被分配給一個(gè)獨(dú)有的賬號(hào),使其僅擁有對(duì)該租戶本身的
數(shù)據(jù)的表的訪問(wèn)權(quán)。這樣,就消除了安全方面的隱患。但是,由于在 數(shù)據(jù)庫(kù)中為每個(gè)租戶單獨(dú)準(zhǔn)備一張表,在租戶多的時(shí)候管理起來(lái)十分
困難,極大地加大了管理上的成本。
因此,期望一種既能夠解決安全性問(wèn)題,又不會(huì)加大管理上的成 本,同時(shí)能基于多租戶的特性提高數(shù)據(jù)庫(kù)整體性能的新的數(shù)據(jù)庫(kù)引擎 及方法。
圖1是現(xiàn)有技術(shù)中數(shù)據(jù)庫(kù)5'的結(jié)構(gòu)框圖。數(shù)據(jù)庫(kù)5'包括數(shù)據(jù)庫(kù) 引擎522,和數(shù)據(jù)庫(kù)存儲(chǔ)空間512,。圖2是現(xiàn)有技術(shù)的數(shù)據(jù)庫(kù)訪問(wèn)模式 的示意圖?,F(xiàn)結(jié)合圖1和2,說(shuō)明現(xiàn)有技術(shù)的數(shù)據(jù)庫(kù)引擎522,的工作 情況。
圖1中的安全模塊501,、訪問(wèn)控制器503,和查詢優(yōu)化器505,可 以由現(xiàn)有技術(shù)的數(shù)據(jù)庫(kù)引擎522,實(shí)現(xiàn)。安全模塊501,負(fù)責(zé)在接收到來(lái) 自用戶的SQL請(qǐng)求后,判斷用戶的身份是否合法。訪問(wèn)控制管理器 503,如圖2的中間部分所示,包括表模式模塊5031,、用戶訪問(wèn)權(quán)限 表5032,和表配置模塊5033,。表模式模塊5031,存儲(chǔ)著數(shù)據(jù)庫(kù)存儲(chǔ)空 間512,中所存儲(chǔ)的表的表模式。表配置模塊5033,存儲(chǔ)著數(shù)據(jù)庫(kù)存儲(chǔ) 空間512,中所存儲(chǔ)的表的表配置。用戶訪問(wèn)權(quán)限表5032,按用戶存儲(chǔ) 著與用戶賬號(hào)相對(duì)應(yīng)的權(quán)限,即與用戶賬號(hào)對(duì)應(yīng)的用戶有無(wú)訪問(wèn)數(shù)據(jù) 庫(kù)的權(quán)限?,F(xiàn)有技術(shù)的訪問(wèn)控制管理器503,當(dāng)接收到來(lái)自用戶的SQL 請(qǐng)求后,從該SQL請(qǐng)求得出用戶賬號(hào),根據(jù)用戶訪問(wèn)權(quán)限表5032,判 斷出與該用戶賬號(hào)對(duì)應(yīng)的用戶是否有訪問(wèn)數(shù)據(jù)庫(kù)的權(quán)限。 一旦判斷出 與該用戶賬號(hào)對(duì)應(yīng)的用戶有訪問(wèn)數(shù)據(jù)庫(kù)的權(quán)限,查詢優(yōu)化器505根據(jù) 一系列算法算出從數(shù)據(jù)庫(kù)512的什么位置進(jìn)行優(yōu)化查找。
發(fā)明內(nèi)容
本發(fā)明的一個(gè)目的是提供一種既能夠解決安全性問(wèn)題,又不會(huì)加 大管理上的成本,同時(shí)能基于多租戶的特性提高數(shù)據(jù)庫(kù)整體性能的新 的數(shù)據(jù)庫(kù)引擎及方法。
本發(fā)明的另一個(gè)目的是能夠?qū)崿F(xiàn)面向租戶的服務(wù)質(zhì)量管理。
本發(fā)明提供了一種面向多租戶的數(shù)據(jù)庫(kù)數(shù)據(jù)訪問(wèn)方法,包括接 收租戶數(shù)據(jù)訪問(wèn)請(qǐng)求;確定與該租戶相對(duì)應(yīng)的租戶實(shí)體,其中多個(gè)租 戶實(shí)體共享數(shù)據(jù)庫(kù)中的一張邏輯表;根據(jù)租戶實(shí)體的配置信息處理租 戶的數(shù)據(jù)訪問(wèn)請(qǐng)求。
本發(fā)明還提供了一種面向多租戶的數(shù)據(jù)庫(kù)引擎,包括匹配識(shí)別 模塊,其將租戶賬號(hào)與租戶實(shí)體進(jìn)行匹配,識(shí)別出與發(fā)出請(qǐng)求的租戶 的賬號(hào)相對(duì)應(yīng)的租戶實(shí)體;訪問(wèn)控制管理器,其維護(hù)每一租戶實(shí)體的
相關(guān)訪問(wèn)權(quán)限,根據(jù)匹配識(shí)別模板識(shí)別出的租戶實(shí)體,判斷出該租戶 實(shí)體是否有對(duì)數(shù)據(jù)庫(kù)的訪問(wèn)權(quán)限。
本發(fā)明在數(shù)據(jù)庫(kù)中引入了 "租戶實(shí)體,,對(duì)象,以"租戶實(shí)體,,作為訪 問(wèn)數(shù)據(jù)庫(kù)的最小單位。"租戶實(shí)體,,對(duì)象具有以下特征它具有與租戶 訪問(wèn)賬號(hào)的對(duì)應(yīng)關(guān)系, 一個(gè)租戶對(duì)應(yīng)于一個(gè)獨(dú)特的租戶賬號(hào), 一個(gè)租 戶賬號(hào)對(duì)應(yīng)著一個(gè)租戶實(shí)體;將數(shù)據(jù)庫(kù)存儲(chǔ)空間分成多個(gè)區(qū),每個(gè)區(qū) 記錄一個(gè)租戶實(shí)體的數(shù)據(jù),即一個(gè)區(qū)對(duì)應(yīng)著一個(gè)租戶實(shí)體,每個(gè)租戶 實(shí)體的記錄在物理上相互分開;可以為每個(gè)租戶實(shí)體分配不同的優(yōu)先 級(jí),從而根據(jù)不同的租戶實(shí)體實(shí)行不同的服務(wù)質(zhì)量策略。雖然多個(gè)租 戶實(shí)體共享一張邏輯表,但由于每個(gè)租戶實(shí)體的記錄在數(shù)據(jù)庫(kù)存儲(chǔ)空 間中在物理上相互分開,這樣就既能夠保證查詢優(yōu)化器在僅有一張邏 輯表的前提下準(zhǔn)確地將租戶的訪問(wèn)請(qǐng)求定位到數(shù)據(jù)庫(kù)存儲(chǔ)空間中與 該租戶的租戶實(shí)體相對(duì)應(yīng)的分區(qū),又能夠保證該租戶"看不見"其它租 戶的數(shù)據(jù)。也就是說(shuō),多個(gè)租戶實(shí)體共享一張邏輯表,降低了管理的 成本,并且對(duì)于開發(fā)人員來(lái)說(shuō)僅需在一張表上進(jìn)行開發(fā),降低了開發(fā) 成本;同時(shí)每個(gè)租戶實(shí)體都擁有獨(dú)立的數(shù)據(jù)庫(kù)訪問(wèn)賬號(hào),解決了數(shù)據(jù)庫(kù)訪問(wèn)的安全性問(wèn)題。當(dāng)租戶請(qǐng)求到來(lái)時(shí),將根據(jù)與租戶的賬號(hào)相對(duì) 應(yīng)的租戶實(shí)體的權(quán)限來(lái)處理租戶的數(shù)據(jù)訪問(wèn)請(qǐng)求。由于本發(fā)明引入了 租戶實(shí)體這個(gè)數(shù)據(jù)庫(kù)對(duì)象,為使租戶的數(shù)據(jù)在物理上相互分開從而為 提高性能和良好的隔離性、可擴(kuò)展性提供了可能。同時(shí),本發(fā)明提出 的租戶實(shí)體對(duì)象為對(duì)于具有不同服務(wù)質(zhì)量要求的租戶提供適合于其
特定服務(wù)質(zhì)量要求的服務(wù)、實(shí)現(xiàn)面向租戶的服務(wù)質(zhì)量管理提供了可 能。因?yàn)楸景l(fā)明存在著租戶實(shí)體對(duì)象,則可以為租戶實(shí)體指定優(yōu)先級(jí),
并釆用特定的服務(wù)質(zhì)量管理策略來(lái)調(diào)度具有不同優(yōu)先級(jí)的各個(gè)租戶 實(shí)體的租戶所發(fā)出的訪問(wèn)請(qǐng)求。
另外,通過(guò)本發(fā)明的上述方式,查詢優(yōu)化器先定位到數(shù)據(jù)庫(kù)存儲(chǔ) 空間內(nèi)與該租戶實(shí)體相對(duì)應(yīng)的區(qū),然后在該區(qū)內(nèi)搜索記錄,提高了查 找的效率。
圖l是現(xiàn)有技術(shù)中的數(shù)據(jù)庫(kù)的結(jié)構(gòu)框圖。
圖2是現(xiàn)有技術(shù)的數(shù)據(jù)庫(kù)訪問(wèn)模式的示意圖。 圖3是本發(fā)明的包含數(shù)據(jù)庫(kù)引擎的數(shù)據(jù)庫(kù)的結(jié)構(gòu)框圖。 圖4示出了本發(fā)明的匹配識(shí)別模塊所維護(hù)的賬號(hào)與實(shí)體的對(duì)應(yīng) 關(guān)系列表的例子。
圖5是本發(fā)明的數(shù)據(jù)庫(kù)訪問(wèn)模式的示意圖。
圖6示出了一個(gè)按與租戶實(shí)體對(duì)應(yīng)的區(qū)在數(shù)據(jù)庫(kù)存儲(chǔ)空間中訪 問(wèn)記錄的示例。
圖7是面向租戶實(shí)體的服務(wù)質(zhì)量控制機(jī)制的示意圖。 圖8是圖3的數(shù)據(jù)庫(kù)引擎工作的一個(gè)示例性流程圖。 圖9是圖3中的查詢優(yōu)化器的詳細(xì)結(jié)構(gòu)框圖。 圖IO是本發(fā)明概括后的方法流程圖。
具體實(shí)施例方式
現(xiàn)在結(jié)合具體實(shí)施方式
對(duì)本發(fā)明進(jìn)行更加詳細(xì)的說(shuō)明。本發(fā)明在數(shù)據(jù)庫(kù)中引入了"租戶實(shí)體"對(duì)象,以"租戶實(shí)體,,作為訪 問(wèn)數(shù)據(jù)庫(kù)的最小單位。"租戶實(shí)體"對(duì)象具有與租戶訪問(wèn)賬號(hào)的對(duì)應(yīng)關(guān) 系, 一個(gè)租戶賬號(hào)對(duì)應(yīng)著一個(gè)租戶實(shí)體。將數(shù)據(jù)庫(kù)存儲(chǔ)空間分成多個(gè) 區(qū),每個(gè)區(qū)記錄一個(gè)租戶實(shí)體的數(shù)據(jù),即每個(gè)租戶實(shí)體的記錄在物理 上相互分開。在本發(fā)明中,多個(gè)租戶實(shí)體共享一張邏輯表。由于每個(gè) 租戶實(shí)體的記錄在數(shù)據(jù)庫(kù)存儲(chǔ)空間中在物理上相互分開,這樣就既能 夠保證查詢優(yōu)化器在僅有一張邏輯表的前提下準(zhǔn)確地將租戶的訪問(wèn)
請(qǐng)求定位到數(shù)據(jù)庫(kù)存儲(chǔ)空間中與該租戶的租戶實(shí)體相對(duì)應(yīng)的分區(qū),又 能夠保證該租戶"看不見,,其它租戶的數(shù)據(jù),從而降低了管理、開發(fā)成 本,同時(shí)解決了數(shù)據(jù)庫(kù)訪問(wèn)的安全性問(wèn)題。
圖3是本發(fā)明的包含數(shù)據(jù)庫(kù)引擎的數(shù)據(jù)庫(kù)的結(jié)構(gòu)框圖。圖3中的 安全模塊501、訪問(wèn)控制器503和查詢優(yōu)化器505與圖1中的安全模 塊501,、訪問(wèn)控制器503,和查詢優(yōu)化器505,基本相同。與圖1相比, 圖3中增加了租戶實(shí)體安全才幾制插件502、匹配識(shí)別才莫塊401、基于 租戶實(shí)體的權(quán)限控制插件504、租戶實(shí)體與權(quán)限映射模塊513、租戶 實(shí)體查詢優(yōu)化器插件507。因此,本發(fā)明可通過(guò)編程實(shí)現(xiàn)這些插件, 然后將這些插件插到現(xiàn)有技術(shù)中已有的安全模塊501,、訪問(wèn)控制器 503,和查詢優(yōu)化器505,得以實(shí)現(xiàn)。其中,租戶實(shí)體安全機(jī)制插件502、 匹配識(shí)別模塊401插在安全模塊501上。基于租戶實(shí)體的權(quán)限控制插 件504、租戶實(shí)體與權(quán)限映射模塊513插在訪問(wèn)控制器503上。租戶 實(shí)體查詢優(yōu)化器插件507插在查詢優(yōu)化器505上。
下面舉例說(shuō)明圖3中各部分的工作過(guò)程。
假設(shè)安全模塊501接收到了來(lái)自租戶A的SQL請(qǐng)求。安全模塊 501對(duì)租戶A的身份進(jìn)行驗(yàn)證。由于本發(fā)明引入了租戶實(shí)體對(duì)象,匹 配識(shí)別模塊401將租戶A的賬號(hào)a與租戶實(shí)體進(jìn)行匹配。匹配識(shí)別模 塊401存儲(chǔ)并維護(hù)所有租戶的賬號(hào)與租戶實(shí)體的對(duì)應(yīng)關(guān)系列表。圖4 示出了本發(fā)明的匹配識(shí)別模塊所維護(hù)的賬號(hào)與實(shí)體的對(duì)應(yīng)關(guān)系列表 的例子。在圖4中,租戶A、 B、 C、 D、 E、 F所分別擁有的賬號(hào)a、
9b、 c、 d、 e、 f分別對(duì)應(yīng)著租戶實(shí)體l、 2、 3、 4、 5、 6。通過(guò)查找對(duì) 應(yīng)關(guān)系列表,匹配識(shí)別模塊401獲知與租戶賬號(hào)a對(duì)應(yīng)的租戶實(shí)體是 租戶實(shí)體1。租戶實(shí)體安全機(jī)制插件502對(duì)租戶實(shí)體1進(jìn)行安全驗(yàn)證。
然后,安全模塊S01將租戶實(shí)體1的租戶實(shí)體標(biāo)識(shí)連同該訪問(wèn)請(qǐng) 求一同發(fā)送給訪問(wèn)控制管理器503。此時(shí),基于租戶實(shí)體的權(quán)限控制 插件504、租戶實(shí)體與權(quán)限映射模塊513將工作。加入T基于租戶實(shí) 體的權(quán)限控制插件504、租戶實(shí)體與權(quán)限映射模塊513的訪問(wèn)控制管 理器503更形象地看作是圖5中間部分的訪問(wèn)控制管理器503。它維 護(hù)共同表模式模塊5031 、租戶實(shí)體訪問(wèn)權(quán)限表5032、表配置模塊5033。
圖5中間部分的共同表模式模塊5031、租戶實(shí)體訪問(wèn)權(quán)限表 5032、表配置模塊5033與圖2中間部分的表模式模塊5031'、用戶訪 問(wèn)權(quán)限表5032'、表配置模塊5033,的區(qū)別在于圖2中的表模式模塊 5031,、用戶訪問(wèn)權(quán)限表5032'、表配置模塊5033,是面向用戶的,圖5 中的共同表模式模塊5031、租戶實(shí)體訪問(wèn)權(quán)限表5032、表配置模塊 5033是面向租戶對(duì)象的。因此,關(guān)于這些部件,本領(lǐng)域技術(shù)人員可以 在現(xiàn)有技術(shù)的相關(guān)部件的基礎(chǔ)上通過(guò)編程修改實(shí)現(xiàn)。共同表模式模塊 5031與圖2現(xiàn)有技術(shù)中的表模式模塊5031,類似,它存儲(chǔ)著數(shù)據(jù)庫(kù)存 儲(chǔ)空間512所存儲(chǔ)的邏輯表的表模式。租戶實(shí)體訪問(wèn)權(quán)限表5032與 圖2現(xiàn)有技術(shù)中的用戶訪問(wèn)權(quán)限表5032,的區(qū)別是,用戶訪問(wèn)權(quán)限表 5032,按用戶存儲(chǔ)著與用戶賬號(hào)相對(duì)應(yīng)的權(quán)限,而租戶實(shí)體訪問(wèn)權(quán)限表 5032則存儲(chǔ)著與租戶實(shí)體相對(duì)應(yīng)的訪問(wèn)權(quán)限。表配置模塊5033為每 個(gè)租戶實(shí)體維護(hù)著數(shù)據(jù)庫(kù)存儲(chǔ)空間512所存儲(chǔ)的邏輯表的配置信息, 該配置信息可以針對(duì)某個(gè)租戶實(shí)體進(jìn)行修改。
當(dāng)訪問(wèn)控制管理器503接收到租戶實(shí)體1的租戶實(shí)體標(biāo)識(shí)時(shí),根 據(jù)租戶實(shí)體訪問(wèn)權(quán)限表5032判斷出租戶實(shí)體1有訪問(wèn)數(shù)據(jù)庫(kù)存儲(chǔ)空 間512的權(quán)限,于是將租戶實(shí)體1的標(biāo)識(shí)發(fā)送給查詢優(yōu)化器505。
查詢優(yōu)化器505和租戶實(shí)體查詢優(yōu)化器插件507協(xié)同工作后,其 結(jié)構(gòu)框圖相當(dāng)于圖9。查詢優(yōu)化器505和租戶實(shí)體查詢優(yōu)化器插件507 協(xié)同工作后的作用是首先根據(jù)租戶實(shí)體標(biāo)識(shí)信息將租戶對(duì)數(shù)據(jù)庫(kù)的訪問(wèn)請(qǐng)求定位到數(shù)據(jù)庫(kù)存儲(chǔ)空間內(nèi)與和租戶的賬號(hào)對(duì)應(yīng)的租戶實(shí)體 相對(duì)應(yīng)的區(qū)(本發(fā)明將數(shù)據(jù)庫(kù)存儲(chǔ)空間分成區(qū),每個(gè)區(qū)記錄一租戶實(shí) 體租戶的數(shù)據(jù),不同的租戶實(shí)體的記錄在數(shù)據(jù)庫(kù)存儲(chǔ)空間上是物理分 隔開的),然后在該區(qū)內(nèi)搜索目標(biāo)記錄。
在現(xiàn)有技術(shù)中,查詢優(yōu)化器是以SQL1101、統(tǒng)計(jì)信息1110、系 統(tǒng)信息1111作為輸入的。現(xiàn)有技術(shù)的查詢優(yōu)化器也是根據(jù)SQL1101、 統(tǒng)計(jì)信息1110、系統(tǒng)信息1111優(yōu)化定位到數(shù)據(jù)庫(kù)存儲(chǔ)空間512的一 個(gè)區(qū)中,再在該區(qū)內(nèi)進(jìn)行目標(biāo)記錄查詢的。現(xiàn)有技術(shù)中, 一個(gè)表(如 圖6中的訂單表R、庫(kù)存表T)整個(gè)對(duì)應(yīng)著一個(gè)區(qū)。查詢優(yōu)化器優(yōu)化 定位到一個(gè)區(qū),實(shí)際上是定位到一張表中。在本發(fā)明中, 一張邏輯表 中可能有多個(gè)租戶實(shí)體的租戶信息,而本發(fā)明所優(yōu)化定位到的區(qū)是屬 于一個(gè)租戶實(shí)體的,而不是一個(gè)表的。因此,本發(fā)明的查詢優(yōu)化器(查 詢優(yōu)化器505和租戶實(shí)體查詢優(yōu)化器插件507協(xié)同工作后的查詢優(yōu)化 器)除了采用SQL1101、統(tǒng)計(jì)信息1110、系統(tǒng)信息1111作為輸入之 外,還采用租戶實(shí)體信息1102作為輸入。這樣,本發(fā)明的查詢優(yōu)化 器就準(zhǔn)確地優(yōu)化定位到數(shù)據(jù)庫(kù)存儲(chǔ)空間中與租戶實(shí)體信息1102所反 映的租戶實(shí)體所對(duì)應(yīng)的區(qū)中。具體的實(shí)現(xiàn)過(guò)程可以由本領(lǐng)域技術(shù)人員 根據(jù)此功能編程實(shí)現(xiàn),這一實(shí)現(xiàn)對(duì)本領(lǐng)域技術(shù)人員來(lái)說(shuō)是能夠做到 的。
圖9中,接收并驗(yàn)證SOL的模塊1103接收來(lái)自訪問(wèn)控制管理器 503的SQL請(qǐng)求1101和租戶實(shí)體信息1102作為輸入。服務(wù)質(zhì)量(QoS ) 控制模塊1104根據(jù)特定的服務(wù)質(zhì)量管理策略來(lái)調(diào)度具有不同優(yōu)先級(jí) 的各個(gè)租戶實(shí)體所發(fā)出的SQL請(qǐng)求,這將在下面進(jìn)一步描述。數(shù)據(jù) 訪問(wèn)決策模塊1105才艮據(jù)輸入的統(tǒng)計(jì)信息1110和系統(tǒng)信息1111進(jìn)行 數(shù)據(jù)訪問(wèn)方法決策,即應(yīng)當(dāng)如何訪問(wèn)數(shù)據(jù)庫(kù)的決策。定位與租戶實(shí)體 相對(duì)應(yīng)的區(qū)的模塊1106維護(hù)著一張表示各租戶實(shí)體和與每個(gè)租戶實(shí) 體相對(duì)應(yīng)的區(qū)的映射關(guān)系的列表。定位與租戶實(shí)體相對(duì)應(yīng)的區(qū)的模塊 1106根據(jù)該決策結(jié)果和租戶實(shí)體的標(biāo)識(shí),查找該列表,按照查找出的 映射結(jié)果,將SQL請(qǐng)求調(diào)度到數(shù)據(jù)庫(kù)存儲(chǔ)空間中與該租戶實(shí)體相對(duì)應(yīng)的區(qū)。定位到與該租戶實(shí)體相對(duì)應(yīng)的區(qū)之后,開始在區(qū)內(nèi)查詢目標(biāo) 記錄。此時(shí),首先判斷在區(qū)內(nèi)是否按索引訪問(wèn)。如不按索引訪問(wèn),則
通過(guò)表空間掃描加載物理數(shù)據(jù)的模塊1107通過(guò)對(duì)整個(gè)區(qū)進(jìn)行表空間 掃描搜索目標(biāo)記錄。如按索引訪問(wèn),則發(fā)現(xiàn)租戶實(shí)體中的索引樹的模 塊1108在與該租戶實(shí)體相對(duì)應(yīng)的區(qū)中尋找該租戶實(shí)體內(nèi)的索引樹。 在該區(qū)的存儲(chǔ)空間存儲(chǔ)的表格有專門的字段存儲(chǔ)與記錄相關(guān)聯(lián)的索 引,所有這些索引構(gòu)成索引樹。通過(guò)索引訪問(wèn)加載物理數(shù)據(jù)的模塊 1109按照索引定位到具體的目標(biāo)記錄,訪問(wèn)目標(biāo)記錄的物理數(shù)據(jù)。
圖9中租戶實(shí)體信息1102、服務(wù)質(zhì)量(QoS)控制模塊1104、 數(shù)據(jù)訪問(wèn)決策模塊1105、定位與租戶實(shí)體相對(duì)應(yīng)的區(qū)的模塊1106、 發(fā)現(xiàn)租戶實(shí)體中的索引樹的模塊1108是本發(fā)明特有的模塊,其可由 本領(lǐng)域技術(shù)人員基于上述功能通過(guò)軟件或硬件實(shí)現(xiàn)。其余的模塊與現(xiàn) 有技術(shù)的查詢優(yōu)化器505相同。
如圖5所示,當(dāng)在租戶實(shí)體訪問(wèn)權(quán)限表5032判斷出與租戶A的 賬號(hào)a相對(duì)應(yīng)的租戶實(shí)體1具有訪問(wèn)數(shù)據(jù)庫(kù)的權(quán)限后,由查詢優(yōu)化器 505將來(lái)自該租戶的SQL請(qǐng)求定位到數(shù)據(jù)庫(kù)存儲(chǔ)空間512中對(duì)應(yīng)于租 戶實(shí)體1的區(qū)1 (具體定位過(guò)程已經(jīng)在上面結(jié)合圖9清楚示出)。同 理,如果接收到與租戶實(shí)體2相對(duì)應(yīng)的租戶B (其賬號(hào)為b )的SQL 請(qǐng)求,則將該SQL請(qǐng)求定位到數(shù)據(jù)庫(kù)存儲(chǔ)空間512中對(duì)應(yīng)于租戶實(shí) 體2的區(qū)2。
如圖6所示,通過(guò)上面所述的過(guò)程,就實(shí)現(xiàn)了按租戶實(shí)體對(duì)數(shù)據(jù) 庫(kù)存儲(chǔ)空間512中的記錄的整理。假設(shè)在一個(gè)實(shí)施例中,有兩個(gè)表 R表代表訂單記錄,有Rl - R2 - R3 - R4四條記錄,其中Rl - R2記 錄屬于租戶實(shí)體1, R3 - R4記錄屬于租戶實(shí)體2; T表代表庫(kù)存記錄, 有X-Y兩條記錄,這兩條記錄都屬于租戶實(shí)體1。圖6中間部分的 左邊對(duì)應(yīng)著R表的共同表模式模塊5031、租戶實(shí)體訪問(wèn)權(quán)限表5032、 表配置模塊5033,圖6中間部分的右邊對(duì)應(yīng)著T表的共同表模式模 塊5031、租戶實(shí)體訪問(wèn)權(quán)限表5032、表配置模塊5033。當(dāng)與租戶實(shí) 體1對(duì)應(yīng)的租戶要訪問(wèn)邏輯R表中的Rl - R2記錄時(shí),訪問(wèn)控制管理器查詢R表的租戶實(shí)體訪問(wèn)權(quán)限表5032,查詢結(jié)果是租戶實(shí)體1有 訪問(wèn)權(quán)限。于是,相關(guān)的查詢優(yōu)化器將其訪問(wèn)請(qǐng)求定位到數(shù)據(jù)庫(kù)存儲(chǔ) 空間512中對(duì)應(yīng)于租戶實(shí)體l的區(qū),讀出相關(guān)的兩條記錄R1和R2。 當(dāng)與租戶實(shí)體2對(duì)應(yīng)的租戶要訪問(wèn)邏輯R表中的R3-R4記錄時(shí),訪 問(wèn)控制管理器查詢R表的租戶實(shí)體訪問(wèn)權(quán)限表5032,查詢結(jié)果是租 戶實(shí)體2有訪問(wèn)權(quán)限。于是,相關(guān)的查詢優(yōu)化器將其訪問(wèn)請(qǐng)求定位到 數(shù)據(jù)庫(kù)存儲(chǔ)空間512中對(duì)應(yīng)于租戶實(shí)體2的區(qū),讀出相關(guān)的兩條記錄 R3和R4。當(dāng)與租戶實(shí)體1對(duì)應(yīng)的租戶要訪問(wèn)邏輯T表中的X-Y記 錄時(shí),訪問(wèn)控制管理器查詢T表的租戶實(shí)體訪問(wèn)權(quán)限表5032,查詢 結(jié)果是租戶實(shí)體l有訪問(wèn)權(quán)限。于是,相關(guān)的查詢優(yōu)化器將其訪問(wèn)請(qǐng) 求定位到數(shù)據(jù)庫(kù)存儲(chǔ)空間512中對(duì)應(yīng)于租戶實(shí)體l的區(qū),讀出相關(guān)的 兩條記錄X和Y。從上面的過(guò)程可以看出,Rl-R2、 R3-R4雖然屬 于一張邏輯表,但它們分別存儲(chǔ)在數(shù)據(jù)庫(kù)存儲(chǔ)空間的不同的區(qū)中;Rl -R2、 X-Y雖然屬于不同的邏輯表,但它們存儲(chǔ)在數(shù)據(jù)庫(kù)存儲(chǔ)空間 的同一區(qū)中,因而實(shí)現(xiàn)了按租戶實(shí)體對(duì)數(shù)據(jù)庫(kù)存儲(chǔ)空間512中的記錄 的整理。
如圖5和6所示,定義了一個(gè)特殊的不同于租戶實(shí)體的實(shí)體—— 管理員實(shí)體。管理員實(shí)體對(duì)數(shù)據(jù)庫(kù)存儲(chǔ)空間中的屬于任何租戶實(shí)體的 記錄都有訪問(wèn)權(quán)限。例如,在圖6中,來(lái)自與管理員實(shí)體相對(duì)應(yīng)的管 理員的SQL請(qǐng)求既可訪問(wèn)數(shù)據(jù)庫(kù)存儲(chǔ)空間512中與租戶實(shí)體1相對(duì) 應(yīng)的區(qū)內(nèi)的記錄R1、 R2、 X、 Y,又可訪問(wèn)數(shù)據(jù)庫(kù)存儲(chǔ)空間512中與 租戶實(shí)體2相對(duì)應(yīng)的區(qū)內(nèi)的記錄R3、 R4。為了適應(yīng)管理員實(shí)體,所 述匹配識(shí)別模塊(401)也將管理員賬號(hào)與管理員實(shí)體進(jìn)行匹配。如 圖4所示,匹配識(shí)別模塊(401)所維護(hù)的賬號(hào)與實(shí)體的對(duì)應(yīng)關(guān)系列 表中也將管理員賬號(hào)和管理員實(shí)體相對(duì)應(yīng)地存儲(chǔ)。當(dāng)匹配識(shí)別模塊 (401)判斷出請(qǐng)求所具有的賬號(hào)為管理員賬號(hào)時(shí),識(shí)別出該請(qǐng)求與 管理員實(shí)體相對(duì)應(yīng),訪問(wèn)控制管理器(503 )允許管理員實(shí)體對(duì)數(shù)據(jù) 庫(kù)存儲(chǔ)空間中的屬于任何租戶實(shí)體的記錄進(jìn)行訪問(wèn),也就是說(shuō)此時(shí)不 用查詢租戶實(shí)體訪問(wèn)權(quán)限表5032,因?yàn)樗枪芾韱T實(shí)體,管理員實(shí)體
13對(duì)數(shù)據(jù)庫(kù)存儲(chǔ)空間中的屬于任何租戶實(shí)體的記錄都有訪問(wèn)權(quán)限。查詢
優(yōu)化器(505)在整個(gè)數(shù)據(jù)庫(kù)存儲(chǔ)空間中搜索定位目標(biāo)記錄,而不用 先定位到某個(gè)區(qū)中再進(jìn)行查找,因?yàn)槠洳皇亲鈶魧?shí)體。當(dāng)查詢優(yōu)化器 505查詢到管理員實(shí)體所要訪問(wèn)的記錄并向與該管理員實(shí)體對(duì)應(yīng)的管 理員返回時(shí),在所述記錄上加該記錄所屬的租戶實(shí)體標(biāo)識(shí)信息,以便 向該管理員識(shí)別該記錄是來(lái)自于哪一租戶實(shí)體的。通過(guò)管理員實(shí)體, 可以更好地實(shí)現(xiàn)對(duì)多租戶的平臺(tái)級(jí)的管理和統(tǒng)計(jì)。
由于表配置模塊5033為每個(gè)租戶/管理員實(shí)體單獨(dú)維護(hù)該租戶/ 管理員實(shí)體的配置信息,而不是為整個(gè)表維護(hù)配置信息,因此該配置 信息可以由管理員實(shí)體進(jìn)行修改,從而方便管理員為多租戶實(shí)現(xiàn)統(tǒng)一 管理。
下面結(jié)合圖7詳細(xì)描述圖9的QoS控制模塊1104的工作過(guò)程。 在現(xiàn)有技術(shù)中,沒有對(duì)于SQL請(qǐng)求的QoS策略,這是因?yàn)檫@些請(qǐng)求 具有相關(guān)性(例如,更新SQL請(qǐng)求必須要在插入SQL請(qǐng)求插入記 錄后才能對(duì)記錄作處理),所以它們必須按照一定順序被滿足。但 在本發(fā)明引入了租戶/管理員實(shí)體對(duì)象之后,就可以考慮到SQL請(qǐng)求 之間的相關(guān)性而進(jìn)行QoS控制。本發(fā)明給租戶/管理員分配租戶/管理 員實(shí)體,為每個(gè)租戶/管理員實(shí)體指定一個(gè)特定的優(yōu)先級(jí),并將來(lái)自 具有不同的優(yōu)先級(jí)的租戶/管理員實(shí)體的SQL請(qǐng)求分到放在不同的 優(yōu)先級(jí)隊(duì)列中。對(duì)于同一優(yōu)先級(jí)隊(duì)列,SQL請(qǐng)求必須按其進(jìn)入隊(duì)列 的順序被處理,因?yàn)镾QL請(qǐng)求之間有相關(guān)性。而對(duì)于不同優(yōu)先級(jí)隊(duì) 歹ij,它們之間的SQL請(qǐng)求是不具有相關(guān)性的,因而可以根據(jù)它們的 優(yōu)先級(jí)進(jìn)行調(diào)度,從而對(duì)不同的租戶/管理員實(shí)體實(shí)現(xiàn)了不同的QoS。 QoS控制才莫塊1104包括MT隊(duì)列管理器11041和MT查詢調(diào)度 器11043。
MT隊(duì)列管理器11041接收到來(lái)自租戶/管理員實(shí)體的SQL請(qǐng)求 之后,按租戶/管理員實(shí)體的優(yōu)先級(jí)將它們分到與不同的優(yōu)先級(jí)對(duì)應(yīng)的 隊(duì)列(即MT -優(yōu)先級(jí)隊(duì)列11042中。圖7示出了管理員隊(duì)列(其優(yōu) 先級(jí)最高)、金隊(duì)列(優(yōu)先級(jí)其次)、銀隊(duì)列(優(yōu)先級(jí)再次)。
14MT查詢調(diào)度器11043根據(jù)特定的服務(wù)質(zhì)量管理策略將管理員隊(duì) 列(其優(yōu)先級(jí)最高, 一般來(lái)說(shuō),管理員實(shí)體具有最高的優(yōu)先級(jí))、金 隊(duì)列(優(yōu)先級(jí)其次)、銀隊(duì)列(優(yōu)先級(jí)再次)整合為一個(gè)隊(duì)列,即 DB SQL隊(duì)列11044。整合的方法例如是這樣的
假設(shè)目前管理員隊(duì)列有三個(gè)SQL請(qǐng)求Al (5) 、 A2 (4)、 A3 (2);金隊(duì)列有三個(gè)SQL請(qǐng)求Bl (8 ) 、 B2 ( 5) 、 B3 (3 ); 銀隊(duì)列有兩個(gè)SQL請(qǐng)求Cl (3) 、 C2 (0) 。 Al (5)表示該SQL 請(qǐng)求是管理員隊(duì)列中的第1個(gè)SQL請(qǐng)求,其等待了 5個(gè)時(shí)隙。A2(4) 表示該SQL請(qǐng)求是管理員隊(duì)列中的第2個(gè)SQL請(qǐng)求,其等待了 4個(gè) 時(shí)隙。Bl (8)表示該SQL請(qǐng)求是金隊(duì)列中的第1個(gè)SQL請(qǐng)求,其 等待了 8個(gè)時(shí)隙。依此類推。
根據(jù)一個(gè)示例性的服務(wù)質(zhì)量管理策略,管理員隊(duì)列的優(yōu)先級(jí)為 2,金隊(duì)列的優(yōu)先級(jí)為l,銀隊(duì)列的優(yōu)先級(jí)為0。
將上述8個(gè)請(qǐng)求等待的時(shí)隙數(shù)與其相應(yīng)的優(yōu)先級(jí)相加,得到等效 等待時(shí)隙數(shù)如下
SQL請(qǐng)求等效等待時(shí)隙數(shù)
Al(5) 7
A2 ( 4 ) 6
A3 ( 2 ) 4
Bl(8) 9
B2 ( 5 ) 6
B3 ( 3) 4
Cl (3) 3
C2 ( 0 ) 0
MT查詢調(diào)度器11043按照等效等待時(shí)隙數(shù),整合出 一個(gè)新隊(duì)列。 該新隊(duì)列的第 一個(gè)SQL請(qǐng)求是Bl ( 8 ),因?yàn)槠涞刃У却龝r(shí)隙數(shù)最大。 然后依次是A1 (5) -A2 (4) -B2 (5) - A3 ( 2 ) - B3 ( 3 ) - Cl (3) -C2 (0)。其中A2 (4) 、 B2 (5)的等效等待時(shí)隙數(shù)相同, 但A2 (4)的優(yōu)先級(jí)高于B2 (5),所有此時(shí)仍將A2 (4)排在B2(5)的前面,
當(dāng)DB SQL隊(duì)列11044形成后,就按該隊(duì)列順序滿足其中的SQL 請(qǐng)求。Bl (8)最先被滿足。Bl (8)被滿足后,管理員隊(duì)列的三個(gè) SQL請(qǐng)求Al ( 5 ) 、 A2 ( 4 ) 、 A3 ( 2 )就變?yōu)锳l ( 6 ) 、 A2 ( 5 )、 A3 (3),因?yàn)槠涞却龝r(shí)間增加一個(gè)時(shí)隙。同理,金隊(duì)列中的SQL請(qǐng) 求B2 (5) 、 B3 (3)變?yōu)锽2 (6) 、 B3 ( 4 )。在金隊(duì)列中此時(shí)又增 加了一個(gè)SQL請(qǐng)求,即B4 (0),其等待時(shí)間為0。銀隊(duì)列的兩個(gè) SQL請(qǐng)求Cl ( 3 ) 、 C2 ( 0 )變?yōu)镃l ( 4 ) 、 C2 (1)。
再次地,將上述8個(gè)請(qǐng)求等待的時(shí)隙數(shù)與其相應(yīng)的優(yōu)先級(jí)相加, 得到等效等待時(shí)隙數(shù)如下
SQL請(qǐng)求等效等待時(shí)隙數(shù)
Al(6) 8
A2 ( 5 ) 7
A3 ( 3 ) 5
B2 ( 6 ) 7
B3 ( 4 ) 5
B4 ( 0) 1
Cl(4) 4
C2 (1 ) 1
MT查詢調(diào)度器11043按照等效等待時(shí)隙數(shù),整合出一個(gè)新隊(duì)列。 該新隊(duì)列的第一個(gè)SQL請(qǐng)求是Al (6),因?yàn)槠涞刃У却龝r(shí)隙數(shù)最 大。然后依次是A2 (5) -B2 (6) -A3 (3) - B3 ( 4 ) - Cl ( 4 ) - B4 ( 0 ) - C2 (1)。
圖8是圖3中的數(shù)據(jù)庫(kù)引擎工作的一個(gè)示例性流程圖。 在步驟S1001,安全模塊501進(jìn)行租戶/管理員身份是否合法的鑒 權(quán)。如果鑒權(quán)未通過(guò)則在步驟S1002b拒絕租戶/管理員訪問(wèn)。如果鑒 權(quán)通過(guò),則在步驟S1002a通過(guò)匹配識(shí)別模塊401獲得與該租戶/管理 員對(duì)應(yīng)的實(shí)體信息。在步驟S1003在訪問(wèn)控制管理器503判斷與該租 戶/管理員對(duì)應(yīng)的是租戶實(shí)體還是管理員實(shí)體。如果該租戶/管理員對(duì)
16應(yīng)的是管理員實(shí)體,則在步驟S1004a由查詢優(yōu)化器505將對(duì)數(shù)據(jù)庫(kù) 的訪問(wèn)請(qǐng)求定位到整個(gè)數(shù)據(jù)庫(kù)空間內(nèi),在整個(gè)數(shù)據(jù)庫(kù)空間內(nèi)搜索目標(biāo) 記錄,并在步驟S1005將與查詢結(jié)果所在區(qū)對(duì)應(yīng)的相關(guān)租戶實(shí)體標(biāo)識(shí) 信息加入搜索到的目標(biāo)記錄中。如果該租戶/管理員對(duì)應(yīng)的是租戶實(shí) 體,則在步驟S1004b由訪問(wèn)控制管理器查找租戶實(shí)體訪問(wèn)權(quán)限表 5032,且當(dāng)判斷出與該租戶相對(duì)應(yīng)的租戶實(shí)體具有訪問(wèn)權(quán)限時(shí),允許 該租戶訪問(wèn),并由定位與租戶實(shí)體相對(duì)應(yīng)的區(qū)的模塊1106查詢其維
表,獲得與同租戶相對(duì)應(yīng)的租戶實(shí)體相對(duì)應(yīng)的區(qū)信息。在步驟S1006 由查詢優(yōu)化器505對(duì)數(shù)據(jù)庫(kù)存儲(chǔ)空間上與同租戶相對(duì)應(yīng)的租戶實(shí)體相 對(duì)應(yīng)的區(qū)執(zhí)行查詢。在步驟S1007向租戶返回查詢結(jié)果。
圖10是本發(fā)明概括后的方法流程圖。如圖10所示,本發(fā)明的面 向多租戶的數(shù)據(jù)庫(kù)管理方法可以概括為如下接收租戶數(shù)據(jù)訪問(wèn)請(qǐng)求 (S1001);確定與該租戶相對(duì)應(yīng)的租戶實(shí)體,其中多個(gè)租戶實(shí)體共 享數(shù)據(jù)庫(kù)中的一張邏輯表(如圖6中的R表或T表)(S1002 );根 據(jù)租戶實(shí)體的配置信息處理租戶的數(shù)據(jù)訪問(wèn)請(qǐng)求(S1003)。
上面已通過(guò)示例性實(shí)施例詳細(xì)示出本發(fā)明。應(yīng)當(dāng)理解,上述實(shí)施 例僅是示例性的,而非限制性的。本領(lǐng)域技術(shù)人員可以對(duì)上述實(shí)施例 進(jìn)行多種修改、改變和替換,而不脫離由本發(fā)明的權(quán)利要求所限定的 精神和范圍。
權(quán)利要求
1. 一種面向多租戶的數(shù)據(jù)庫(kù)數(shù)據(jù)訪問(wèn)方法,包括接收租戶數(shù)據(jù)訪問(wèn)請(qǐng)求;確定與該租戶相對(duì)應(yīng)的租戶實(shí)體,其中多個(gè)租戶實(shí)體共享數(shù)據(jù)庫(kù)中的一張邏輯表;根據(jù)租戶實(shí)體的配置信息處理租戶的數(shù)據(jù)訪問(wèn)請(qǐng)求。
2. 根據(jù)權(quán)利要求l的方法,其中接收租戶數(shù)據(jù)訪問(wèn)請(qǐng)求的步驟包括接收多個(gè)租戶分別采用獨(dú)立的賬號(hào)向所述數(shù)據(jù)庫(kù)中的 一 張邏輯表發(fā)出的數(shù)據(jù)訪問(wèn)請(qǐng)求。
3. 根據(jù)權(quán)利要求l的方法,包括存儲(chǔ)并維護(hù)租戶賬號(hào)與其所對(duì)應(yīng)的租戶實(shí)體的對(duì)應(yīng)關(guān)系,其中確定與該租戶相對(duì)應(yīng)的租戶實(shí)體的步驟包括當(dāng)接收到租戶對(duì)數(shù)據(jù)庫(kù)的訪問(wèn)請(qǐng)求時(shí),根據(jù)租戶賬號(hào)查找所迷對(duì)應(yīng)關(guān)系,獲知與租戶賬號(hào)所對(duì)應(yīng)的租戶實(shí)體。
4. 根據(jù)權(quán)利要求l的方法,包括存儲(chǔ)并維護(hù)租戶實(shí)體訪問(wèn)權(quán)限,其中根據(jù)租戶實(shí)體的配置信息處理租戶請(qǐng)求的步驟包括當(dāng)接收到租戶對(duì)數(shù)據(jù)庫(kù)的訪問(wèn)請(qǐng)求時(shí),查詢租戶實(shí)體訪問(wèn)權(quán)限,當(dāng)查詢出租戶實(shí)體具有對(duì)數(shù)據(jù)庫(kù)的訪問(wèn)權(quán)限時(shí)允許該租戶訪問(wèn)數(shù)據(jù)庫(kù),并且只允許該租戶操作與其租戶實(shí)體相對(duì)應(yīng)的數(shù)據(jù)。
5. 根據(jù)權(quán)利要求1的方法,還包括將數(shù)據(jù)庫(kù)存儲(chǔ)空間分成多個(gè)區(qū),每個(gè)區(qū)記錄一個(gè)租戶實(shí)體的數(shù)據(jù),其中根據(jù)租戶實(shí)體的配置信息處理租戶請(qǐng)求的步驟包括將租戶請(qǐng)求引導(dǎo)到數(shù)據(jù)庫(kù)存儲(chǔ)空間內(nèi)與租戶實(shí)體對(duì)應(yīng)的區(qū)。
6. 根據(jù)權(quán)利要求l的方法,還包括為每個(gè)租戶實(shí)體指定優(yōu)先級(jí),其中根據(jù)租戶實(shí)體的配置信息處理租戶請(qǐng)求的步驟還包括采用服務(wù)質(zhì)量管理策略來(lái)調(diào)度具有不同優(yōu)先級(jí)的各個(gè)租戶實(shí)體所發(fā)出的訪問(wèn)請(qǐng)求。
7. 根據(jù)權(quán)利要求l的方法,還包括定義管理員實(shí)體,管理員實(shí)體對(duì)數(shù)據(jù)庫(kù)存儲(chǔ)空間中的屬于任何租戶實(shí)體的記錄都有訪問(wèn)權(quán)限。
8. 根據(jù)權(quán)利要求7的方法,還包括當(dāng)接收到來(lái)自管理員實(shí)體的對(duì)數(shù)據(jù)庫(kù)存儲(chǔ)空間的訪問(wèn)請(qǐng)求時(shí),允許管理員實(shí)體訪問(wèn)數(shù)據(jù)庫(kù)存儲(chǔ)空間中屬于任何租戶實(shí)體的記錄。
9. 根據(jù)權(quán)利要求8的方法,還包括在向所述管理員實(shí)體返回所訪問(wèn)的記錄的同時(shí),在所述記錄上加該記錄所屬于的租戶實(shí)體的標(biāo)識(shí)信息。
10. 根據(jù)權(quán)利要求7的方法,還包括管理員實(shí)體具有最高的優(yōu)先級(jí)。
11. 根據(jù)權(quán)利要求l的方法,還包括為每個(gè)租戶實(shí)體和管理員實(shí)體單獨(dú)維護(hù)該實(shí)體的配置信息。
12. —種面向多租戶的數(shù)據(jù)庫(kù)引擎,包括匹配識(shí)別模塊(401),其將租戶賬號(hào)與租戶實(shí)體進(jìn)行匹配,識(shí)別出與發(fā)出請(qǐng)求的租戶的賬號(hào)相對(duì)應(yīng)的租戶實(shí)體;訪問(wèn)控制管理器(503 ),其維護(hù)每一租戶實(shí)體的相關(guān)訪問(wèn)權(quán)限,根據(jù)匹配識(shí)別模板識(shí)別出的租戶實(shí)體,判斷出該租戶實(shí)體是否有對(duì)數(shù)據(jù)庫(kù)的訪問(wèn)權(quán)限。
13. 根據(jù)權(quán)利要求12的數(shù)據(jù)庫(kù)引擎,還包括查詢優(yōu)化器(505),其首先根據(jù)識(shí)別出的租戶實(shí)體將租戶對(duì)數(shù)據(jù)庫(kù)的訪問(wèn)請(qǐng)求引導(dǎo)到數(shù)據(jù)庫(kù)存儲(chǔ)空間內(nèi)與租戶實(shí)體對(duì)應(yīng)的區(qū),然后在該區(qū)內(nèi)搜索定位目標(biāo)記錄。
14. 根據(jù)權(quán)利要求13的數(shù)據(jù)庫(kù)引擎,其中定義管理員實(shí)體,所述匹配識(shí)別模塊(401)也將管理員賬號(hào)與管理員實(shí)體進(jìn)行匹配,當(dāng)判斷出請(qǐng)求所具有的賬號(hào)為管理員賬號(hào)時(shí),識(shí)別出該請(qǐng)求與管理員實(shí)體相對(duì)應(yīng),訪問(wèn)控制管理器(503 )允許管理員實(shí)體對(duì)數(shù)據(jù)庫(kù)存儲(chǔ)空間中的屬于任何租戶實(shí)體的記錄進(jìn)行訪問(wèn),查詢優(yōu)化器(505)在整個(gè)數(shù)據(jù)庫(kù)存儲(chǔ)空間中搜索定位目標(biāo)記錄。
15. 根據(jù)權(quán)利要求14的數(shù)據(jù)庫(kù)引擎,其特征在于,所述查詢優(yōu)化器(505 )包括服務(wù)質(zhì)量控制模塊(1104 ),服務(wù)質(zhì)量控制模塊(1104 )采用服務(wù)質(zhì)量管理策略來(lái)調(diào)度具有不同優(yōu)先級(jí)的租戶實(shí)體和管理員實(shí)體所發(fā)出的訪問(wèn)請(qǐng)求。
16. 根據(jù)權(quán)利要求14的數(shù)據(jù)庫(kù)引擎,其特征在于,所述匹配識(shí)別模塊(401)存儲(chǔ)并維護(hù)租戶/管理員賬號(hào)與租戶/管理員實(shí)體的對(duì)應(yīng)關(guān)系,當(dāng)接收到對(duì)數(shù)據(jù)庫(kù)的帶有租戶/管理員賬號(hào)的訪問(wèn)請(qǐng)求時(shí),查找所述對(duì)應(yīng)關(guān)系,獲知所對(duì)應(yīng)的租戶/管理員實(shí)體。
17. 根據(jù)權(quán)利要求14的數(shù)據(jù)庫(kù)引擎,其特征在于,在訪問(wèn)控制管理器(503)中為租戶/管理員實(shí)體單獨(dú)維護(hù)該租戶/管理員實(shí)體的配置信息。
18. 根據(jù)權(quán)利要求14的數(shù)據(jù)庫(kù)引擎,其特征在于,所述查詢優(yōu)化器(505 )查找到目標(biāo)記錄后,將該目標(biāo)記錄所屬的租戶實(shí)體的標(biāo)識(shí)信息添加到目標(biāo)記錄上后返回。
全文摘要
一種面向多租戶的數(shù)據(jù)庫(kù)引擎及其數(shù)據(jù)訪問(wèn)方法。本發(fā)明的方法包括接收租戶數(shù)據(jù)訪問(wèn)請(qǐng)求;確定與該租戶相對(duì)應(yīng)的租戶實(shí)體,其中多個(gè)租戶實(shí)體共享數(shù)據(jù)庫(kù)中的一張邏輯表;根據(jù)租戶實(shí)體的配置信息處理租戶的數(shù)據(jù)訪問(wèn)請(qǐng)求。本發(fā)明在數(shù)據(jù)庫(kù)中引入了租戶實(shí)體的概念多個(gè)租戶實(shí)體共享一張邏輯表,降低了開發(fā)和管理的成本;同時(shí)每個(gè)租戶實(shí)體都擁有獨(dú)立的數(shù)據(jù)庫(kù)訪問(wèn)賬號(hào),解決了數(shù)據(jù)庫(kù)訪問(wèn)的安全性問(wèn)題。當(dāng)租戶請(qǐng)求到來(lái)時(shí),將根據(jù)租戶的賬號(hào)的權(quán)限來(lái)處理租戶的數(shù)據(jù)訪問(wèn)請(qǐng)求。由于本發(fā)明引入的租戶實(shí)體的概念,為使租戶的數(shù)據(jù)在物理上相互分開從而為提高性能和良好的隔離性、可擴(kuò)展性提供了可能,同時(shí)為實(shí)現(xiàn)面向租戶的服務(wù)質(zhì)量管理提供了可能。
文檔編號(hào)G06F17/30GK101499061SQ20081000447
公開日2009年8月5日 申請(qǐng)日期2008年1月30日 優(yōu)先權(quán)日2008年1月30日
發(fā)明者偉 孫, 王芝虎, 郭常杰, 波 高 申請(qǐng)人:國(guó)際商業(yè)機(jī)器公司