日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

使用mysql做saas_一种SaaS企业平台数据库系统及其连接方法与流程

發(fā)布時間:2024/9/15 数据库 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 使用mysql做saas_一种SaaS企业平台数据库系统及其连接方法与流程 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

本發(fā)明屬于數(shù)據(jù)庫領(lǐng)域,尤其涉及一種SaaS企業(yè)平臺數(shù)據(jù)庫及其連接方法。

背景技術(shù):

SaaS是Software-as-a-Service(軟件即服務(wù))的簡稱,隨著互聯(lián)網(wǎng)技術(shù)的發(fā)展和應(yīng)用軟件的成熟,在21世紀開始興起的一種完全創(chuàng)新的軟件應(yīng)用模式。它與“on-demand software”(按需軟件),the application service provider(ASP,應(yīng)用服務(wù)提供商),hosted software(托管軟件)所具有相似的含義。它是一種通過Internet提供軟件的模式,廠商將應(yīng)用軟件統(tǒng)一部署在自己的服務(wù)器上,客戶可以根據(jù)自己實際需求,通過互聯(lián)網(wǎng)向廠商定購所需的應(yīng)用軟件服務(wù),按定購的服務(wù)多少和時間長短向廠商支付費用,并通過互聯(lián)網(wǎng)獲得廠商提供的服務(wù)。用戶不用再購買軟件,而改用向提供商租用基于Web的軟件,來管理企業(yè)經(jīng)營活動,且無需對軟件進行維護,服務(wù)提供商會全權(quán)管理和維護軟件,軟件廠商在向客戶提供互聯(lián)網(wǎng)應(yīng)用的同時,也提供軟件的離線操作和本地數(shù)據(jù)存儲,讓用戶隨時隨地都可以使用其定購的軟件和服務(wù)。對于許多小型企業(yè)來說,SaaS是采用先進技術(shù)的最好途徑,它消除了企業(yè)購買、構(gòu)建和維護基礎(chǔ)設(shè)施和應(yīng)用程序的需要。

傳統(tǒng)的SaaS數(shù)據(jù)庫一般采用大型數(shù)據(jù)庫(ORACLE、DB2、SYBASE等),各企業(yè)間的數(shù)據(jù)采用表字段companyId的方式進行隔離,因各企業(yè)間業(yè)務(wù)不同,導致個性化定制開發(fā)困難,開發(fā)與維護高等問題,

技術(shù)實現(xiàn)要素:

為了解決現(xiàn)有技術(shù)中的上述問題,本發(fā)明提供了一種SaaS企業(yè)平臺數(shù)據(jù)庫及其連接方法。

本發(fā)明采用的技術(shù)方案具體如下:

一種SaaS企業(yè)平臺數(shù)據(jù)庫系統(tǒng),包括中心服務(wù)器和多個數(shù)據(jù)庫服務(wù)器,其中,所述中心服務(wù)器上具有中心庫,所述數(shù)據(jù)庫服務(wù)器上具有企業(yè)庫,所述中心庫用于存儲企業(yè)的注冊信息,在企業(yè)注冊后調(diào)用創(chuàng)建初始化數(shù)據(jù)庫服務(wù),在數(shù)據(jù)庫服務(wù)器上同步產(chǎn)生企業(yè)庫和表結(jié)構(gòu);當企業(yè)A的用戶需要使用數(shù)據(jù)庫時,其使用客戶端連接中心庫,并通過中心庫與企業(yè)A庫所在的數(shù)據(jù)庫服務(wù)器A建立加密連接,具體過程包括:

(1)企業(yè)A為其下屬的用戶生成密碼,設(shè)所述用戶的賬號為User,則該用戶的密碼PW通過下式計算:

PW=Encode(E(PrivateKeyA,User||Auth))

其中,PrivateKeyA是所述企業(yè)A的私鑰,Encode是Base64編碼函數(shù),Auth是企業(yè)A給予該用戶的對數(shù)據(jù)庫的訪問權(quán)限;E為加密函數(shù),其使用函數(shù)的第一個參數(shù)作為密鑰,對第二個參數(shù)進行加密;

(2)將所述密碼PW拆分成PW1和PW2兩部分,PW1由用戶保存,PW2保存在用戶使用的客戶端中;

(3)用戶使用客戶端連接中心服務(wù)器,并在客戶端中輸入PW1以及用戶賬號User,客戶端組合PW1和PW2以獲得用戶密碼PW;

(4)所述客戶端使用中心庫數(shù)字證書的公鑰加密PW,將加密結(jié)果和用戶賬號User發(fā)送給中心服務(wù)器;

(5)中心服務(wù)器上的中心庫接收到該加密結(jié)果后,使用其私鑰解密該加密結(jié)果,獲得PW;

(6)中心庫計算U=D(PublicKeyA,Decode(PW)),判斷U的前K個字符與User是否相等,如果不相等,則拒絕客戶端的連接,方法結(jié)束;如果相等,則客戶端認證通過,中心庫向客戶端返回認證通過消息,同時中心庫將U去除前K個字符后剩余的部分作為該用戶的數(shù)據(jù)庫訪問權(quán)限Auth;其中K是User的長度,PublicKeyA是企業(yè)A的公鑰,Decode是Base64解碼函數(shù);D是與E相對應(yīng)的解密函數(shù),其使用函數(shù)的第一個參數(shù)作為密鑰,對第二個參數(shù)進行解密;

(7)所述客戶端在接收到認證通過消息后,隨機生成一個對稱加密密鑰Key,將該密鑰Key用中心庫數(shù)字證書公鑰加密后,發(fā)送給中心服務(wù)器;

(8)中心庫將接收到的加密結(jié)果EncKey進行解密,獲得密鑰Key,將該密鑰Key、訪問權(quán)限Auth以及客戶端的網(wǎng)絡(luò)地址發(fā)送給企業(yè)A庫所在的數(shù)據(jù)庫服務(wù)器A;

(9)所述數(shù)據(jù)庫服務(wù)器A基于該密鑰Key,與客戶端建立加密連接,并基于所述訪問權(quán)限Auth接收該客戶端的數(shù)據(jù)庫訪問。

進一步地,對于數(shù)據(jù)庫表升級操作,由中心庫記錄最新庫版本號和最新庫的數(shù)據(jù)庫表結(jié)構(gòu),當企業(yè)A的用戶登錄企業(yè)A庫后,對比中心庫和企業(yè)A庫的版本號,如果發(fā)現(xiàn)企業(yè)A庫的版本比中心庫低,則觸發(fā)升級庫腳本,同步更新企業(yè)A庫的版本與中心庫一致。

進一步地,其特征在于,中心庫中的企業(yè)注冊信息包括企業(yè)的數(shù)字證書。

進一步地,其特征在于,所述加密函數(shù)E和解密函數(shù)D使用的是RSA算法或者橢圓曲線算法。

進一步地,其特征在于,將PW的前N個字符作為PW1,剩余字符作為PW2,所述N是預定義的長度。

與上述系統(tǒng)相應(yīng)的,本發(fā)明還提供了一種SaaS企業(yè)平臺數(shù)據(jù)庫系統(tǒng)的連接方法。

本方法的有益效果為:方便企業(yè)定制自己的數(shù)據(jù)庫,在保證安全性的前提下,企業(yè)具有了更大的靈活性,可以自行控制其下屬的用戶,而無需進行系統(tǒng)注冊。

【附圖說明】

此處所說明的附圖是用來提供對本發(fā)明的進一步理解,構(gòu)成本申請的一部分,但并不構(gòu)成對本發(fā)明的不當限定,在附圖中:

圖1是本發(fā)明數(shù)據(jù)庫系統(tǒng)的連接關(guān)系圖。

【具體實施方式】

下面將結(jié)合附圖以及具體實施例來詳細說明本發(fā)明,其中的示意性實施例以及說明僅用來解釋本發(fā)明,但并不作為對本發(fā)明的限定。

本發(fā)明的SaaS企業(yè)平臺數(shù)據(jù)庫系統(tǒng)為每個企業(yè)都提供一個單庫,從而實現(xiàn)單企業(yè)單庫的結(jié)構(gòu)。如附圖1所示,系統(tǒng)中具有一個中心庫,每個企業(yè)在中心庫注冊賬號,產(chǎn)生注冊信息后,中心庫調(diào)用創(chuàng)建初始化數(shù)據(jù)庫服務(wù),同步產(chǎn)生該企業(yè)的庫和表結(jié)構(gòu)。所述中心庫位于一個中心服務(wù)器上,而企業(yè)庫位于其他的數(shù)據(jù)庫服務(wù)器上,不同企業(yè)庫可以位于不同的數(shù)據(jù)庫服務(wù)器上,也可以位于同一數(shù)據(jù)庫服務(wù)器上。

所述中心庫除了存儲企業(yè)的注冊信息外,還可將企業(yè)用戶的操作由中心庫路由到相應(yīng)的企業(yè)庫進行處理。對于數(shù)據(jù)庫表升級操作,可采用中心庫中記錄最新庫版本號和最新庫的數(shù)據(jù)庫表結(jié)構(gòu),當企業(yè)A的用戶登錄企業(yè)A庫后,對比中心庫和企業(yè)A庫的版本號,如果發(fā)現(xiàn)企業(yè)A庫的版本比中心庫低,則觸發(fā)升級庫腳本,同步更新企業(yè)A庫的版本與中心庫一致。

由于中心庫存儲了各個企業(yè)的注冊信息,因此中心庫也是作為企業(yè)用戶登錄和連接數(shù)據(jù)庫的中心點。企業(yè)用戶在使用客戶端連接該數(shù)據(jù)庫系統(tǒng)時,首先是連接中心庫,然后通過中心庫登錄,從而再連接與訪問相應(yīng)的企業(yè)庫。下面對企業(yè)A為例,對本發(fā)明的上述連接過程進行詳細說明。

首先,所述中心庫和每個企業(yè)都有各自的數(shù)字證書和相應(yīng)的私鑰,可以使用該私鑰和數(shù)字證書中的公鑰進行加解密操作。中心庫中的企業(yè)注冊信息就包括了企業(yè)的數(shù)字證書。

設(shè)加密函數(shù)為E(key,Data),即使用預設(shè)的加密算法和密鑰key,對數(shù)據(jù)Data進行加密,從而得到Data的加密結(jié)果;設(shè)解密函數(shù)為D(Deckey,Enc),即使用預設(shè)的解密算法和密鑰key,對密文Enc進行解密,從而得到解密結(jié)果。優(yōu)選的,所述加密和解密算法為RSA算法或者橢圓曲線算法。以下說明都使用這兩個函數(shù)的定義。

(1)企業(yè)A為其下屬的用戶生成密碼,設(shè)所述用戶的賬號為User,則該用戶的密碼PW通過下式計算:

PW=Encode(E(PrivateKeyA,User||Auth))

其中,PrivateKeyA是所述企業(yè)A的私鑰,Encode是Base64編碼函數(shù)。

Auth是企業(yè)A給予該用戶的對數(shù)據(jù)庫的訪問權(quán)限,符號“||”表示將兩個字符串連接。

(2)將所述密碼PW拆分成PW1和PW2兩部分。

優(yōu)選的,將PW的前N個字符作為PW1,剩余字符作為PW2。所述N是預定義的長度,優(yōu)選的,N=8。

PW1作為用戶個人密碼,由用戶自行記憶;PW2則作為客戶端密碼,保存在用戶使用的客戶端中,可以使用現(xiàn)有的一些安全保存方式來保持PW2。

(3)用戶使用客戶端連接中心服務(wù)器,并在客戶端中輸入PW1以及用戶賬號User,客戶端組合PW1和PW2以獲得用戶密碼PW。

所述組合過程就是步驟2中拆分過程的逆過程。

(4)客戶端使用中心庫數(shù)字證書的公鑰加密PW,將加密結(jié)果和用戶賬號User發(fā)送給中心服務(wù)器。

具體地,客戶端計算EncPW=E(PublicKeyCenter,PW),獲得PW的加密結(jié)果EncPW。其中,PublicKeyCenter是中心庫的公鑰。

(5)中心服務(wù)器上的中心庫接收到該加密結(jié)果后,使用其私鑰解密該加密結(jié)果,獲得PW。

具體地,中心庫計算PW=D(PrivateKeyCenter,EncPW)。其中,PrivateKeyCenter是中心庫的私鑰。

(6)中心庫計算U=D(PublicKeyA,Decode(PW)),判斷U的前K個字符與User是否相等,如果不相等,則拒絕客戶端的連接,方法結(jié)束;如果相等,則客戶端認證通過,中心庫向客戶端返回認證通過消息,同時中心庫將U去除前K個字符后剩余的部分作為該用戶的數(shù)據(jù)庫訪問權(quán)限Auth。

其中K是User的長度,PublicKeyA是企業(yè)A的公鑰,Decode是Base64解碼函數(shù)。步驟6的過程實際上是步驟1中計算公式的逆過程,因此可以驗證客戶端上傳的賬號密碼是否是企業(yè)A頒發(fā),同時獲得訪問權(quán)限Auth。通過這樣的驗證方式,企業(yè)A可以自主生成用戶賬號、密碼和權(quán)限,而無需在服務(wù)器側(cè)對用戶進行注冊用戶,在保證安全性的同時,保持了企業(yè)的自主靈活性。

(7)客戶端在接收到認證通過消息后,隨機生成一個對稱加密密鑰Key,將該密鑰Key用中心庫數(shù)字證書公鑰加密后,發(fā)送給中心服務(wù)器。

具體地,客戶端計算Key的加密結(jié)果EncKey,即

EncKey=E(PublicKeyCenter,Key)。

所述密鑰Key作為客戶端與企業(yè)A庫之間的通信密鑰,基于該通信密鑰可建立兩者間的加密連接。

(8)中心庫將接收到的加密結(jié)果EncKey進行解密,獲得密鑰Key,將該密鑰Key、訪問權(quán)限Auth以及客戶端的網(wǎng)絡(luò)地址發(fā)送給企業(yè)A庫所在的數(shù)據(jù)庫服務(wù)器A。

具體地,中心庫計算Key=D(PrivateKeyCenter,EncKey),獲得該密鑰,再將密鑰傳輸給數(shù)據(jù)庫服務(wù)器A。此外,由于客戶端與中心服務(wù)器建立了網(wǎng)絡(luò)連接,因此中心服務(wù)器可以獲得客戶端的網(wǎng)絡(luò)地址。

通常情況下,作為SaaS平臺,內(nèi)部服務(wù)器之間的通信都是安全的,或者同處于一個內(nèi)部網(wǎng)絡(luò)內(nèi),或者具有安全信道,因此可以安全傳輸數(shù)據(jù)。

(9)所述數(shù)據(jù)庫服務(wù)器A基于該密鑰Key,與客戶端建立加密連接,并基于所述訪問權(quán)限Auth接收該客戶端的數(shù)據(jù)庫訪問。

這一步驟由數(shù)據(jù)庫服務(wù)器A主動發(fā)起建立加密連接,因此客戶端無需事先知道企業(yè)A所對應(yīng)的數(shù)據(jù)庫服務(wù)器。

以上所述僅是本發(fā)明的較佳實施方式,故凡依本發(fā)明專利申請范圍所述的構(gòu)造、特征及原理所做的等效變化或修飾,均包括于本發(fā)明專利申請范圍內(nèi)。

總結(jié)

以上是生活随笔為你收集整理的使用mysql做saas_一种SaaS企业平台数据库系统及其连接方法与流程的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。