亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

一種用于SaaS平臺的可擴展數(shù)據(jù)模型的制作方法

文檔序號:12158104閱讀:585來源:國知局
一種用于SaaS平臺的可擴展數(shù)據(jù)模型的制作方法與工藝

本發(fā)明涉及數(shù)據(jù)庫技術,尤其涉及一種用于SaaS平臺的可擴展數(shù)據(jù)模型。



背景技術:

軟件即服務(SaaS)作為云計算服務類型的組成部分,是一種利用Internet網(wǎng)以共享方式為多個租賃用戶提供服務的軟件模式。該模式中,由SaaS運營商提供應用軟件、支撐軟件(操作系統(tǒng)、數(shù)據(jù)庫等)、硬件服務器、維護人員和后期維護、升級服務。而各用戶無需購買軟硬件,只需進行在線租用,就可獲得相應的軟件服務。

租賃用戶通過Internet訪問部署在云中的SaaS服務,用于完成業(yè)務邏輯所需的數(shù)據(jù)也存儲在云數(shù)據(jù)庫中。根據(jù)用戶的業(yè)務需求不同,可以以下幾種方式為用戶提供數(shù)據(jù)庫:

1.每個租賃用戶一個數(shù)據(jù)庫。這種方式可以完全滿足用戶對數(shù)據(jù)擴展的要求,數(shù)據(jù)安全性及隔離性好,但租賃用戶間完全沒有數(shù)據(jù)共享,適合較復雜的系統(tǒng)及對數(shù)據(jù)安全要求比較高的系統(tǒng),如ERP,銀行業(yè)務系統(tǒng)等。

2.多個租賃用戶共享一個數(shù)據(jù)庫,分別使用不同的模式。該方式以模式隔離各用戶數(shù)據(jù),用戶可以對自己擁有的模式內(nèi)的數(shù)據(jù)模型進行任意的修改及擴充,用戶間不互相共享數(shù)據(jù)。相對與前一種方式,每個服務器可以支撐更多的租戶.硬件成本相對降低,節(jié)約了服務器資源,經(jīng)濟實用性增強。但維護比較復雜,例如數(shù)據(jù)庫出錯,無論表里的數(shù)據(jù)是否損壞,需要恢復所有租戶的表,需要花費很長的時間。比較適用于租戶對安全級別要求比較高,且每個租戶的數(shù)據(jù)表不多的狀況。

3.多個租賃用戶共享數(shù)據(jù)庫及模式。這種數(shù)據(jù)架構允許一張表可以包含很多租戶的數(shù)據(jù)記錄,租戶之間通過ID來區(qū)分。因此共享程度最高,但數(shù)據(jù)隔離程度最低,相應的安全級別也較低。一個服務器可以最大程度地支撐租戶的數(shù)量。SaaS軟件服務商擁有最低的硬件成本和數(shù)據(jù)備份成本,經(jīng)濟適用性好,非常符合SaaS的應用特征。

以共享數(shù)據(jù)庫及模式訪問數(shù)據(jù)庫需要解決的問題是,對公共的數(shù)據(jù)實現(xiàn)所有租賃用戶的共享;對專屬于用戶的特定數(shù)據(jù)實現(xiàn)相互隔離;對不同用戶的個性化需求數(shù)據(jù)實現(xiàn)動態(tài)擴展。數(shù)據(jù)模型動態(tài)擴展尤為重要,若不能根據(jù)用戶的需求,動態(tài)擴展數(shù)據(jù)屬性,SaaS應用就會失去吸引力。已經(jīng)提出的有代表性的數(shù)據(jù)擴展模型有:擴充數(shù)據(jù)列、數(shù)據(jù)表透視、名稱值對、數(shù)據(jù)切片、動態(tài)擴充XML節(jié)點等。



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

本發(fā)明要解決的技術問題在于針對現(xiàn)有技術中的缺陷,提供一種用于SaaS平臺的可擴展數(shù)據(jù)模型。

本發(fā)明解決其技術問題所采用的技術方案是:一種用于SaaS平臺的可擴展數(shù)據(jù)模型,包括共享數(shù)據(jù)表和擴展記錄表;

所述共享數(shù)據(jù)表形成過程如下:對應用程序所需要的數(shù)據(jù)進行分析,找出所有的共性數(shù)據(jù)字段,將共性字段放入共享數(shù)據(jù)表,所述共享記錄表存儲租賃ID、擴展字段ID及各個共享字段信息;共享數(shù)據(jù)表中的每條記錄稱為主記錄,所有主記錄的擴展字段都存儲在擴展數(shù)據(jù)表中;

所述擴展記錄表形成過程如下:每個租賃用戶的個性字段放入擴展數(shù)據(jù)表,其中,個性字段的個數(shù)不做限定;所述擴展記錄表存儲租賃ID、擴展字段ID、擴展列名稱、擴展記錄值、擴展列數(shù)據(jù)類型;

所述租賃ID用于區(qū)分不同用戶的數(shù)據(jù);

所述擴展字段ID用于查詢每個數(shù)據(jù)記錄的擴展字段,其中,擴展字段ID若為空,表示該記錄無擴展字段;擴展數(shù)據(jù)表中的每一條記錄表示一個租賃用戶在共享數(shù)據(jù)表中對應主記錄的擴充字段,擴展記錄表以擴展字段ID關聯(lián)共享數(shù)據(jù)表的主記錄;

所述擴展列名稱用于表示擴展字段的名稱;所述擴展記錄值用于表示擴展字段值,所述擴展列數(shù)據(jù)類型用于表示擴展字段的數(shù)據(jù)類型;

所述擴展記錄表中擴展字段的數(shù)據(jù)類型由數(shù)據(jù)類型表描述,擴展記錄中的擴展記錄值字段設置為sql_ variant類型,表示可以存儲任意數(shù)據(jù)類型的值,擴展列數(shù)據(jù)類型字段共享使用數(shù)據(jù)類型表中的數(shù)據(jù)類型,從而得到擴展字段值的實際數(shù)據(jù)類型。

按上述方案,所述擴展字段可以為任意數(shù)量及數(shù)據(jù)類型,即同一種數(shù)據(jù)類型可能會被多個不同數(shù)據(jù)模型中不同名稱的擴充字段使用。

本發(fā)明產(chǎn)生的有益效果是:現(xiàn)有的幾種數(shù)據(jù)擴展模式針對具體的應用,都可以一定程度解決數(shù)據(jù)擴充的問題,但也有各自的缺點,尤其是不能解決數(shù)據(jù)類型共享及用戶數(shù)據(jù)模型完全還原的問題,本發(fā)明提出的一種用于SaaS平臺是數(shù)據(jù)模型可以較好的解決這兩個問題。

附圖說明

下面將結合附圖及實施例對本發(fā)明作進一步說明,附圖中:

圖1是本發(fā)明實施例的擴展數(shù)據(jù)模型結構示意圖;

圖2是本發(fā)明實施例的擴展模型實例數(shù)據(jù)示意圖;

圖3是本發(fā)明實施例的租賃用戶1數(shù)據(jù)模型還原算法示意圖;

圖4 是本發(fā)明實施例的數(shù)據(jù)轉換邏輯層示意圖。

具體實施方式

為了使本發(fā)明的目的、技術方案及優(yōu)點更加清楚明白,以下結合實施例,對本發(fā)明進行進一步詳細說明。應當理解,此處所描述的具體實施例僅用以解釋本發(fā)明,并不用于限定本發(fā)明。

一種用于SaaS平臺的可擴展數(shù)據(jù)模型,包括共享數(shù)據(jù)表和擴展記錄表;

所述共享數(shù)據(jù)表形成過程如下:對應用程序所需要的數(shù)據(jù)進行分析,找出所有的共性數(shù)據(jù)字段,將共性字段放入共享數(shù)據(jù)表,所述共享記錄表存儲租賃ID、擴展字段ID及各個共享字段信息;共享數(shù)據(jù)表中的每條記錄稱為主記錄,所有主記錄的擴展字段都存儲在擴展數(shù)據(jù)表中;

所述擴展記錄表形成過程如下:每個租賃用戶的個性字段放入擴展數(shù)據(jù)表,其中,個性字段的個數(shù)不做限定;所述擴展記錄表存儲租賃ID、擴展字段ID、擴展列名稱、擴展記錄值、擴展列數(shù)據(jù)類型;

所述租賃ID用于區(qū)分不同用戶的數(shù)據(jù);

所述擴展字段ID用于查詢每個數(shù)據(jù)記錄的擴展字段,其中,擴展字段ID若為空,表示該記錄無擴展字段;擴展數(shù)據(jù)表中的每一條記錄表示一個租賃用戶在共享數(shù)據(jù)表中對應主記錄的擴充字段,擴展記錄表以“擴展字段ID”關聯(lián)共享數(shù)據(jù)表的主記錄;

所述擴展列名稱用于表示擴展字段的名稱;所述擴展記錄值用于表示擴展字段值,所述擴展列數(shù)據(jù)類型用于表示擴展字段的數(shù)據(jù)類型;

所述擴展記錄表中擴展字段的數(shù)據(jù)類型由數(shù)據(jù)類型表描述,擴展記錄中的“擴展記錄值”字段設置為sql_ variant類型,表示可以存儲任意數(shù)據(jù)類型的值,“擴展列數(shù)據(jù)類型”字段共享使用數(shù)據(jù)類型表中的數(shù)據(jù)類型,從而得到擴展字段值的實際數(shù)據(jù)類型。用戶擴展的字段可以是任意數(shù)量及數(shù)據(jù)類型的,同一種數(shù)據(jù)類型可能會被多個不同數(shù)據(jù)模型,不同名稱的擴充字段使用。若數(shù)據(jù)類型不能共享使用,則必須為每個擴展字段添加一條表示其數(shù)據(jù)類型的元數(shù)據(jù),即便是在同一數(shù)據(jù)模型中,使用同一種數(shù)據(jù)類型的名稱不同的兩個擴展字段,也需要兩條元數(shù)據(jù)記錄表示擴展字段的數(shù)據(jù)類型。共享使用數(shù)據(jù)類型可以省略掉不必要的元數(shù)據(jù)記錄,簡化擴展數(shù)據(jù)模型的設計。

上述數(shù)據(jù)模型還原方法為:

1、擴展數(shù)據(jù)模型應該能將各個租賃用戶的特定數(shù)據(jù)結構模型完全還原,用戶應用程序直接對還原后的數(shù)據(jù)模型進行操作,而不需要關心其實際的存儲結構。將擴展數(shù)據(jù)模型完全還原的算法為:

select * from

((select <主記錄列>,<擴展記錄列>,

case <數(shù)據(jù)類型列> when 'DataTypeID' then convert(DataType,<擴展數(shù)據(jù)值>)[ ...n ] ELSE <擴展數(shù)據(jù)值> END

from t_Main m join t_Extension ex on m.TenantID = ex.TenantID and m.ExRecordID = ex.ExRecordID join t_DataType dt on ex.DataTypeID = dt.DataTypeID where m.TenantID = @tenantID) as pivotSource

pivot

(aggregate_function (ExValue ) FOR ExColumnName IN ( <ExColumn_list> ))) as restoredTable

還原算法首先根據(jù)租賃用戶的“租賃ID”聯(lián)接共享數(shù)據(jù)表、擴展數(shù)據(jù)表、數(shù)據(jù)類型表得到其的數(shù)據(jù)記錄列表,然后通過數(shù)據(jù)透視技術還原用戶的數(shù)據(jù)結構,并在還原過程中將以sql_variant類型存儲的擴展字段值轉換為實際的數(shù)據(jù)類型,還原后的數(shù)據(jù)可以以強類型數(shù)據(jù)集的方式提供給應用邏輯層,方便編程及進行數(shù)據(jù)類型驗證。

上述數(shù)據(jù)模型的操作方法為:

1、數(shù)據(jù)操作過程:

還原后的數(shù)據(jù)模型可以展示在用戶界面層上進行添加、修改、刪除操作。添加的記錄須根據(jù)擴展模型進行分解,共享的字段形成主記錄保存在共享數(shù)據(jù)表中,擴展字段分解為多條記錄存儲在擴展數(shù)據(jù)表中,擴展字段的實際數(shù)據(jù)類型通過查詢數(shù)據(jù)類型表得到。修改記錄時,須根據(jù)修改值的字段名稱,分別更新共享數(shù)據(jù)表及擴展數(shù)據(jù)表,刪除記錄時,共享數(shù)據(jù)表的主記錄及擴展數(shù)據(jù)表中的記錄需要同時刪除。添加、修改、刪除操作的數(shù)據(jù)完整性及一致性都可以通過事務機制保證。

2、數(shù)據(jù)轉換邏輯層:

可以在租賃用戶數(shù)據(jù)模型和擴展數(shù)據(jù)模型間建立一個數(shù)據(jù)轉換邏輯層,該數(shù)據(jù)轉換邏輯層向業(yè)務邏輯層提供透明的操作接口,業(yè)務邏輯層通過調(diào)用操作接口對數(shù)據(jù)進行操作,數(shù)據(jù)轉換邏輯層將用戶操作轉換為更新擴展模型數(shù)據(jù)的程序邏輯,數(shù)據(jù)轉換邏輯層也負責將擴展模型數(shù)據(jù)完全還原為用戶模型數(shù)據(jù)。

如圖1左側所示的四個租賃用戶對“課程”數(shù)據(jù)模型的需求,可擴展的數(shù)據(jù)模型提取CourseID,CourseName兩個字段到共享數(shù)據(jù)表,不同用戶的數(shù)據(jù)以TenantID區(qū)分,每個數(shù)據(jù)記錄的擴展字段,通過ExRecordID查詢得到,ExRecordID可以為空,表示記錄無擴展字段。共享數(shù)據(jù)表中的每條記錄稱為主記錄。所有主記錄的擴展字段都存儲在擴展數(shù)據(jù)表中,擴展數(shù)據(jù)表中的每一條記錄表示一個租賃用戶在共享數(shù)據(jù)表中對應主記錄的擴充字段,擴展記錄以 TenantID區(qū)分不同的用戶,以ExRecordID關聯(lián)共享數(shù)據(jù)表的主記錄,以ExColumnName表示擴展字段的名稱,以ExValue表示擴展字段值,DataTypeID表示擴展字段的數(shù)據(jù)類型。四個租賃用戶的“課程”表的擴展數(shù)據(jù)模型如圖1右側所示,擴展數(shù)據(jù)模型的實例數(shù)據(jù)如圖2所示。

數(shù)據(jù)還原算法首先根據(jù)租賃用戶的TenantID聯(lián)接共享數(shù)據(jù)表、擴展數(shù)據(jù)表、數(shù)據(jù)類型表得到其的數(shù)據(jù)記錄列表,然后通過數(shù)據(jù)透視技術還原用戶的數(shù)據(jù)結構,并在還原過程中將以sql_variant類型存儲的擴展字段值轉換為實際的數(shù)據(jù)類型,還原后的數(shù)據(jù)可以以強類型數(shù)據(jù)集的方式提供給應用邏輯層,方便編程及進行數(shù)據(jù)類型驗證。根據(jù)實例數(shù)據(jù)還原租賃用戶1的模型結構的算法及還原結果如圖3所示。

對于數(shù)據(jù)操作,假設租賃用戶1需要插入一條數(shù)據(jù)(‘C003’,‘Art’,‘Jack’,5,1),業(yè)務邏輯層直接調(diào)用數(shù)據(jù)轉換邏輯層中的添加數(shù)據(jù)轉換接口,由添加數(shù)據(jù)轉換接口將(‘T100’,‘C003’,‘Art’,‘Ex003’)入共享數(shù)據(jù)表,將(‘T100’,‘Ex003’,‘Jack’,‘DT005’),(‘T100’,‘Ex003’,1,‘DT001’),(‘T100’,‘Ex003’,1,‘DT003’)插入擴展數(shù)據(jù)表,擴展記錄ID‘Ex003’及各個擴展字段的數(shù)據(jù)類型ID由相關程序邏輯查詢、計算得到。修改、刪除數(shù)據(jù)操作類似于添加操作。業(yè)務邏輯層、數(shù)據(jù)轉換邏輯層、擴展數(shù)據(jù)層的關系如圖4所示。

應當理解的是,對本領域普通技術人員來說,可以根據(jù)上述說明加以改進或變換,而所有這些改進和變換都應屬于本發(fā)明所附權利要求的保護范圍。

當前第1頁1 2 3 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1