一種多租戶共享數(shù)據(jù)庫的方法和多租戶數(shù)據(jù)庫即服務系統(tǒng)的制作方法
【專利摘要】本發(fā)明公開了一種多租戶數(shù)據(jù)庫即服務系統(tǒng),該系統(tǒng)包括:應用層模塊,用于接收客戶端的指令,在應用層建立和維護租戶的邏輯數(shù)據(jù)庫信息,向數(shù)據(jù)管理層模塊發(fā)送第一指令;數(shù)據(jù)管理層模塊,用于根據(jù)所述第一指令建立和維護應用層的邏輯數(shù)據(jù)庫信息到基礎設施層的物理數(shù)據(jù)庫實例信息的映射,向基礎設施層模塊發(fā)送第二指令;基礎設施層模塊,用于根據(jù)所述第二指令的指示基于虛擬機創(chuàng)建基礎設施層的物理數(shù)據(jù)庫實例,或者根據(jù)所述第二指令的指示對所述物理數(shù)據(jù)庫實例進行數(shù)據(jù)操作。本發(fā)明能夠實現(xiàn)租戶之間的性能隔離,保障租戶的性能需求。本發(fā)明還提供了一種多租戶共享數(shù)據(jù)庫的方法。
【專利說明】一種多租戶共享數(shù)據(jù)庫的方法和多租戶數(shù)據(jù)庫即服務系統(tǒng)
【技術領域】
[0001]本發(fā)明涉及云計算【技術領域】,尤其涉及的是一種多租戶共享數(shù)據(jù)庫的方法和多租戶數(shù)據(jù)庫即服務DBaaS (Database as a Service)系統(tǒng)。
【背景技術】
[0002]隨著云計算技術的發(fā)展,傳統(tǒng)軟件層次棧中的操作系統(tǒng)、中間件和應用紛紛在云中找到了位置,出現(xiàn)了基礎設施即服務(IaaS)、平臺即服務(PaaS)和軟件即服務(SaaS)模式。實際上,承載信息的數(shù)據(jù)庫也非常適合構建在云數(shù)據(jù)中心。傳統(tǒng)數(shù)據(jù)庫托管服務以物理機為單位部署租戶的數(shù)據(jù)庫,隨著應用的深入,暴露出資源利用不均衡和維護管理困難等問題。以數(shù)據(jù)庫即服務(Database as a Service,DBaaS)模式將各租戶的數(shù)據(jù)庫集中托管起來,通過共享服務器實現(xiàn)資源的優(yōu)化利用,降低軟硬件成本和維護管理開銷,是解決上述問題的理想方案。
[0003]在多個租戶數(shù)據(jù)庫之間共享服務器以提高系統(tǒng)資源利用率是DBaaS模式的核心追求。現(xiàn)有的共享數(shù)據(jù)庫方案使多個租戶的數(shù)據(jù)庫共存在同一臺服務器的同一數(shù)據(jù)庫引擎上,雖然能夠提高資源的利用率,但租戶數(shù)據(jù)庫的性能隔離得不到保障,某些租戶的請求負載可能占用大部分系統(tǒng)資源,造成資源劫持。。
[0004]因此,現(xiàn)有的多租戶數(shù)據(jù)庫即服務DBaaS系統(tǒng)中,租戶之間互相影響,租戶的性能需求沒有得到有力地保障。
【發(fā)明內容】
[0005]本發(fā)明所要解決的技術問題是提供一種多租戶共享數(shù)據(jù)庫的方法和多租戶數(shù)據(jù)庫即服務DBaaS系統(tǒng),能夠實現(xiàn)租戶之間的性能隔離,保障租戶的性能需求。
[0006]為了解決上述技術問題,本發(fā)明提供了一種多租戶數(shù)據(jù)庫即服務系統(tǒng),該系統(tǒng)包括:
[0007]應用層模塊,用于接收客戶端的指令,在應用層建立和維護租戶的邏輯數(shù)據(jù)庫信息,向數(shù)據(jù)管理層模塊發(fā)送第一指令;
[0008]數(shù)據(jù)管理層模塊,用于根據(jù)所述第一指令建立和維護應用層的邏輯數(shù)據(jù)庫信息到基礎設施層的物理數(shù)據(jù)庫實例信息的映射,向基礎設施層模塊發(fā)送第二指令;
[0009]基礎設施層模塊,用于根據(jù)所述第二指令的指示基于虛擬機創(chuàng)建基礎設施層的物理數(shù)據(jù)庫實例,或者根據(jù)所述第二指令的指示對所述物理數(shù)據(jù)庫實例進行數(shù)據(jù)操作。
[0010]進一步地,該系統(tǒng)還包括下述特點:
[0011]所述物理數(shù)據(jù)庫實例信息包括以下信息的一種或多種:物理數(shù)據(jù)庫實例的IP地址、物理數(shù)據(jù)庫實例的端口、物理數(shù)據(jù)庫實例標識、租戶標識、物理數(shù)據(jù)庫實例密碼或宿主虛擬機信息。
[0012]進一步地,該系統(tǒng)還包括下述特點:
[0013]所述第一指令,包括以下指令的任意一種:創(chuàng)建物理數(shù)據(jù)庫實例、刪除物理數(shù)據(jù)庫實例、存儲數(shù)據(jù)或查詢數(shù)據(jù)。
[0014]進一步地,該系統(tǒng)還包括下述特點:
[0015]數(shù)據(jù)管理層模塊,用于接收到應用層模塊發(fā)送的創(chuàng)建物理數(shù)據(jù)庫實例的第一指令后,建立和維護應用層的邏輯數(shù)據(jù)庫信息到基礎設施層的物理數(shù)據(jù)庫實例信息的映射,包括:
[0016]根據(jù)基礎設施層物理服務器資源的空閑程度,優(yōu)先在空閑程度高的物理服務器上創(chuàng)建虛擬機;
[0017]根據(jù)租戶的邏輯數(shù)據(jù)庫信息在虛擬機上創(chuàng)建物理數(shù)據(jù)庫實例;
[0018]保存創(chuàng)建的物理數(shù)據(jù)庫實例與租戶的邏輯數(shù)據(jù)庫的映射關系。
[0019]進一步地,該系統(tǒng)還包括下述特點:
[0020]數(shù)據(jù)管理層模塊,用于接收到應用層模塊發(fā)送的查詢/存儲數(shù)據(jù)的第一指令后,建立和維護應用層的邏輯數(shù)據(jù)庫信息到基礎設施層的物理數(shù)據(jù)庫實例信息的映射,包括:
[0021]根據(jù)租戶的邏輯數(shù)據(jù)庫信息選擇物理數(shù)據(jù)庫實例列表,父線程根據(jù)所述映射關系選擇邏輯數(shù)據(jù)庫對應的物理數(shù)據(jù)庫實例,針對每個物理數(shù)據(jù)庫實例啟動一個子進行線程數(shù)據(jù)查詢/存儲。
[0022]進一步地,該系統(tǒng)還包括下述特點:
[0023]所述映射的類型包括:哈希路由映射或二分查找路由映射。
[0024]進一步地,該系統(tǒng)還包括下述特點:
[0025]租戶的邏輯數(shù)據(jù)庫基于關系模型建立,包括以下元數(shù)據(jù)信息的一種或多種:租戶信息、數(shù)據(jù)庫描述信息、數(shù)據(jù)表描述信息、數(shù)據(jù)表結構信息或數(shù)據(jù)表關系信息。
[0026]為了解決上述技術問題,本發(fā)明還提供了一種多租戶共享數(shù)據(jù)庫的方法,該方法包括:
[0027]應用層模塊接收客戶端的指令,在應用層建立和維護租戶的邏輯數(shù)據(jù)庫信息,向數(shù)據(jù)管理層模塊發(fā)送第一指令;
[0028]數(shù)據(jù)管理層模塊根據(jù)所述第一指令建立和維護應用層的邏輯數(shù)據(jù)庫信息到基礎設施層的物理數(shù)據(jù)庫實例信息的映射,向基礎設施層模塊發(fā)送第二指令;
[0029]基礎設施層模塊根據(jù)所述第二指令的指示基于虛擬機創(chuàng)建基礎設施層的物理數(shù)據(jù)庫實例,或者根據(jù)所述第二指令的指示對所述物理數(shù)據(jù)庫實例進行數(shù)據(jù)操作。
[0030]進一步地,該方法還包括下述特點:
[0031]所述物理數(shù)據(jù)庫實例信息包括以下信息的一種或多種:物理數(shù)據(jù)庫實例的IP地址、物理數(shù)據(jù)庫實例的端口、物理數(shù)據(jù)庫實例標識、租戶標識、物理數(shù)據(jù)庫實例密碼或宿主虛擬機信息。
[0032]進一步地,該方法還包括下述特點:
[0033]所述第一指令,包括以下指令的任意一種:創(chuàng)建物理數(shù)據(jù)庫實例、刪除物理數(shù)據(jù)庫實例、存儲數(shù)據(jù)或查詢數(shù)據(jù)。
[0034]進一步地,該方法還包括下述特點:
[0035]數(shù)據(jù)管理層模塊接收到應用層模塊發(fā)送的創(chuàng)建物理數(shù)據(jù)庫實例的第一指令后,建立和維護應用層的邏輯數(shù)據(jù)庫信息到基礎設施層的物理數(shù)據(jù)庫實例信息的映射,包括:
[0036]根據(jù)基礎設施層物理服務器資源的空閑程度,優(yōu)先在空閑程度高的物理服務器上創(chuàng)建虛擬機;
[0037]根據(jù)租戶的邏輯數(shù)據(jù)庫信息在虛擬機上創(chuàng)建物理數(shù)據(jù)庫實例;
[0038]保存創(chuàng)建的物理數(shù)據(jù)庫實例與租戶的邏輯數(shù)據(jù)庫的映射關系。
[0039]進一步地,該方法還包括下述特點:
[0040]數(shù)據(jù)管理層模塊接收到應用層模塊發(fā)送的查詢/存儲數(shù)據(jù)的第一指令后,建立和維護應用層的邏輯數(shù)據(jù)庫信息到基礎設施層的物理數(shù)據(jù)庫實例信息的映射,包括:
[0041]根據(jù)租戶的邏輯數(shù)據(jù)庫信息選擇物理數(shù)據(jù)庫實例列表,父線程根據(jù)所述映射關系選擇邏輯數(shù)據(jù)庫對應的物理數(shù)據(jù)庫實例,針對每個物理數(shù)據(jù)庫實例啟動一個子線程進行數(shù)據(jù)查詢。
[0042]進一步地,該方法還包括下述特點:
[0043]所述映射的類型包括:哈希路由映射或二分查找路由映射。
[0044]進一步地,該方法還包括下述特點:
[0045]租戶的邏輯數(shù)據(jù)庫基于關系模型建立,包括以下元數(shù)據(jù)信息的一種或多種:租戶信息、數(shù)據(jù)庫描述信息、數(shù)據(jù)表描述信息、數(shù)據(jù)表結構信息或數(shù)據(jù)表關系信息。
[0046]與現(xiàn)有技術相比,本發(fā)明提供的一種多租戶共享數(shù)據(jù)庫的方法和多租戶數(shù)據(jù)庫即服務DBaaS系統(tǒng),通過將各租戶對邏輯數(shù)據(jù)庫的操作轉換為對虛擬機上的物理數(shù)據(jù)庫實例的虛擬化操作,能夠實現(xiàn)租戶之間的性能隔離,保障租戶的性能需求。
【專利附圖】
【附圖說明】
[0047]圖1為本發(fā)明實施例的一種多租戶數(shù)據(jù)庫即服務系統(tǒng)的結構示意圖。
[0048]圖2為本發(fā)明實施例的一種多租戶數(shù)據(jù)庫即服務系統(tǒng)的詳細結構示意圖。
[0049]圖3為本發(fā)明實施例的一種多租戶共享數(shù)據(jù)庫的方法的流程圖。
【具體實施方式】
[0050]為使本發(fā)明的目的、技術方案和優(yōu)點更加清楚明白,下文中將結合附圖對本發(fā)明的實施例進行詳細說明。需要說明的是,在不沖突的情況下,本申請中的實施例及實施例中的特征可以相互任意組合。
[0051]為保障多租戶數(shù)據(jù)庫即服務DBaaS系統(tǒng)中租戶的性能需求,基于虛擬機技術,如VMware, Xen等,能夠將物理服務器系統(tǒng)資源(CPU時間、內存容量和I/O帶寬等)按比例分配給互不干擾的虛擬機,通過關系模型實現(xiàn)各租戶的邏輯數(shù)據(jù)庫表示,將邏輯數(shù)據(jù)庫操作映射到虛擬機上的物理數(shù)據(jù)庫操作,能夠實現(xiàn)租戶之間的性能隔離。
[0052]如圖1所示,本發(fā)明實施例提供了一種基于虛擬機的多租戶DBaaS系統(tǒng),包括應用層模塊,數(shù)據(jù)管理層模塊和基礎設施層模塊;其中,
[0053]應用層模塊,用于接收客戶端的指令,在應用層建立和維護租戶的邏輯數(shù)據(jù)庫信息,向數(shù)據(jù)管理層模塊發(fā)送第一指令;
[0054]數(shù)據(jù)管理層模塊,用于根據(jù)所述第一指令建立和維護應用層的邏輯數(shù)據(jù)庫信息到基礎設施層的物理數(shù)據(jù)庫實例信息的映射,向基礎設施層模塊發(fā)送第二指令;
[0055]基礎設施層模塊,用于根據(jù)所述第二指令的指示基于虛擬機創(chuàng)建基礎設施層的物理數(shù)據(jù)庫實例,或者根據(jù)所述第二指令的指示對所述物理數(shù)據(jù)庫實例進行數(shù)據(jù)操作。[0056]圖2示出了一種多租戶DBaaS系統(tǒng)。其中,數(shù)據(jù)管理層模塊通過應用層與數(shù)據(jù)管理層之間的接口( I)接收應用層發(fā)送的數(shù)據(jù)操作指令,在進行解析和處理后通過數(shù)據(jù)管理層與基礎設施層之間的接口(3)發(fā)送給基礎設施層進行物理數(shù)據(jù)庫的操作;數(shù)據(jù)管理層模塊通過應用層與數(shù)據(jù)管理層之間的接口(2)獲得租戶在應用層的邏輯數(shù)據(jù)庫信息,以指示基礎設施層模塊創(chuàng)建物理數(shù)據(jù)庫實例;數(shù)據(jù)管理層模塊通過數(shù)據(jù)管理層與基礎設施層之間的接口(3)獲得基礎設施層的物理數(shù)據(jù)庫實例信息;
[0057]圖2中,設備集群是指承載各種計算、存儲和網(wǎng)絡物理設備集合,也稱為物理資源池。虛擬機是指從物理資源池中劃分出一部分資源形成的虛擬設備。物理數(shù)據(jù)庫實例是指應用層邏輯數(shù)據(jù)庫的物理實現(xiàn),依托于在虛擬機上部署、運行的數(shù)據(jù)庫管理系統(tǒng)或數(shù)據(jù)庫引擎,由物理數(shù)據(jù)模型(表、字段等)構成。一個租戶的邏輯數(shù)據(jù)庫可能需要多個物理數(shù)據(jù)庫實例來實現(xiàn),一個物理數(shù)據(jù)庫實例運行于一個虛擬機上。
[0058]上述多租戶DBaaS系統(tǒng),還可以具有以下的特點:
[0059]優(yōu)選地,租戶的邏輯數(shù)據(jù)庫基于關系模型建立,可以包括以下元數(shù)據(jù)信息的一種或多種:租戶信息、數(shù)據(jù)庫描述信息、數(shù)據(jù)表描述信息、數(shù)據(jù)表結構信息或數(shù)據(jù)表關系信息;
[0060]所述物理數(shù)據(jù)庫實例基于虛擬機建立,可以包括以下信息的一種或多種:物理數(shù)據(jù)庫實例的IP地址、物理數(shù)據(jù)庫實例的端口、物理數(shù)據(jù)庫實例標識、租戶標識、物理數(shù)據(jù)庫實例密碼或宿主虛擬機信息;
[0061]應用層的邏輯數(shù)據(jù)庫信息到基礎設施層的物理數(shù)據(jù)庫實例信息的映射信息,可以包括以下信息:租戶的邏輯數(shù)據(jù)庫標識、物理數(shù)據(jù)庫實例標識和映射規(guī)則。
[0062]其中,一個邏輯數(shù)據(jù)庫可以包括多張數(shù)據(jù)表,數(shù)據(jù)表之間的引用關系記錄于數(shù)據(jù)表關系信息中。租戶的邏輯數(shù)據(jù)庫標識可以包含租戶的標識,比如,租戶的邏輯數(shù)據(jù)庫標識記為“租戶標識_邏輯數(shù)據(jù)庫名”;比如,若租戶A建立了邏輯數(shù)據(jù)庫a,則該邏輯數(shù)據(jù)庫命名為“A_a”,若租戶B建立了邏輯數(shù)據(jù)庫b,則該邏輯數(shù)據(jù)庫命名為“B_b” ;
[0063]優(yōu)選地,所述第一指令,包括以下指令的任意一種:創(chuàng)建物理數(shù)據(jù)庫實例、刪除物理數(shù)據(jù)庫實例、存儲數(shù)據(jù)或查詢數(shù)據(jù)。
[0064]優(yōu)選地,數(shù)據(jù)管理層模塊接收到應用層模塊發(fā)送的創(chuàng)建物理數(shù)據(jù)庫實例的第一指令后,建立和維護應用層的邏輯數(shù)據(jù)庫信息到基礎設施層的物理數(shù)據(jù)庫實例信息的映射,包括:
[0065]根據(jù)基礎設施層物理服務器資源的空閑程度,優(yōu)先在空閑程度高的物理服務器上創(chuàng)建虛擬機;
[0066]根據(jù)租戶的邏輯數(shù)據(jù)庫信息在虛擬機上創(chuàng)建物理數(shù)據(jù)庫實例;
[0067]保存創(chuàng)建的物理數(shù)據(jù)庫實例與租戶的邏輯數(shù)據(jù)庫的映射關系。
[0068]優(yōu)選地,數(shù)據(jù)管理層模塊接收到應用層模塊發(fā)送的查詢數(shù)據(jù)的第一指令后,建立和維護應用層的邏輯數(shù)據(jù)庫信息到基礎設施層的物理數(shù)據(jù)庫實例信息的映射,包括:
[0069]根據(jù)租戶的邏輯數(shù)據(jù)庫信息選擇物理數(shù)據(jù)庫實例列表,父線程根據(jù)數(shù)據(jù)庫映射規(guī)則選擇邏輯數(shù)據(jù)庫對應的物理數(shù)據(jù)庫實例,針對每個物理數(shù)據(jù)庫實例啟動一個子線程進行數(shù)據(jù)查詢,父線程合并查詢結果并返回;
[0070]優(yōu)選地,數(shù)據(jù)管理層模塊接收到應用層模塊發(fā)送的存儲數(shù)據(jù)的第一指令后,建立和維護應用層的邏輯數(shù)據(jù)庫信息到基礎設施層的物理數(shù)據(jù)庫實例信息的映射,包括:
[0071]根據(jù)租戶的邏輯數(shù)據(jù)庫信息選擇物理數(shù)據(jù)庫實例列表,父線程根據(jù)數(shù)據(jù)庫映射規(guī)則選擇邏輯數(shù)據(jù)庫對應的物理數(shù)據(jù)庫實例,針對每個物理數(shù)據(jù)庫實例啟動一個子進行線程數(shù)據(jù)存儲;
[0072]其中,所述映射的類型包括:哈希(Hash)路由映射或二分查找路由映射;
[0073]優(yōu)選地,數(shù)據(jù)管理層模塊還建立、維護物理數(shù)據(jù)庫連接池;數(shù)據(jù)管理層模塊接收到應用層模塊通過JDBC (Java Data Base Connectivity, Java數(shù)據(jù)庫連接)驅動發(fā)送的第一指令后,從物理數(shù)據(jù)庫連接池中選擇一個連接使用,從而節(jié)省物理連接的建立開銷;
[0074]優(yōu)選地,數(shù)據(jù)管理層模塊還建立、維護客戶端連接池;數(shù)據(jù)管理層模塊接收到應用層模塊通過JDBC驅動發(fā)送的第一指令后,從客戶端連接池中選擇一個連接使用,從而節(jié)省線程的創(chuàng)建開銷。
[0075]如圖3所示,本發(fā)明實施例提供了一種多租戶共享數(shù)據(jù)庫的方法,該方法包括:
[0076]S10,應用層模塊接收客戶端的指令,在應用層建立和維護租戶的邏輯數(shù)據(jù)庫信息,向數(shù)據(jù)管理層模塊發(fā)送第一指令;
[0077]S20,數(shù)據(jù)管理層模塊根據(jù)所述第一指令建立和維護應用層的邏輯數(shù)據(jù)庫信息到基礎設施層的物理數(shù)據(jù)庫實例信息的映射,向基礎設施層模塊發(fā)送第二指令;
[0078]S30,基礎設施層模塊根據(jù)所述第二指令的指示基于虛擬機創(chuàng)建基礎設施層的物理數(shù)據(jù)庫實例,或者根據(jù)所述第二指令的指示對所述物理數(shù)據(jù)庫實例進行數(shù)據(jù)操作;
[0079]其中,所述多租戶共享數(shù)據(jù)庫的方法,還可以包括下述特點:
[0080]優(yōu)選地,租戶的邏輯數(shù)據(jù)庫基于關系模型建立,可以包括以下元數(shù)據(jù)信息的一種或多種:租戶信息、數(shù)據(jù)庫描述信息、數(shù)據(jù)表描述信息、數(shù)據(jù)表結構信息或數(shù)據(jù)表關系信息;
[0081]所述物理數(shù)據(jù)庫實例基于虛擬機建立,可以包括以下信息的一種或多種:物理數(shù)據(jù)庫實例的IP地址、物理數(shù)據(jù)庫實例的端口、物理數(shù)據(jù)庫實例標識、租戶標識、物理數(shù)據(jù)庫實例密碼或宿主虛擬機信息;
[0082]應用層的邏輯數(shù)據(jù)庫信息到基礎設施層的物理數(shù)據(jù)庫實例信息的映射信息,包括以下信息:租戶的邏輯數(shù)據(jù)庫標識、物理數(shù)據(jù)庫實例標識和映射規(guī)則。
[0083]優(yōu)選地,所述第一指令,包括以下指令的任意一種:創(chuàng)建物理數(shù)據(jù)庫實例、刪除物理數(shù)據(jù)庫實例、存儲數(shù)據(jù)或查詢數(shù)據(jù);
[0084]數(shù)據(jù)管理層模塊接收到應用層模塊發(fā)送的創(chuàng)建物理數(shù)據(jù)庫實例的第一指令后,建立和維護應用層的邏輯數(shù)據(jù)庫信息到基礎設施層的物理數(shù)據(jù)庫實例信息的映射,包括:
[0085]根據(jù)基礎設施層物理服務器資源的空閑程度,優(yōu)先在空閑程度高的物理服務器上創(chuàng)建虛擬機;
[0086]根據(jù)租戶的邏輯數(shù)據(jù)庫信息在虛擬機上創(chuàng)建物理數(shù)據(jù)庫實例;
[0087]保存創(chuàng)建的物理數(shù)據(jù)庫實例與租戶的邏輯數(shù)據(jù)庫的映射關系。
[0088]優(yōu)選地,數(shù)據(jù)管理層模塊接收到應用層模塊發(fā)送的查詢數(shù)據(jù)的第一指令后,建立和維護應用層的邏輯數(shù)據(jù)庫信息到基礎設施層的物理數(shù)據(jù)庫實例信息的映射,包括:
[0089]根據(jù)租戶的邏輯數(shù)據(jù)庫信息選擇物理數(shù)據(jù)庫實例列表,父線程根據(jù)數(shù)據(jù)庫映射規(guī)則選擇邏輯數(shù)據(jù)庫對應的物理數(shù)據(jù)庫實例,針對每個物理數(shù)據(jù)庫實例啟動一個子線程進行數(shù)據(jù)查詢,父線程合并查詢結果并返回;
[0090]優(yōu)選地,數(shù)據(jù)管理層模塊接收到應用層模塊發(fā)送的存儲數(shù)據(jù)的第一指令后,建立和維護應用層的邏輯數(shù)據(jù)庫信息到基礎設施層的物理數(shù)據(jù)庫實例信息的映射,包括:
[0091]根據(jù)租戶的邏輯數(shù)據(jù)庫信息選擇物理數(shù)據(jù)庫實例列表,父線程根據(jù)數(shù)據(jù)庫映射規(guī)則選擇邏輯數(shù)據(jù)庫對應的物理數(shù)據(jù)庫實例,針對每個物理數(shù)據(jù)庫實例啟動一個子線程進行數(shù)據(jù)存儲;
[0092]其中,所述映射的類型包括:哈希(Hash)路由映射或二分查找路由映射;
[0093]優(yōu)選地,數(shù)據(jù)管理層模塊還建立、維護物理數(shù)據(jù)庫連接池;數(shù)據(jù)管理層模塊接收到應用層模塊通過JDBC (Java Data Base Connectivity, Java數(shù)據(jù)庫連接)驅動發(fā)送的第一指令后,從物理數(shù)據(jù)庫連接池中選擇一個連接使用,從而節(jié)省物理連接的建立開銷;
[0094]優(yōu)選地,數(shù)據(jù)管理層模塊還建立、維護客戶端連接池;數(shù)據(jù)管理層模塊接收到應用層模塊通過JDBC驅動發(fā)送的第一指令后,從客戶端連接池中選擇一個連接使用,從而節(jié)省線程的創(chuàng)建開銷。
[0095]上述實施例提供的一種多租戶共享數(shù)據(jù)庫的方法和多租戶DBaaS系統(tǒng),通過對租戶邏輯數(shù)據(jù)庫信息的有效關系模型表示,將各租戶對應用層的邏輯數(shù)據(jù)庫操作映射到基礎設施層的虛擬機上的物理數(shù)據(jù)庫操作,通過虛擬機承載物理數(shù)據(jù)庫實現(xiàn)高效地虛擬化轉換,滿足了各租戶共享數(shù)據(jù)庫時的性能隔離。
[0096]本領域普通技術人員可以理解上述方法中的全部或部分步驟可通過程序來指令相關硬件完成,所述程序可以存儲于計算機可讀存儲介質中,如只讀存儲器、磁盤或光盤等??蛇x地,上述實施例的全部或部分步驟也可以使用一個或多個集成電路來實現(xiàn),相應地,上述實施例中的各模塊/單元可以采用硬件的形式實現(xiàn),也可以采用軟件功能模塊的形式實現(xiàn)。本發(fā)明不限制于任何特定形式的硬件和軟件的結合。
[0097]需要說明的是,本發(fā)明還可有其他多種實施例,在不背離本發(fā)明精神及其實質的情況下,熟悉本領域的技術人員可根據(jù)本發(fā)明作出各種相應的改變和變形,但這些相應的改變和變形都應屬于本發(fā)明所附的權利要求的保護范圍。
【權利要求】
1.一種多租戶數(shù)據(jù)庫即服務系統(tǒng),該系統(tǒng)包括: 應用層模塊,用于接收客戶端的指令,在應用層建立和維護租戶的邏輯數(shù)據(jù)庫信息,向數(shù)據(jù)管理層模塊發(fā)送第一指令; 數(shù)據(jù)管理層模塊,用于根據(jù)所述第一指令建立和維護應用層的邏輯數(shù)據(jù)庫信息到基礎設施層的物理數(shù)據(jù)庫實例信息的映射,向基礎設施層模塊發(fā)送第二指令; 基礎設施層模塊,用于根據(jù)所述第二指令的指示基于虛擬機創(chuàng)建基礎設施層的物理數(shù)據(jù)庫實例,或者根據(jù)所述第二指令的指示對所述物理數(shù)據(jù)庫實例進行數(shù)據(jù)操作。
2.如權利要求1所述的系統(tǒng),其特征在于: 所述物理數(shù)據(jù)庫實例信息包括以下信息的一種或多種:物理數(shù)據(jù)庫實例的IP地址、物理數(shù)據(jù)庫實例的端口、物理數(shù)據(jù)庫實例標識、租戶標識、物理數(shù)據(jù)庫實例密碼或宿主虛擬機信息。
3.如權利要求1或2所述的系統(tǒng),其特征在于: 所述第一指令,包括以下指令的任意一種:創(chuàng)建物理數(shù)據(jù)庫實例、刪除物理數(shù)據(jù)庫實例、存儲數(shù)據(jù)或查詢數(shù)據(jù)。
4.如權利要求3所述的系統(tǒng),其特征在于: 數(shù)據(jù)管理層模塊,用于接收到應用層模塊發(fā)送的創(chuàng)建物理數(shù)據(jù)庫實例的第一指令后,建立和維護應用層的邏輯數(shù)據(jù)庫信息到基礎設施層的物理數(shù)據(jù)庫實例信息的映射,包括:根據(jù)基礎設施層物理服務器資源的空閑程度,優(yōu)先在空閑程度高的物理服務器上創(chuàng)建虛擬機; 根據(jù)租戶的邏輯數(shù)據(jù)庫信息在虛擬機上創(chuàng)建物理數(shù)據(jù)庫實例; 保存創(chuàng)建的物理數(shù)據(jù)庫實例與租戶的邏輯數(shù)據(jù)庫的映射關系。
5.如權利要求3所述的系統(tǒng),其特征在于: 數(shù)據(jù)管理層模塊,用于接收到應用層模塊發(fā)送的查詢/存儲數(shù)據(jù)的第一指令后,建立和維護應用層的邏輯數(shù)據(jù)庫信息到基礎設施層的物理數(shù)據(jù)庫實例信息的映射,包括: 根據(jù)租戶的邏輯數(shù)據(jù)庫信息選擇物理數(shù)據(jù)庫實例列表,父線程根據(jù)所述映射關系選擇邏輯數(shù)據(jù)庫對應的物理數(shù)據(jù)庫實例,針對每個物理數(shù)據(jù)庫實例啟動一個子進行線程數(shù)據(jù)查詢/存儲。
6.如權利要求3所述的系統(tǒng),其特征在于: 所述映射的類型包括:哈希路由映射或二分查找路由映射。
7.如權利要求1或2所述的系統(tǒng),其特征在于: 租戶的邏輯數(shù)據(jù)庫基于關系模型建立,包括以下元數(shù)據(jù)信息的一種或多種:租戶信息、數(shù)據(jù)庫描述信息、數(shù)據(jù)表描述信息、數(shù)據(jù)表結構信息或數(shù)據(jù)表關系信息。
8.一種多租戶共享數(shù)據(jù)庫的方法,該方法包括: 應用層模塊接收客戶端的指令,在應用層建立和維護租戶的邏輯數(shù)據(jù)庫信息,向數(shù)據(jù)管理層模塊發(fā)送第一指令; 數(shù)據(jù)管理層模塊根據(jù)所述第一指令建立和維護應用層的邏輯數(shù)據(jù)庫信息到基礎設施層的物理數(shù)據(jù)庫實例信息的映射,向基礎設施層模塊發(fā)送第二指令; 基礎設施層模塊根據(jù)所述第二指令的指示基于虛擬機創(chuàng)建基礎設施層的物理數(shù)據(jù)庫實例,或者根據(jù)所述第二指令的指示對所述物理數(shù)據(jù)庫實例進行數(shù)據(jù)操作。
9.如權利要求8所述的方法,其特征在于: 所述物理數(shù)據(jù)庫實例信息包括以下信息的一種或多種:物理數(shù)據(jù)庫實例的IP地址、物理數(shù)據(jù)庫實例的端口、物理數(shù)據(jù)庫實例標識、租戶標識、物理數(shù)據(jù)庫實例密碼或宿主虛擬機信息。
10.如權利要求8或9所述的方法,其特征在于: 所述第一指令,包括以下指令的任意一種:創(chuàng)建物理數(shù)據(jù)庫實例、刪除物理數(shù)據(jù)庫實例、存儲數(shù)據(jù)或查詢數(shù)據(jù)。
11.如權利要求10所述的方法,其特征在于: 數(shù)據(jù)管理層模塊接收到應用層模塊發(fā)送的創(chuàng)建物理數(shù)據(jù)庫實例的第一指令后,建立和維護應用層的邏輯數(shù)據(jù)庫信息到基礎設施層的物理數(shù)據(jù)庫實例信息的映射,包括: 根據(jù)基礎設施層物理服務器資源的空閑程度,優(yōu)先在空閑程度高的物理服務器上創(chuàng)建虛擬機; 根據(jù)租戶的邏輯數(shù)據(jù)庫信息在虛擬機上創(chuàng)建物理數(shù)據(jù)庫實例; 保存創(chuàng)建的物理數(shù)據(jù)庫實例與租戶的邏輯數(shù)據(jù)庫的映射關系。
12.如權利要求10所述的方法,其特征在于: 數(shù)據(jù)管理層模塊接收到應用層模塊發(fā)送的查詢/存儲數(shù)據(jù)的第一指令后,建立和維護應用層的邏輯數(shù)據(jù)庫信息到基礎設施層的物理數(shù)據(jù)庫實例信息的映射,包括: 根據(jù)租戶的邏輯數(shù)據(jù)庫信息選擇物理數(shù)據(jù)庫實例列表,父線程根據(jù)所述映射關系選擇邏輯數(shù)據(jù)庫對應的物理數(shù)據(jù)庫實例,針對每個物理數(shù)據(jù)庫實例啟動一個子線程進行數(shù)據(jù)查詢。
13.如權利要求10所述的方法,其特征在于: 所述映射的類型包括:哈希路由映射或二分查找路由映射。
14.如權利要求8或9所述的方法,其特征在于: 租戶的邏輯數(shù)據(jù)庫基于關系模型建立,包括以下元數(shù)據(jù)信息的一種或多種:租戶信息、數(shù)據(jù)庫描述信息、數(shù)據(jù)表描述信息、數(shù)據(jù)表結構信息或數(shù)據(jù)表關系信息。
【文檔編號】G06F17/30GK103544319SQ201310544688
【公開日】2014年1月29日 申請日期:2013年11月6日 優(yōu)先權日:2013年11月6日
【發(fā)明者】亓開元, 張東, 劉正偉 申請人:浪潮(北京)電子信息產(chǎn)業(yè)有限公司