本發(fā)明屬于存儲庫系統(tǒng)技術(shù)領(lǐng)域,尤其是一種基于元數(shù)據(jù)邏輯無關(guān)分片的結(jié)構(gòu)完整性檢測優(yōu)化方法。
背景技術(shù):
存儲庫系統(tǒng)中元數(shù)據(jù)的組織方式,即元數(shù)據(jù)的結(jié)構(gòu)呈現(xiàn)出一種多級的、分層的而且動態(tài)變化的復(fù)雜結(jié)構(gòu),因此,保持該種系統(tǒng)的一致性是一項重要任務(wù)。存儲庫系統(tǒng)中的一致性包括:(1)操作一致性:涉及存儲庫應(yīng)用間的交互,與存儲庫事務(wù)的概念密切相關(guān)。它又分為協(xié)作原子性和并發(fā)多用戶訪問。(2)元數(shù)據(jù)完整性:包括結(jié)構(gòu)完整性和良格式。良格式確保元層次中元素定義的語法正確性,而結(jié)構(gòu)完整性確保一個層次中的元素符合與該層相鄰的、更高的元層次中的類型定義。
結(jié)構(gòu)完整性是存儲庫系統(tǒng)一致性的重要組成部分。如果結(jié)構(gòu)完整性得不到保證,存儲庫系統(tǒng)應(yīng)用就可能修改或建立mn層中的元數(shù)據(jù)元素而與mn+1層中它們的元類相沖突。例如,一個操作可能會讀取某個元素的屬性,而該元素的元類并不存在,則該操作是無效的。一個數(shù)據(jù)庫系統(tǒng)包含m0層到m2層,其中m2層的內(nèi)容是固定不變的。而為了提供可自定義、可擴(kuò)展的系統(tǒng)框架,存儲庫系統(tǒng)引入了允許用戶對m2層進(jìn)行定義的m3層,在運行時刻m0,m1和m2層均可以被動態(tài)修改,因而就可能導(dǎo)致相鄰層次之間的沖突問題,即結(jié)構(gòu)完整性問題。其它系統(tǒng)并不面臨這類問題因為它們假定系統(tǒng)框架在運行時刻是靜止的。
但是,高的計算開銷使得結(jié)構(gòu)完整性的自動檢測逐漸成為一個棘手的問題。原因主要有如下四個方面:(1)近年來元數(shù)據(jù)量的快速增長;(2)元數(shù)據(jù)的更新頻度很高;(3)約束的集合越來越大;(4)約束的內(nèi)部復(fù)雜度越來越高,因此如何對結(jié)構(gòu)完整性檢測方法進(jìn)行優(yōu)化以提高其效率逐漸成為存儲庫系統(tǒng)一致性領(lǐng)域的研究熱點。
目前,元對象設(shè)施mof已經(jīng)成為國際主流的元數(shù)據(jù)存儲庫規(guī)范,但是,關(guān)于mof存儲系統(tǒng)的結(jié)構(gòu)完整性檢測的一種檢測方法是將結(jié)構(gòu)完整性約束轉(zhuǎn)化為邏輯表達(dá)式,而后將約束檢測問題轉(zhuǎn)化為邏輯推理問題,比如duboisset等人(duboissetm,etal.integratingthecalculus-basedmethodintoocl:studyofexpressivenessandcodegeneration,procofthe18thintworkshopondatabaseandexpertsystemsapplications.piscataway,nj:ieee,2007:502-506)、donald等人(donaldc,etal.usingfirst-orderlogictoqueryheterogeneousinternetdatasources,procofthe2015intconfonsoftcomputingandsoftwareengineering.holand:academicpress,elsevier,2015:1-8)和demuth等人(demuthb,etal.oclasaspecificationlanguageforbusinessrulesindatabaseapplications,lncs2185:procofthe4thconfonuml.berlin:springer,2006:104-117)的工作。然而由于結(jié)構(gòu)完整性約束包含了遞歸、否定、包語義等諸多復(fù)雜機(jī)制,所提出的轉(zhuǎn)化算法很難涵蓋上述所有機(jī)制,盡管有的算法對該缺陷進(jìn)行了改進(jìn)以支持盡可能多的約束機(jī)制,但處理方式的高復(fù)雜度又致使算法效率不高。
技術(shù)實現(xiàn)要素:
本發(fā)明的目的在于克服現(xiàn)有技術(shù)的不足,提供一種設(shè)計合理、方法簡單且效率高的基于元數(shù)據(jù)邏輯無關(guān)分片的結(jié)構(gòu)完整性檢測優(yōu)化方法。
本發(fā)明解決現(xiàn)有的技術(shù)問題是采取以下技術(shù)方案實現(xiàn)的:
一種基于元數(shù)據(jù)邏輯無關(guān)分片的結(jié)構(gòu)完整性檢測優(yōu)化方法,包括以下步驟:
步驟1、將存儲庫元數(shù)據(jù)及數(shù)據(jù)形式化為描述邏輯shiq知識庫;
步驟2、將shiq元數(shù)據(jù)知識庫進(jìn)行邏輯無關(guān)分片;
步驟3、在邏輯無關(guān)分片之上執(zhí)行結(jié)構(gòu)完整性檢測。
所述步驟1包括:將存儲庫中的元層次mn+1層和實例層mn層分別進(jìn)行形式化,其中n為0或1。
所述元層次mn+1層的形式化方法為:
⑴將元層次中的每個元類轉(zhuǎn)換為一個shiq概念,并使得兩個不同的元類可以擁有類型不同但名字相同的屬性;
⑵將元層次中的類c和一個類型c'形式化為概念a以及互逆的兩個角色r1和r2;
⑶泛化關(guān)系:如果一個元類c1是元類c2的泛化,將之形式化為
所述實例mn層的形式化方法為:
⑴若mn層元素c是其元層次中元類c的實例,則將其形式化為:c(c);
⑵若mn層元素c1關(guān)聯(lián)了元素c2,相應(yīng)的元類c1通過聚合關(guān)聯(lián)a聚合了c2,聚合關(guān)聯(lián)a被形式化為tbox中角色a,則將其形式化為:a(c1,c2);
⑶若mn層元素c1關(guān)聯(lián)了元素c2,相應(yīng)的元類c1與元類c2相聯(lián)系,而該一般關(guān)聯(lián)被形式化為概念a和角色r1,r2,則c1和c2之間的關(guān)系可形式化為三個斷言:a(a);r1(a,c1);r2(a,c2)。
所述步驟2將shiq元數(shù)據(jù)知識庫進(jìn)行邏輯無關(guān)分片的方法包括以下步驟:
⑴根據(jù)準(zhǔn)則1和準(zhǔn)則2計算元數(shù)據(jù)知識庫m給定的元素a的屬性演繹片斷m{a}p;
⑵將元素a的全部類斷言添加進(jìn)m{a}c;
⑶對于m{a}p中的每個r0(a,b)以及滿足
⑷計算m{a}=m{a}p∪m{a}c;
所述的準(zhǔn)則1為:shiq知識庫a中以元素a作為第一個要素或第二個要素的屬性斷言;
所述的準(zhǔn)則2為:shiq知識庫a中從元素a到元素b的角色路徑中的屬性斷言,這些斷言具有同一個傳遞父角色。
所述步驟3的方法為:檢測單個元數(shù)據(jù)元素a的類屬關(guān)系以及檢測元數(shù)據(jù)元素a、元數(shù)據(jù)元素b的屬性關(guān)系是在包含元數(shù)據(jù)元素a、元數(shù)據(jù)元素b的片斷上進(jìn)行;檢測一個元類的全部實例元素或檢測通過一個屬性相關(guān)聯(lián)的全部實例元素是將同樣的查詢在各片斷上并行執(zhí)行而后將結(jié)果合并。。
本發(fā)明的優(yōu)點和積極效果是:
本發(fā)明針對mof存儲庫的特點,將元數(shù)據(jù)的不同層次轉(zhuǎn)換進(jìn)描述邏輯shiq知識庫,在此基礎(chǔ)上提出了元數(shù)據(jù)邏輯無關(guān)片斷的形式定義并給出了如何提取它們的方法,該方法完整地保留了給定元數(shù)據(jù)的相關(guān)的全部信息從而帶來了兩方面的好處:一方面,針對部分元數(shù)據(jù)的檢測可以在較小數(shù)據(jù)集上進(jìn)行而不必針對整個存儲庫;另一方面,對整個存儲庫的檢測可以分解到不同的元數(shù)據(jù)片斷上進(jìn)行。實驗結(jié)果表明平均來說通過本方法所產(chǎn)生的元數(shù)據(jù)片斷的規(guī)模顯著地小于其原始規(guī)模,在此基礎(chǔ)上執(zhí)行的結(jié)構(gòu)完整性檢測的效率可以得到顯著地提高。
附圖說明
圖1是本發(fā)明的有效性評測的實驗結(jié)果;
圖2是mof存儲庫系統(tǒng)中mn+1層中的一般關(guān)聯(lián)的例子;
圖3是mof存儲庫系統(tǒng)中mn+1層中的聚合關(guān)聯(lián)的例子;
圖4是屬性類型沖突示例圖。
具體實施方式
以下結(jié)合附圖對本發(fā)明實施例做進(jìn)一步詳述:
一種基于元數(shù)據(jù)邏輯無關(guān)分片的結(jié)構(gòu)完整性檢測優(yōu)化方法,包括以下步驟:
步驟1:將存儲庫元數(shù)據(jù)及數(shù)據(jù)形式化為描述邏輯shiq知識庫。
mof框架中相鄰層次之間的關(guān)系是類型-實例的關(guān)系,因此我們將元層次,即mn+1(n為0或1)層中的信息形式化為shiqtboxt中的概念定義,而將作為實例的mn層中的元素形式化進(jìn)shiqaboxa。具體來說,當(dāng)n=1時,我們分別將m2層和m1層形式化進(jìn)tbox和abox,檢測的是m2層和m1層之間的一致性;當(dāng)n=0時,我們分別將m1層和m0層形式化進(jìn)tbox和abox,檢測的是m1層和m0層之間的一致性。下面分別進(jìn)行介紹。
1、mn+1層的形式化
(1)元類及元屬性
在元層次中,元類也是一種類,因此我們不對元類和類進(jìn)行區(qū)分。由于元類和shiq概念都是用于描述實例的集合,因此我們將每個元類轉(zhuǎn)換為一個shiq概念。
由于類c的一個類型為c'的屬性a將c的每個實例關(guān)聯(lián)到c'的實例,因此屬性a是c的實例與c'的實例之間的二元關(guān)系,所以我們將屬性a形式化為一個shiq角色,該角色可以通過如下斷言來表示:
(2)一般關(guān)聯(lián)
元層次中的一般關(guān)聯(lián)如圖2所示。用于表明兩個元類的實例之間的二元關(guān)系。每個一般關(guān)聯(lián)都包含兩個關(guān)聯(lián)端并且對應(yīng)一個相應(yīng)的關(guān)聯(lián)類。每個關(guān)聯(lián)端都存在多重性約束。與屬性不同,在mof框架中一般關(guān)聯(lián)的名字是唯一的。
我們將類c和c'之間的一般關(guān)聯(lián)(關(guān)聯(lián)端分別為r1和r2)形式化為概念a以及互逆的兩個角色r1和r2,其中r1用于描述關(guān)聯(lián)端r1,它分別以c和c'作為第1和第2個要素。因此r1的要素的取值限定被形式化為:
r1和r2之間的關(guān)系被形式化為r2≡r1-。r1的多重性i1…j1和r2的多重性i2…j2分別被形式化為:
(3)聚合關(guān)聯(lián)
元層次中的聚合關(guān)聯(lián)如圖3所示,用于表明兩個元類的實例之間的部分-整體的關(guān)系,是一種二元關(guān)系。例如levelbasedhierachy與hierarchylevelassociation之間的聚合關(guān)聯(lián)表示每個levelbasedhierachy的實例由一組hierarchylevelassociation的實例組成。
由于聚合關(guān)聯(lián)本質(zhì)上是一般關(guān)聯(lián)的一種形式,因此對聚合關(guān)聯(lián)進(jìn)行轉(zhuǎn)換的方法與一般關(guān)聯(lián)相同,聚合中的包含類與被包含類之間的區(qū)別并沒有丟失,我們約定角色的第一要素是包含類。
(4)泛化
mof框架中的泛化關(guān)系表明子類的每個實例也是父類的實例。因此子類的實例繼承了父類的屬性,此外它們還可以定義自己的屬性。
泛化關(guān)系是被shiq所支持的,如果一個元類c1是元類c2的泛化,我們可以將之形式化為
2、mn層的形式化
mn層中的每個元素是mn+1層中相應(yīng)元類的實例,元素之間的關(guān)系是元類之間相應(yīng)關(guān)聯(lián)的實例,因此mn層元素應(yīng)被轉(zhuǎn)化為shiq知識庫的aboxa。轉(zhuǎn)換分三種情況:
(1)若mn層元素c是其元層次中元類c的實例,則將其形式化為:c(c);
(2)若mn層元素c1關(guān)聯(lián)了c2,相應(yīng)的元類c1(或其祖先)通過聚合關(guān)聯(lián)a聚合了c2(或其祖先),聚合關(guān)聯(lián)a被形式化為tbox中角色a,則將其形式化為:a(c1,c2);
(3)若mn層元素c1關(guān)聯(lián)了c2,相應(yīng)的元類c1(或其祖先)通過一般關(guān)聯(lián)與元類c2(或其祖先)相聯(lián)系,而該一般關(guān)聯(lián)被形式化為概念a和角色r1,r2,則c1和c2之間的關(guān)系可形式化為三個斷言:a(a);r1(a,c1);r2(a,c2)。
步驟2:將shiq元數(shù)據(jù)知識庫進(jìn)行邏輯無關(guān)分片。
1、邏輯無關(guān)分片的基本思路
通過步驟1的轉(zhuǎn)換,我們獲得了元數(shù)據(jù)知識庫m,下面討論如何對元數(shù)據(jù)進(jìn)行邏輯無關(guān)分片。首先給出一些定義。
定義1(簽名):給定aboxa斷言γ,γ中出現(xiàn)的元數(shù)據(jù)元素的集合稱為γ的簽名,記為sig(γ)。a中所有元數(shù)據(jù)元素的簽名記為sig(a)。
定義2(角色路徑):若對于i=1,…,n-1,a中或者存在角色ri(ai,ai+1),或者存在角色ri-(ai+1,ai),則稱元數(shù)據(jù)元素a1和an之間存在角色路徑。
角色路徑可以包含逆角色。例如給定r1(a1,a2),r2(a3,a2),r3(a3,a4),從a1到a4的角色路徑是{r1,r2-,r3},相反從a4到a1的角色路徑是{r3-,r2,r1-}。
元數(shù)據(jù)知識庫上進(jìn)行的完整查詢將導(dǎo)致推理的效率低下及難駕馭性,考慮到元數(shù)據(jù)知識庫中的元數(shù)據(jù)可以分解為不同的邏輯無關(guān)片斷,我們可以將查詢分解到不同的元數(shù)據(jù)片斷上進(jìn)行,從而減小待查詢的元數(shù)據(jù)量并且可以并行執(zhí)行查詢。例如要查詢和元數(shù)據(jù)元素dimension的實例相關(guān)的信息,我們僅需在包含dimension的實例的元數(shù)據(jù)片斷上執(zhí)行查詢即可。為了保持查詢結(jié)果的完備性,元數(shù)據(jù)片斷必須是邏輯無關(guān)的,即該片斷必須是給定元數(shù)據(jù)元素邏輯蘊(yùn)含的閉包,基于上述分析,我們給出元數(shù)據(jù)邏輯無關(guān)片斷的形式定義:
定義3(元數(shù)據(jù)邏輯無關(guān)片斷):令m=(t,a)是元數(shù)據(jù)知識庫,集合s是簽名。a的子集ms稱為簽名s的邏輯無關(guān)片斷當(dāng)且僅當(dāng)對于滿足
定義3規(guī)定了成為元數(shù)據(jù)邏輯無關(guān)片斷的充要條件,它確保了簽名s中元數(shù)據(jù)元素的邏輯蘊(yùn)含的完備性,然而根據(jù)定義3以及shiq的單調(diào)性可知,ms的任意超集也是s的邏輯無關(guān)片斷(比如整個aboxa總是s的邏輯無關(guān)片斷),因此定義3并沒有確保簽名s的邏輯無關(guān)片斷的唯一性。
我們的目標(biāo)是劃分出精確的元數(shù)據(jù)片斷,該片斷僅包含對給定簽名必不可少的斷言,從而使得產(chǎn)生的分片在保持信息完備性的同時具有最小的規(guī)模。簡單地說,要使得斷言對于給定簽名s必不可少,它們必須能夠影響s中任意元數(shù)據(jù)元素的邏輯結(jié)論,為了區(qū)分這種斷言,我們給出如下定義:
定義4(論據(jù)):給定元數(shù)據(jù)知識庫m及斷言α,且
定義5(關(guān)鍵斷言):給定元數(shù)據(jù)知識庫m,元數(shù)據(jù)元素a及斷言γ,稱γ為{a}的關(guān)鍵斷言,當(dāng)且僅當(dāng)對于a的任意斷言α(類斷言或者屬性斷言),有
根據(jù)上述定義,斷言α的論據(jù)just(α,m)實質(zhì)上是蘊(yùn)含α的元數(shù)據(jù)知識庫的最小片斷,即just(α,m)中每個斷言都是α的關(guān)鍵斷言。斷言γ能夠影響簽名s中某個元數(shù)據(jù)元素的邏輯推導(dǎo)當(dāng)且僅當(dāng)它出現(xiàn)在該元素的任意屬性斷言或類斷言的論據(jù)中,此時γ是s的關(guān)鍵斷言。利用s的全部關(guān)鍵斷言構(gòu)造出的邏輯無關(guān)片斷ms不僅保持了s中元素的類斷言和屬性斷言的全部信息而且最小的規(guī)模。因此下面我們的任務(wù)就變成了如何為給定簽名s計算僅包含關(guān)鍵斷言的邏輯無關(guān)片斷,即最小邏輯無關(guān)片斷,除非特別指明,下文的邏輯無關(guān)片斷均指最小邏輯無關(guān)片斷??梢宰C明簽名s中每個元素的邏輯無關(guān)片斷的并集即為s的邏輯無關(guān)片斷,因此我們僅需為s中單個元數(shù)據(jù)元素的邏輯無關(guān)片斷的計算提出算法即可。
要計算給定的單個元數(shù)據(jù)元素a的邏輯無關(guān)分片,我們需要判斷a中的每個斷言是否為a的關(guān)鍵斷言,即必須測試每個斷言是否與a的屬性斷言或類斷言的推導(dǎo)有關(guān)。根據(jù)shiq的推理方法可知,元數(shù)據(jù)元素的類斷言既依賴于類斷言也依賴于屬性斷言,相反不同元數(shù)據(jù)元素之間的屬性斷言僅受屬性斷言的影響而與類斷言無關(guān),因此單個元數(shù)據(jù)元素a的邏輯無關(guān)分片可以通過三步實現(xiàn):首先計算斷言的集合m{a}p,其中每個斷言都與a的任意屬性斷言r(a,b)的推導(dǎo)有關(guān),我們將該集合稱為屬性演繹片斷,接著計算斷言的集合m{a}c,其中每個斷言都與a的任意類斷言c(a)的推導(dǎo)有關(guān),我們將該集合稱為類演繹片斷,最后將集合m{a}p與m{a}c合并即得a的邏輯無關(guān)片斷。
2、m{a}p的計算
元數(shù)據(jù)元素a的屬性演繹片斷m{a}p中的每個斷言都與a的任意屬性斷言r(a,b)的推導(dǎo)有關(guān),因此
3、m{a}c的計算
要計算元數(shù)據(jù)元素a的邏輯無關(guān)片斷,需要在獲得的m{a}p的基礎(chǔ)上進(jìn)一步計算m{a}c。由于m{a}c中的每個斷言都與a的任意類斷言c(a)的推導(dǎo)有關(guān),因此
如前所述,在shiq中元數(shù)據(jù)元素的類斷言的推導(dǎo)既依賴于類斷言也依賴于屬性斷言,因此a的類斷言是m{a}c必不可少的組成部分。為了識別影響c(a)的屬性斷言,還需要對m{a}p中的每個斷言進(jìn)行鑒別。給定元數(shù)據(jù)知識庫m=(t,a),僅當(dāng)元素a的斷言的支撐概念被c所包含,才會有c(a)成立,因此為了識別與a的類斷言的推導(dǎo)有關(guān)的斷言,必須確定該斷言的支撐概念被某個概念所包含。例如令
其中
上面的例子僅考慮了影響類斷言推導(dǎo)的單個屬性斷言,實際上后者有時會被多個斷言所影響,例如令
其中c3為元素a的所有其它信息的整合且
其中
4、執(zhí)行元數(shù)據(jù)邏輯無關(guān)分片算法
由于元數(shù)據(jù)元素的類斷言既依賴于類斷言也依賴于屬性斷言,相反不同元素之間的屬性斷言僅受屬性斷言的影響而與類斷言無關(guān),因此單個元數(shù)據(jù)元素a的邏輯無關(guān)分片應(yīng)首先計算屬性演繹片斷m{a}p,其中每個斷言都與a的任意屬性斷言r(a,b)的推導(dǎo)有關(guān),然后在此基礎(chǔ)上計算類演繹片斷m{a}c,其中每個斷言都與a的任意類斷言c(a)的推導(dǎo)有關(guān),最后求二者的并集即得a的邏輯無關(guān)片斷。據(jù)此思路得到如下算法。
步驟3:在邏輯無關(guān)分片之上執(zhí)行結(jié)構(gòu)完整性檢測。
由于通過步驟2求得的片斷是給定元數(shù)據(jù)元素邏輯蘊(yùn)含的閉包,因此邏輯無關(guān)分片使得在較小的元數(shù)據(jù)集合上執(zhí)行結(jié)構(gòu)完整性檢測或并行執(zhí)行該檢測成為可能。按照元數(shù)據(jù)知識庫的初始規(guī)模,我們可以將其劃分為合適規(guī)模的互不相交的子集,然后通過算法1生成同等數(shù)量的邏輯無關(guān)片斷。檢測單個元數(shù)據(jù)元素a的類屬關(guān)系以及檢測兩個元數(shù)據(jù)元素a、b的屬性關(guān)系可以在包含a、b的片斷上進(jìn)行而不必針對整個元數(shù)據(jù)知識庫;另一方面,檢測某個元類的全部實例元素或檢測通過某個屬性相關(guān)聯(lián)的全部實例元素可以將同樣的查詢在各片斷上并行執(zhí)行而后將結(jié)果合并。
根據(jù)結(jié)構(gòu)完整性約束,如果某個操作修改了元層次中某屬性的類型,而新類型不是原有類型的超類且原有類型是元層次中已存在的元類,若下面層次中的元素沒有被修改就會產(chǎn)生結(jié)構(gòu)完整性沖突。該類沖突可以通過下面的語句來檢測(假定元類property的屬性referencedtype的類型由structuredtype變?yōu)閟impletype,而非datatype等等超類型,如圖4所示):
在本例的查詢中,計算count1和count2時均需執(zhí)行查詢原子referencedtype(property,datatype),該原子根據(jù)已知的property檢索整個元數(shù)據(jù)知識庫用以確定所有被property引用的datatype,而count2的計算另需執(zhí)行查詢原子simpletype(datatype),該原子檢索整個元數(shù)據(jù)知識庫用以確定所有屬于simpletype的datatype?;诓襟E2的邏輯無關(guān)分片,這兩個查詢原子均可被并行執(zhí)行從而提高檢測效率。
下例是聚合多重性沖突的檢測。根據(jù)結(jié)構(gòu)完整性約束,如果某個操作修改了元層次中的聚合端的多重性,而下層元素沒有被相應(yīng)修改將導(dǎo)致相應(yīng)實例數(shù)目與修改后的多重性沖突??梢酝ㄟ^下面的語句來檢測該類沖突(假定aggregation和aggregationend間的聚合在aggregationend端的多重性由1改為2):
在本例中,count1的計算需要執(zhí)行查詢原子aggregation-aggregationend(aggregation,aggregationend),該原子檢索整個元數(shù)據(jù)知識庫用以確定所有與已知的aggregation通過aggregation-aggregationend相關(guān)聯(lián)的aggregationend,基于步驟2的邏輯無關(guān)分片,該查詢原子可以被并行優(yōu)化從而提高檢測效率。
為了評測本發(fā)明的有效性,我們進(jìn)行了大量實驗,重點測試了本優(yōu)化方法對結(jié)構(gòu)完整性檢測時間性能的提升。實驗的實例集取自mof元數(shù)據(jù)存儲庫系統(tǒng)mbrs。該系統(tǒng)的結(jié)構(gòu)由存儲庫客戶端、存儲庫管理模塊和數(shù)據(jù)存儲構(gòu)成。存儲庫客戶端用于在該系統(tǒng)之上建立存儲庫應(yīng)用;存儲庫管理模塊用于處理元數(shù)據(jù)并為存儲庫客戶端提供服務(wù),它實現(xiàn)了元數(shù)據(jù)邏輯無關(guān)分片及并行化處理;數(shù)據(jù)存儲由m0層及其上的各層元數(shù)據(jù)構(gòu)成。其中存儲庫管理模塊又包括:一組良定義的mbrs接口api,這些api的實現(xiàn)是基于對jmi反射的擴(kuò)展;元數(shù)據(jù)管理器,它將元數(shù)據(jù)組織成層次結(jié)構(gòu)并管理各層元數(shù)據(jù)的查詢及存儲。mbrs使用oracle11g數(shù)據(jù)庫存儲m0層數(shù)據(jù)和元數(shù)據(jù)。結(jié)構(gòu)完整性沖突是采用系統(tǒng)實例和人工植入兩種方式,它們涵蓋了結(jié)構(gòu)完整性的各個方面,包括與包的刪除和建立相關(guān)的沖突、與更改關(guān)聯(lián)端和屬性的多重性相關(guān)的沖突、與修改引用相關(guān)的沖突等。實驗結(jié)果表明,本優(yōu)化方法對各類結(jié)構(gòu)完整性沖突的檢測效率均有不同程度的提升。
有效性測試是在intelxeone7-4830八核cpu、6gb內(nèi)存的運行環(huán)境下進(jìn)行的。分類測試的耗用時間以毫秒計,測試結(jié)果如圖1所示。該圖顯示了不同規(guī)模的m0、m1、m2層元數(shù)據(jù)時結(jié)構(gòu)完整性檢測的執(zhí)行時間。其中上半部分是當(dāng)m2層元數(shù)據(jù)規(guī)模較小(24個類)時,變化相應(yīng)的m1和m0層元素的數(shù)目時檢測一致性所耗費的時間。黑色曲線反映的是不采用優(yōu)化措施時的執(zhí)行時間,藍(lán)色、橙色、紫色曲線分別為m2層劃分為2片、4片和8片時結(jié)構(gòu)完整性檢測花費的時間。下半部分反映的是m2層元數(shù)據(jù)規(guī)模更大,相應(yīng)m1和m0層元數(shù)據(jù)規(guī)模也更大時的執(zhí)行時間。可以看出在不采用優(yōu)化措施以及劃分的片斷數(shù)分別為2、4和8時執(zhí)行結(jié)構(gòu)完整性檢測所耗費的時間均與元數(shù)據(jù)規(guī)模之間呈線性關(guān)系,與預(yù)期相符合。片斷數(shù)增加一倍時檢測時間均并沒有降低為原時間的一半,究其原因應(yīng)該是分片過程本身占用一定時間所致。盡管如此,片斷數(shù)的增加均導(dǎo)致執(zhí)行檢測的時間顯著減少。從實驗結(jié)果也可以看出,平均來說在中小規(guī)模的元數(shù)據(jù)集之上該優(yōu)化方法對時間效率的提升是顯著的。
需要強(qiáng)調(diào)的是,本發(fā)明所述的實施例是說明性的,而不是限定性的,因此本發(fā)明包括并不限于具體實施方式中所述的實施例,凡是由本領(lǐng)域技術(shù)人員根據(jù)本發(fā)明的技術(shù)方案得出的其他實施方式,同樣屬于本發(fā)明保護(hù)的范圍。