本發(fā)明屬于數(shù)據(jù)庫技術領域,涉及一種為關系型數(shù)據(jù)庫擴展圖計算功能的系統(tǒng)。
背景技術:
“圖計算”是以“圖論”為基礎的對現(xiàn)實世界的一種“圖”結構的抽象表達,即將客觀事物實體抽象成“節(jié)點”,將事物之間的關系抽象成“邊”的表達方式,以及在這種數(shù)據(jù)結構上的計算模式。大數(shù)據(jù)時代,圖計算在關聯(lián)分析、聚集分析、路徑分析等應用中是必不可少的工具。
在此大背景下,“圖數(shù)據(jù)庫”或“多模式數(shù)據(jù)庫”產(chǎn)品就應運而生,用于解決“圖”的存儲、查詢和計算,如neo4j、orientdb等產(chǎn)品。而在此之前,廣泛使用的數(shù)據(jù)庫被稱作“關系型數(shù)據(jù)庫”,如mysql、postgresql等產(chǎn)品。這兩種數(shù)據(jù)庫產(chǎn)品在數(shù)據(jù)的組織形式上是完全不同的。關系型數(shù)據(jù)庫不具備“圖數(shù)據(jù)庫”節(jié)點和邊的邏輯,不具備圖計算的路徑查找、圖遍歷、聚類等算法。因此傳統(tǒng)的關系型數(shù)據(jù)庫中的數(shù)據(jù),需要重新定義成“節(jié)點”和“邊”的關系后,導入“圖數(shù)據(jù)庫”,才能實現(xiàn)“圖”算法。
現(xiàn)有的“圖數(shù)據(jù)庫”通常是獨立的數(shù)據(jù)庫產(chǎn)品,與“關系型數(shù)據(jù)庫”是“替代”關系。數(shù)據(jù)需要導出并保存到圖數(shù)據(jù)庫里,即用戶要想使用圖數(shù)據(jù)庫就需要進行一次數(shù)據(jù)的拷貝或者遷移,增加了用戶的成本,過程也很耗費時間。
技術實現(xiàn)要素:
本發(fā)明的目的是提出一種無需數(shù)據(jù)的拷貝或者遷移,就可以實現(xiàn)圖數(shù)據(jù)的抽象和計算功能的系統(tǒng)。本發(fā)明的系統(tǒng)中,數(shù)據(jù)仍然保存在“關系型數(shù)據(jù)庫”中,然后采用一個額外的系統(tǒng)來擴充關系型數(shù)據(jù)庫的功能,不需要數(shù)據(jù)庫的導入導出。
為實現(xiàn)上述目的,本發(fā)明采用的技術方案為一種為關系型數(shù)據(jù)庫擴展圖計算功能的系統(tǒng),包含關系型數(shù)據(jù)庫及關系型數(shù)據(jù)庫的接口,用戶可通過關系型數(shù)據(jù)庫的接口訪問關系型數(shù)據(jù)庫,還包括一個擴展系統(tǒng),該系統(tǒng)包含數(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ù)的“節(jié)點”和關系型數(shù)據(jù)庫的“表”對應,將圖數(shù)據(jù)的“邊”和關系型數(shù)據(jù)庫的“表”對應。
又進一步,上述與“節(jié)點”對應的表包含唯一標識字段。
與“邊”對應的表包含兩個關鍵字段。
進一步,數(shù)據(jù)轉換模塊進行數(shù)據(jù)轉換時,如果關系型數(shù)據(jù)庫中沒有“邊”能夠對應的表,則生成“邊”的數(shù)據(jù)。
上述生成“邊”的數(shù)據(jù)可以是生成新的表或新的視圖。
上述圖計算引擎接受主控模塊的數(shù)據(jù)后可以實現(xiàn)圖的遍歷、路徑查找和連通性計算。
上述圖計算引擎可以通過gpu實現(xiàn)。
與現(xiàn)有技術相比,本發(fā)明具有以下有益效果:
(1)通過本發(fā)明關系型數(shù)據(jù)庫的用戶不需要進行數(shù)據(jù)庫的導出,不需要增加一份數(shù)據(jù),或者放棄現(xiàn)有的數(shù)據(jù)庫就可以支持圖計算相關功能。
(2)用戶現(xiàn)有的應用不受任何影響,仍然通過原接口訪問數(shù)據(jù)庫。
(2)本系統(tǒng)完成關系型數(shù)據(jù)庫到圖數(shù)據(jù)庫的節(jié)點和邊的抽象,定義新的圖數(shù)據(jù)訪問接口,按照圖數(shù)據(jù)的方式操作原有數(shù)據(jù)和新增的圖數(shù)據(jù)。
(3)支持靈活的圖計算引擎。
附圖說明
圖1為本發(fā)明的系統(tǒng)示意圖。
圖2為關系型數(shù)據(jù)與圖數(shù)據(jù)的轉換示意圖。
具體實施方式
現(xiàn)結合附圖對本發(fā)明做進一步詳盡的說明。
如圖1所示,本發(fā)明的系統(tǒng)包含關系型數(shù)據(jù)庫及關系型數(shù)據(jù)庫的接口,用戶可通過關系型數(shù)據(jù)庫的接口訪問關系型數(shù)據(jù)庫,還包括一個擴展系統(tǒng),該系統(tǒng)包含數(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ù)。圖數(shù)據(jù)操作接口模塊為用戶提供“圖數(shù)據(jù)”的操作接口,操作可分為幾部分:
1.對于“圖”中指定某類“節(jié)點”和“邊”的查詢、插入、修改、查詢,仍然可以使用關系數(shù)據(jù)庫的sql語句,也可以使用“圖數(shù)據(jù)”特有的模式查詢接口。
2.對于“圖數(shù)據(jù)”特有的“模式”查詢,使用特有的模式查詢接口。如某兩個節(jié)點的路徑的查詢,限定條件的關聯(lián)關系查詢等等。
數(shù)據(jù)轉換模塊。將用戶圖數(shù)據(jù)操作,翻譯成“關系數(shù)據(jù)庫”相關的操作。與關系數(shù)據(jù)庫通信,完成數(shù)據(jù)庫的插入、刪除、修改、查詢。數(shù)據(jù)轉換主要包括幾個方面:
1.“節(jié)點”和關系數(shù)據(jù)庫“表”的對應。生成節(jié)點的表,應該具備唯一標識字段。一般的,應該有幾個字段表名“節(jié)點”的屬性。比如關系型數(shù)據(jù)庫的學生信息表,將學號作為節(jié)點id,性別、年紀、班級……作為節(jié)點屬性。
2.“邊”與關系數(shù)據(jù)庫“表”的對應?!斑叀睂谋?,應該包含兩個關鍵字段,指明“邊”連接的兩個“節(jié)點”的類型和id。
3.原數(shù)據(jù)庫中沒有“邊”能夠對應的表,應該采用生成新的表、新的視圖等方式產(chǎn)生“邊”的數(shù)據(jù)。
圖2是數(shù)據(jù)轉換的示例,原數(shù)據(jù)庫中的表a、表b分別保存實體a、實體b的信息,有id字段唯一標識表項。經(jīng)過數(shù)據(jù)轉換模塊可直接抽象成“節(jié)點”類型a和b,原表中一個節(jié)點對應圖數(shù)據(jù)中的一個“節(jié)點”,無需增加新的存儲,圖數(shù)據(jù)庫操作接口,可以直接查詢到兩類節(jié)點。
同時,表ab保存某個實體a和某個實體b之間的關系。這張表如果在原數(shù)據(jù)庫中存在,則可以直接使用。如果不存在,可以通過生成視圖、生成表的方式產(chǎn)生。圖數(shù)據(jù)操作接口根據(jù)這個表,可找到實體a和實體b節(jié)點間的所有“邊”,并可根據(jù)指定的模式,進行任意的實體a、實體b、邊ab的查詢。
主控模塊接受接口模塊圖數(shù)據(jù)相關的操作;提交給數(shù)據(jù)轉換模塊,數(shù)據(jù)轉換任務;將數(shù)據(jù)準備好以后,傳遞給圖計算引擎,完成圖計算相關的操作。
圖計算引擎接受主控模塊的數(shù)據(jù),實現(xiàn)圖的遍歷、路徑查找、連通性計算等功能。圖計算引擎還可以通過gpu實現(xiàn)。
用戶使用時,原有的應用使用原有的接口,新的圖計算相關的應用使用新接口。除此之外,還具備以下特點:
(1)本系統(tǒng)是與關系型數(shù)據(jù)庫共同運行的系統(tǒng),使關系型數(shù)據(jù)庫具備圖數(shù)據(jù)庫的功能。
(2)用戶的數(shù)據(jù)不需要導出,不需要重新組織,仍然存放在關系型數(shù)據(jù)庫中。使本系統(tǒng)來完成圖數(shù)據(jù)庫的建模后,數(shù)據(jù)仍然存放在關系型數(shù)據(jù)庫中。
(3)用戶原有的應用系統(tǒng),使用原有的方式訪問數(shù)據(jù)庫。需要使用圖數(shù)據(jù)的方式訪問數(shù)據(jù)則通過本系統(tǒng)的圖數(shù)據(jù)訪問接口。
(4)圖計算引擎作為本系統(tǒng)圖計算的核心單元,決定系統(tǒng)圖計算的性能。本系統(tǒng)的圖計算引擎支持gpu加速,將圖數(shù)據(jù)轉換成鄰接矩陣,實現(xiàn)圖的路徑查找、聯(lián)通性計算、聚合、pagerank等算法。