一種基于MongoDB實現圖轉換的方法和裝置的制造方法【
技術領域:
】[0001]本發明涉及模型驅動領域的基于圖的模型轉換問題,以及云計算非關系型數據庫領域的MongoDB使用問題。【
背景技術:
】[0002]模型驅動工程(MDE)是以模型作為軟件開發的核心制品,并提升模型在開發過程中的作用,利用模型指導開發人員對于軟件系統的理解、設計、構造、維護和演化,從而提高軟件的開發和維護的效率,降低成本。[0003]在模型驅動工程中兩項關鍵的技術就是軟件建模技術和模型轉換技術,模型轉換技術可以用于將開發過程中的一個模型自動或者半自動的轉換成另一個模型,從而推動整個開發過程。隨著近來不斷增加的軟件規模,這種模型轉換工作量顯得非常龐大,傳統通過手工或者在計算機內存實現模型轉換已經漸漸地不可行。[0004]圖轉換是使用“圖”作為基本概念,圖G=(V,E)由節點和邊組成。兩個圖匕和G2之間存在存在映射fA1OG2,用來表示G1中節點和邊與G2中節點和邊的對應關系。當把模型看做圖時,圖中每個元素與關系都有一個類型,因此圖轉換中使用類型圖的概念,用來對元素的類型和結構進行約束。[0005]NoSQL泛指非關系型數據庫,意即“不僅僅是SQL”,是一項全新的數據庫革命性運動,NoSQL的擁護者們提倡使用非關系型的數據存儲。它主要有四大分類:鍵值(Key-Value)存儲數據庫、列存儲數據庫、文檔型數據庫以及圖形(Graph)數據庫。在本發明中主要涉及的是文檔型數據庫MongoDB。[0006]MongoDB是一個介于關系數據庫和非關系數據庫之間的產品,是非關系數據庫當中功能最豐富,最像關系數據庫的。他支持的數據結構非常松散,是類似json的bson格式,因此可以存儲比較復雜的數據類型。MongoDB中數據被分組存儲在數據集中,稱該數據集為集合(Collect1n)。每個集合在數據庫中都有一個唯一的標識名,并且可以包含無限數目的文檔。集合的概念類似關系型數據庫(RDBMS)里的表(table),不同的是它不需要定義任何模式(schema)。存儲在集合中的文檔,被存儲為鍵_值對的形式。鍵用于唯一標識一個文檔,為字符串類型,而值則可以是各種復雜的文件類型。我們稱這種存儲形式為BS0N。【
發明內容】[0007]本發明所要解決的問題是不斷增加的軟件規模下,模型轉換工作量巨大,采用手工顯而變得不可行,而采用普通方法下,計算機的內存也不足以支持如此龐大的工程。[0008]為解決上述問題,本發明采用的方案如下:根據本發明的一種基于MongoDB實現圖轉換的方法,該方法包含以下步驟:51:獲取元模型、模型實例以及轉換規則;52:依據所述元模型的定義,在MongoDB中創建相應的文檔存儲集合;53:根據所述文檔存儲集合的定義,利用MongoDB的插入和更新操作,將模型實例映射存儲至MongoDB;54:利用MongoDB的查詢操作,在MongoDB中查找模型實例中符合所述轉換規則的前置條件的模型實例片段;55:依據所述轉換規則的定義,對步驟S4得到的模型實例片段執行相應的MongoDB插入、更新和刪除操作實現模型轉換,得到轉換后的模型實例輸出;所述元模型為由類型節點和類型關聯關系組成有向圖;所述模型實例為由類型實例和關聯實例組成的有向圖;所述轉換規則包括前置條件、后置條件、前后映射關系;所述前置條件和所述后置條件為符合所述元模型定義的有向圖;所述前后映射關系用以表示所述前置條件至所述后置條件的映射關系。[0009]進一步,根據本發明的基于MongoDB實現圖轉換的方法,所述轉換規則還包括否定性條件;所述否定性條件是轉換規則不能被應用的條件;所述步驟S4還包括:S4X:剔除滿足所述否定性條件的模型實例片段。[0010]進一步,根據本發明的基于MongoDB的圖轉換實現方法,所述步驟S4包括:541:將所述前置條件劃分成多個連通子圖;542:對各個連通子圖中的各個類型節點,在MongoDB中查找符合類型節點的約束條件的類型實例;543:對步驟S42得到類型實例做笛卡爾乘積運算后組成模型實例片段。[0011]進一步,根據本發明的基于MongoDB實現圖轉換的方法,所述步驟S5包括:551:根據所述前后映射關系,找出所述前置條件中存在而所述后置條件中不存在的類型節點集合Del;552:根據所述前后映射關系,找出所述前置條件中不存在而所述后置條件中存在的類型節點集合Ins;553:通過MongoDB的刪除操作,在步驟S4得到的模型實例片段中刪除類型節點集合Del中類型節點所對應的類型實例;554:創建類型節點集合Ins中類型節點所對應的類型實例,并通過MongoDB的插入和更新操作,將創建的類型實例加入至模型實例片段中。[0012]根據本發明的一種基于MongoDB實現圖轉換的裝置,包括:輸入裝置,用于獲取元模型、模型實例以及轉換規則;存儲模型構建裝置,用于依據所述元模型的定義,在MongoDB中創建相應的文檔存儲集合;模型實例存儲裝置,用于根據所述文檔存儲集合的定義,利用MongoDB的插入和更新操作,將模型實例映射存儲至MongoDB;前置匹配裝置,用于利用MongoDB的查詢操作,在MongoDB中查找模型實例中符合所述轉換規則的前置條件的模型實例片段;規則轉換裝置,用于依據所述轉換規則的定義,對前置匹配裝置得到的模型實例片段執行相應的MongoDB插入、更新和刪除操作實現模型轉換,得到轉換后的模型實例輸出;所述元模型為由類型節點和類型關聯關系組成有向圖;所述模型實例為由類型實例和關聯實例組成的有向圖;所述轉換規則包括前置條件、后置條件、前后映射關系;所述前置條件和所述后置條件為符合所述元模型定義的有向圖;所述前后映射關系用以表示所述前置條件至所述后置條件的映射關系。[0013]進一步,根據本發明的基于MongoDB實現圖轉換的裝置,述轉換規則還包括否定性條件;所述否定性條件是轉換規則不能被應用的條件;所述前置匹配裝置還包括:否定性條件檢查裝置,用于剔除滿足所述否定性條件的模型實例片段。[0014]進一步,根據本發明的基于MongoDB實現圖轉換的裝置,所述前置匹配裝置包括:連通拆分裝置,用于將所述前置條件劃分成k個連通子圖;節點匹配裝置,用于對各個連通子圖中的各個類型節點,在MongoDB中查找符合類型節點的約束條件的類型實例;實例合并裝置,用于對節點匹配裝置得到類型實例做笛卡爾乘積運算后組成模型實例片段。[0015]進一步,根據本發明的基于MongoDB實現圖轉換的裝置,所述規則轉換裝置包括:裝置,用于根據所述前后映射關系,找出所述前置條件中存在而所述后置條件中不存在的類型節點集合Del;裝置,用于根據所述前后映射關系,找出所述前置條件中不存在而所述后置條件中存在的類型節點集合Ins;裝置,用于通過MongoDB的刪除操作,在步驟S4得到的模型實例片段中刪除類型節點集合Del中類型節點所對應的類型實例;<當前第1頁1 2 3 4