本發(fā)明涉及數(shù)據(jù)存儲(chǔ)技術(shù)領(lǐng)域,更為具體來(lái)說(shuō),本發(fā)明為一種故障樹(shù)數(shù)據(jù)的存儲(chǔ)方法及讀取方法。
背景技術(shù):
故障診斷對(duì)大型裝備與系統(tǒng)的保障與維護(hù)起著重要作用。故障診斷的基本原理是:利用對(duì)象領(lǐng)域的人工或?qū)<抑R(shí),快速定位、排查對(duì)象故障原因,所以,如何有效地提煉、描述、檢索不同對(duì)象領(lǐng)域的人工專家知識(shí)是故障診斷里的關(guān)鍵技術(shù)之一。鑒于此,故障樹(shù)是目前應(yīng)用最廣泛的故障診斷專家知識(shí)表述形式,其對(duì)專家知識(shí)的描述具有簡(jiǎn)潔明了、形象直觀等特點(diǎn)。
故障診斷系統(tǒng)需要將故障樹(shù)數(shù)據(jù)存儲(chǔ)到計(jì)算機(jī)系統(tǒng)中,但是故障樹(shù)是對(duì)知識(shí)的描述,所以其本身存在著一個(gè)不斷積累和完善的演化過(guò)程,隨著數(shù)據(jù)存儲(chǔ)數(shù)量不斷增加,傳統(tǒng)的故障樹(shù)存儲(chǔ)方法難以兼顧可擴(kuò)展性、數(shù)據(jù)冗余度、數(shù)據(jù)檢索速度等多方面,往往是顧此失彼。
因此,如何優(yōu)化故障樹(shù)數(shù)據(jù)的存儲(chǔ)成為了本領(lǐng)域技術(shù)人員亟待解決的技術(shù)問(wèn)題和始終研究的重點(diǎn)。
技術(shù)實(shí)現(xiàn)要素:
為解決現(xiàn)有故障樹(shù)數(shù)據(jù)的存儲(chǔ)方法存在的可擴(kuò)展性差、數(shù)據(jù)冗余度高、數(shù)據(jù)檢索速度慢等問(wèn)題,本發(fā)明提出了一種采用面向?qū)ο笤O(shè)計(jì)思想的新數(shù)據(jù)存儲(chǔ)結(jié)構(gòu)來(lái)實(shí)現(xiàn)故障樹(shù)的存儲(chǔ),該方法能夠在存儲(chǔ)層實(shí)現(xiàn)良好的可擴(kuò)展性、具有較小的數(shù)據(jù)冗余度,并且能夠?qū)崿F(xiàn)數(shù)據(jù)的快速檢索。
為實(shí)現(xiàn)上述技術(shù)目的,本發(fā)明公開(kāi)了一種故障樹(shù)數(shù)據(jù)的存儲(chǔ)方法,該存儲(chǔ)方法包括如下步驟,
步驟1,分解故障樹(shù)結(jié)構(gòu):將故障樹(shù)抽象為五類對(duì)象,所述五類對(duì)象分別為頂事件、中間事件、底事件、邏輯與、邏輯或;其中,所述頂事件、中間事件、底事件統(tǒng)稱為事件,且故障樹(shù)結(jié)構(gòu)中的上層事件為與該上層事件有直接邏輯關(guān)聯(lián)的下層事件的父節(jié)點(diǎn),所述中間事件、底事件分別具有父節(jié)點(diǎn),所述頂事件沒(méi)有父節(jié)點(diǎn);
步驟2,為故障樹(shù)中的每個(gè)事件賦予一個(gè)事件編碼,且每個(gè)事件編碼具有唯一性;
步驟3,根據(jù)所述事件編碼、各事件之間的邏輯關(guān)系,將故障樹(shù)數(shù)據(jù)映射為四個(gè)關(guān)系表,所述四個(gè)關(guān)系表分別為故障樹(shù)關(guān)系表、底事件關(guān)系表、中間事件關(guān)系表、頂事件關(guān)系表;
步驟4,通過(guò)存儲(chǔ)上述四個(gè)關(guān)系表的方式存儲(chǔ)故障樹(shù)數(shù)據(jù)。
本發(fā)明通過(guò)上述的對(duì)故障樹(shù)的抽象、對(duì)邏輯關(guān)系描述、對(duì)每個(gè)事件賦予事件編碼的方式將故障樹(shù)數(shù)據(jù)映射為四個(gè)關(guān)系表,然后通過(guò)存儲(chǔ)關(guān)系表的方式存儲(chǔ)故障樹(shù)數(shù)據(jù);這種相互之間存在邏輯關(guān)系的關(guān)系表存儲(chǔ)方式使本發(fā)明的故障樹(shù)數(shù)據(jù)存儲(chǔ)具有易擴(kuò)展、冗余度低、方便后期的遍歷檢索等優(yōu)點(diǎn),完美實(shí)現(xiàn)了對(duì)故障樹(shù)的結(jié)構(gòu)分解,優(yōu)化了對(duì)故障樹(shù)層次關(guān)系描述,同時(shí)創(chuàng)建了檢索故障樹(shù)數(shù)據(jù)的接口。
進(jìn)一步地,步驟3中,所述關(guān)系表包括表名信息、屬性信息、類型信息及描述信息,所述類型信息表征所述屬性信息的類型,所述描述信息表征所述屬性信息的含義。
本發(fā)明通過(guò)表名、屬性、類型及描述四個(gè)方面的信息表征出關(guān)系表內(nèi)容,這種表征方式既能滿足將故障樹(shù)數(shù)據(jù)完整抽象的要求,又能兼顧存儲(chǔ)層擴(kuò)展性、冗余性及檢索速度等多種要求,為大批量的故障樹(shù)數(shù)據(jù)存儲(chǔ)提供了一種較佳的解決方案。
進(jìn)一步地,步驟3中,所述故障樹(shù)關(guān)系表的屬性信息包括故障樹(shù)id和故障樹(shù)名稱。
故障樹(shù)id用于區(qū)分?jǐn)?shù)據(jù)庫(kù)中存儲(chǔ)的不同故障樹(shù),提高數(shù)據(jù)庫(kù)系統(tǒng)的識(shí)別速度,而故障樹(shù)名稱便于技術(shù)人員對(duì)故障樹(shù)信息的識(shí)別和讀取,因此,故障樹(shù)id和故障樹(shù)名稱能夠完整、清楚、有效地表征出故障樹(shù)關(guān)系表的基本信息。
進(jìn)一步地,步驟3中,所述頂事件關(guān)系表的屬性信息包括事件編碼、頂事件id、頂事件名稱、該頂事件所屬的故障樹(shù)id、該頂事件與其下層事件的邏輯關(guān)系。
通過(guò)上述對(duì)頂事件關(guān)系表的屬性信息表征,能夠準(zhǔn)確、完整地表達(dá)出頂事件本身的含義、頂事件與其他事件的邏輯關(guān)系、頂事件與故障樹(shù)的邏輯關(guān)系等。
進(jìn)一步地,步驟3中,所述中間事件關(guān)系表的屬性信息包括事件編碼、中間事件id、中間事件名稱、該中間事件所屬的故障樹(shù)id、該中間事件與其下層事件的邏輯關(guān)系、該中間事件的父節(jié)點(diǎn)id、該中間事件的父節(jié)點(diǎn)類型。
通過(guò)上述對(duì)中間事件關(guān)系表的屬性信息表征,能夠準(zhǔn)確、完整地表達(dá)中間事件本身的含義、中間事件與其他事件的邏輯關(guān)系、中間事件與故障樹(shù)的邏輯關(guān)系等。
進(jìn)一步地,步驟3中,所述底事件關(guān)系表的屬性信息包括事件編碼、底事件id、底事件名稱、該底事件所屬的故障樹(shù)id、該底事件的父節(jié)點(diǎn)id、該底事件的父節(jié)點(diǎn)類型。
通過(guò)上述對(duì)底事件關(guān)系表的屬性信息表征,能夠準(zhǔn)確、完整地表達(dá)底事件本身的含義、底事件與其他事件的邏輯關(guān)系、底事件與故障樹(shù)的邏輯關(guān)系等。
進(jìn)一步地,步驟4中,所述關(guān)系表存儲(chǔ)于關(guān)系數(shù)據(jù)庫(kù)中,在遍歷故障樹(shù)的過(guò)程中完成對(duì)故障樹(shù)數(shù)據(jù)的存儲(chǔ)。
本發(fā)明可事先根據(jù)分析故障樹(shù)的結(jié)構(gòu)而生成存儲(chǔ)于數(shù)據(jù)庫(kù)中四種關(guān)系表,該四種關(guān)系表可為空表或填充有初始化信息的關(guān)系表,而在對(duì)新的故障樹(shù)數(shù)據(jù)存儲(chǔ)時(shí),在此四種關(guān)系表的基礎(chǔ)上增加數(shù)據(jù)即可。
進(jìn)一步地,為全面、準(zhǔn)確地表征故障樹(shù)中的所有數(shù)據(jù),步驟1中,針對(duì)故障樹(shù)中的每個(gè)事件,采用面向?qū)ο蠓治龅姆绞椒纸夤收蠘?shù)結(jié)構(gòu)。
進(jìn)一步地,步驟2中,所述事件編碼為數(shù)字或字母。當(dāng)然,在本發(fā)明的技術(shù)啟示下,可采用其他形式的事件編碼,比如數(shù)字和字母組合。
本發(fā)明的另一個(gè)發(fā)明目的在于提供一種故障樹(shù)數(shù)據(jù)的讀取方法,通過(guò)如下步驟對(duì)上述的存儲(chǔ)方法存儲(chǔ)的故障樹(shù)數(shù)據(jù)進(jìn)行讀取,
步驟a,獲取待讀取的故障樹(shù)id,在故障樹(shù)表中檢索與所述故障樹(shù)id匹配的記錄,獲取所述故障樹(shù)id對(duì)應(yīng)的故障樹(shù)的基本信息;
步驟b,在頂事件關(guān)系表中檢索出該故障樹(shù)的頂事件;
步驟c,在中間事件關(guān)系表中檢索出該故障樹(shù)的所有中間事件;
步驟d,在底事件關(guān)系表中檢索出該故障樹(shù)的所有底事件。
基于上述的故障樹(shù)數(shù)據(jù)的存儲(chǔ)方法,對(duì)存儲(chǔ)于關(guān)系數(shù)據(jù)庫(kù)的故障樹(shù)數(shù)據(jù)的讀取變得簡(jiǎn)單和容易,技術(shù)人員只需向故障診斷系統(tǒng)中輸入待讀取的目標(biāo)故障樹(shù)id,即可自動(dòng)、快速地獲取整個(gè)故障樹(shù)結(jié)構(gòu)數(shù)據(jù)。
本發(fā)明的有益效果為:通過(guò)引入事件編碼機(jī)制、父節(jié)點(diǎn)屬性、邏輯類型屬性,本發(fā)明能夠清晰簡(jiǎn)明地將故障樹(shù)的結(jié)構(gòu)映射為關(guān)系數(shù)據(jù)庫(kù)存儲(chǔ)表的形式,本發(fā)明創(chuàng)新提出了一種新的故障樹(shù)數(shù)據(jù)的存儲(chǔ)方法及讀取方法,基于面向?qū)ο蟮脑瓌t,該存儲(chǔ)方法能夠在存儲(chǔ)層具有良好的可擴(kuò)展性、具有較小的數(shù)據(jù)冗余度,并且在故障樹(shù)數(shù)據(jù)讀取時(shí)能夠?qū)崿F(xiàn)快捷的檢索。
附圖說(shuō)明
圖1為故障樹(shù)數(shù)據(jù)的存儲(chǔ)方法的流程示意圖。
圖2為抽象后的故障樹(shù)結(jié)構(gòu)示意圖。
圖3為故障樹(shù)數(shù)據(jù)的讀取方法的流程示意圖。
具體實(shí)施方式
下面結(jié)合說(shuō)明書(shū)附圖對(duì)本發(fā)明的故障樹(shù)數(shù)據(jù)的存儲(chǔ)方法及讀取方法進(jìn)行詳細(xì)的解釋和說(shuō)明。
如圖1、2所示,一種故障樹(shù)數(shù)據(jù)的存儲(chǔ)方法,該存儲(chǔ)方法具體包括如下步驟。
步驟1,針對(duì)故障樹(shù)中的每個(gè)事件,本發(fā)明采用面向?qū)ο蠓治龅姆绞椒纸夤收蠘?shù)結(jié)構(gòu);分解故障樹(shù)結(jié)構(gòu)具體包括如下的步驟:將故障樹(shù)抽象為五類對(duì)象,五類對(duì)象分別為頂事件、中間事件、底事件、邏輯與、邏輯或,為方便說(shuō)明,本發(fā)明中“頂事件”、“中間事件”、“底事件”、“邏輯與”、“邏輯或”分別用于表示“頂事件對(duì)象”、“中間事件對(duì)象”、“底事件對(duì)象”、“邏輯與對(duì)象”、“邏輯或?qū)ο蟆?。如圖2所示,本發(fā)明中涉及的頂事件、中間事件、底事件統(tǒng)稱為事件,依據(jù)故障樹(shù)的結(jié)構(gòu),事件還可根據(jù)邏輯關(guān)系表述為上層事件和下層事件,上層事件和下層事件的邏輯關(guān)系由邏輯單元表示,本發(fā)明也是依據(jù)邏輯單元分解故障樹(shù)結(jié)構(gòu)的,邏輯單元在本發(fā)明中可理解為邏輯與、邏輯或,如圖1所示,頂事件對(duì)應(yīng)的邏輯單元為邏輯或,中間事件1對(duì)應(yīng)的邏輯單元為邏輯與,所有底事件沒(méi)有邏輯單元,而且故障樹(shù)結(jié)構(gòu)中的上層事件為與該上層事件有直接邏輯關(guān)聯(lián)的下層事件的父節(jié)點(diǎn),中間事件、底事件分別具有父節(jié)點(diǎn),且中間事件、底事件引入父節(jié)點(diǎn)屬性,表明父節(jié)點(diǎn)與其子節(jié)點(diǎn)具有邏輯關(guān)系。更為具體地,本步驟可按照如下方式實(shí)施。首先,確定故障樹(shù)的頂事件,而每個(gè)故障樹(shù)只有一個(gè)頂事件;其次,以頂事件為起點(diǎn),基于邏輯與、邏輯或的關(guān)系模式,由上至下,抽象出各層的中間事件和底事件,從而建立出故障樹(shù)的層次結(jié)構(gòu)。
步驟2,基于故障樹(shù)的結(jié)構(gòu),或者說(shuō)基于故障樹(shù)的某種遍歷方式,為故障樹(shù)中的每個(gè)事件賦予一個(gè)事件編碼,且每個(gè)事件編碼具有唯一性,這種唯一性的約束是針對(duì)故障樹(shù)而言的,表明了不同的事件編碼代表不同的事件;事件編碼可以為數(shù)字、字母、數(shù)字和字母的組合等多種表現(xiàn)形式,本實(shí)施例中,如圖2所示,事件編碼的形式為“(n)”,其中“n”為1、2、3……。比如,父節(jié)點(diǎn)可以用事件編碼表征,如圖2所示,中間事件1的父節(jié)點(diǎn)的事件編碼為(1)的頂事件,中間事件4的父節(jié)點(diǎn)為事件編碼為(2)的中間事件1,頂事件沒(méi)有父節(jié)點(diǎn)。
步驟3,基于以上的面向故障樹(shù)的面向?qū)ο蟪橄?,根?jù)事件編碼、各事件之間的邏輯關(guān)系,通過(guò)基于e-r模型的關(guān)系數(shù)據(jù)分析,將故障樹(shù)數(shù)據(jù)映射為四個(gè)關(guān)系表,四個(gè)關(guān)系表分別為故障樹(shù)關(guān)系表、底事件關(guān)系表、中間事件關(guān)系表、頂事件關(guān)系表,如下表所示。
通過(guò)上表可以看出,關(guān)系表可包括表名信息、屬性信息、類型信息及描述信息,類型信息用于表征屬性信息的類型,而描述信息用于表征屬性信息的含義。故障樹(shù)關(guān)系表的屬性信息可包括故障樹(shù)id和故障樹(shù)名稱,從而表達(dá)出故障樹(shù)的基本信息。頂事件關(guān)系表的屬性信息包括事件編碼、頂事件id、頂事件名稱、該頂事件的故障樹(shù)id、該頂事件與其下層事件的邏輯關(guān)系,從而表達(dá)出故障樹(shù)頂事件的組成信息及其與其他事件間的邏輯信息。中間事件關(guān)系表的屬性信息包括事件編碼、中間事件id、中間事件名稱、該中間事件的故障樹(shù)id、該中間事件與其下層事件的邏輯關(guān)系、該中間事件的父節(jié)點(diǎn)id、該中間事件的父節(jié)點(diǎn)類型,從而表達(dá)出故障樹(shù)中間事件的組成信息及其與其他事件之間的邏輯關(guān)系,比如,中間事件與頂事件之間的邏輯關(guān)系、中間事件與底事件之間的邏輯關(guān)系。底事件關(guān)系表的屬性信息包括事件編碼、底事件id、底事件名稱、該底事件的故障樹(shù)id、該底事件的父節(jié)點(diǎn)id、該底事件的父節(jié)點(diǎn)類型,從而表達(dá)出故障樹(shù)底事件的組成信息及其與其他事件之間的邏輯關(guān)系,比如,底事件與中間事件之間的邏輯關(guān)系。
應(yīng)當(dāng)理解,本發(fā)明上述給出的關(guān)系表、故障樹(shù)及各種事件的表達(dá)形式是基于本發(fā)明的構(gòu)思而給出具體實(shí)施結(jié)果,在本發(fā)明的基本構(gòu)思的啟示下,本發(fā)明可不限于上述的表達(dá)形式或語(yǔ)言描述,適當(dāng)?shù)卦黾颖磉_(dá)形式或該表表述方式也在本發(fā)明的保護(hù)范圍之內(nèi)。
需要說(shuō)明的是,本發(fā)明中涉及的“id”應(yīng)理解為相應(yīng)故障樹(shù)或父節(jié)點(diǎn)或事件的“身份信息”或“編號(hào)信息”,用于區(qū)分同種類的故障樹(shù)或同種類的父節(jié)點(diǎn)或同種類的事件。而“事件名稱”對(duì)應(yīng)具體的事件的名字,比如產(chǎn)生故障的原因或產(chǎn)生故障的進(jìn)一步原因。
步驟4,通過(guò)存儲(chǔ)上述四個(gè)關(guān)系表的方式存儲(chǔ)故障樹(shù)數(shù)據(jù)。具體來(lái)說(shuō),如上述的各關(guān)系表所示,為便于區(qū)分和說(shuō)明,初始化關(guān)系表對(duì)應(yīng)的的故障樹(shù)id為ft_id1,當(dāng)然,初始化關(guān)系表可以為空表,待存儲(chǔ)的故障樹(shù)id為ft_id2;根據(jù)故障樹(shù)信息,初始化頂事件名稱(tp_name),邏輯單元(lg_type)、故障樹(shù)id(ft_id2)屬性,向頂事件topevent中插入新的頂事件,其中ft_id2用ft_id1初始化,并且獲取新頂事件的top_id,完成對(duì)頂事件相關(guān)數(shù)據(jù)的存儲(chǔ),然后按從上到下的順序?qū)⒐收蠘?shù)各層的中間事件與底事件分別插入midevent表和botevent表。根據(jù)故障樹(shù)信息,初始化中間事件與底事件的各屬性,其中,par_id與par_type屬性初始化過(guò)程如下:a)根據(jù)事件在故障樹(shù)結(jié)構(gòu)圖中的父節(jié)點(diǎn)事件編號(hào),獲取父節(jié)點(diǎn)的類型(mid或top),以該類型初始化par_type;b)如果父節(jié)點(diǎn)類型為mid,則在對(duì)應(yīng)的midevent表中檢索該事件編號(hào)的中間事件記錄,并將該記錄的mid_id初始化par_id;如果父節(jié)點(diǎn)類型為top,則在對(duì)應(yīng)的topevent表中檢索該事件編號(hào)的頂事件記錄,并將該記錄的top_id初始化par_id,從而完成對(duì)中間事件和底事件相關(guān)數(shù)據(jù)的存儲(chǔ)。
通過(guò)上述步驟,在數(shù)據(jù)庫(kù)中已將建立關(guān)系表的前提下,完成了對(duì)故障樹(shù)結(jié)構(gòu)的遍歷即完成了故障樹(shù)的存儲(chǔ)過(guò)程。需要說(shuō)明的是,本實(shí)施例中關(guān)系表存儲(chǔ)于關(guān)系數(shù)據(jù)庫(kù)中,在實(shí)施存儲(chǔ)故障樹(shù)之前,已經(jīng)在關(guān)系數(shù)據(jù)庫(kù)中建立用于保存故障樹(shù)數(shù)據(jù)的數(shù)據(jù)庫(kù),并在該數(shù)據(jù)庫(kù)中建立各存儲(chǔ)表,存儲(chǔ)表可理解為四中關(guān)系表的統(tǒng)稱,當(dāng)然,在遍歷故障樹(shù)之前,存儲(chǔ)表為空表,然后在遍歷故障樹(shù)的過(guò)程中執(zhí)行步驟1至4,完成對(duì)故障樹(shù)數(shù)據(jù)的存儲(chǔ)。
如圖3所示,與本發(fā)明上述對(duì)故障樹(shù)數(shù)據(jù)的存儲(chǔ)結(jié)構(gòu)相匹配,本發(fā)明還公開(kāi)了一種故障樹(shù)數(shù)據(jù)的讀取方法,通過(guò)如下步驟對(duì)上述的故障樹(shù)數(shù)據(jù)的存儲(chǔ)方法存儲(chǔ)的故障樹(shù)數(shù)據(jù)進(jìn)行讀取。
步驟a,獲取待讀取的目標(biāo)故障樹(shù)id,在故障樹(shù)表faulttree中檢索與故障樹(shù)id匹配的記錄,獲取該故障樹(shù)的基本信息;
步驟b,在頂事件關(guān)系表topevent中檢索出匹配該故障樹(shù)id的記錄,從而獲取屬于該故障樹(shù)的頂事件;
步驟c,在中間事件關(guān)系表midevent中檢索出匹配該故障樹(shù)id的記錄,并返回結(jié)果集,獲取屬于該故障樹(shù)的所有中間事件;
步驟d,在底事件關(guān)系表botevent中檢索出匹配該故障樹(shù)id的記錄,并返回結(jié)果集,獲取屬于該故障樹(shù)的所有底事件。
在本說(shuō)明書(shū)的描述中,參考術(shù)語(yǔ)“本實(shí)施例”、“一個(gè)實(shí)施例”、“一些實(shí)施例”、“示例”、“具體示例”、或“一些示例”等的描述意指結(jié)合該實(shí)施例或示例描述的具體特征、結(jié)構(gòu)、材料或者特點(diǎn)包含于本發(fā)明的至少一個(gè)實(shí)施例或示例中。在本說(shuō)明書(shū)中,對(duì)上述術(shù)語(yǔ)的示意性表述不必須針對(duì)的是相同的實(shí)施例或示例。而且,描述的具體特征、結(jié)構(gòu)、材料或者特點(diǎn)可以在任一個(gè)或多個(gè)實(shí)施例或示例中以合適的方式結(jié)合。此外,在不相互矛盾的情況下,本領(lǐng)域的技術(shù)人員可以將本說(shuō)明書(shū)中描述的不同實(shí)施例或示例以及不同實(shí)施例或示例的特征進(jìn)行結(jié)合和組合。
以上所述僅為本發(fā)明的較佳實(shí)施例而已,并不用以限制本發(fā)明,凡在本發(fā)明實(shí)質(zhì)內(nèi)容上所作的任何修改、等同替換和簡(jiǎn)單改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。