微軟進軍NoSQL 發布Trinity數據庫
原創【51CTO綜合報道】正當我們感慨各類NoSQL數據庫遍地開花的時候,老大哥微軟也加入了這一陣營,最近微軟發布了其圖數據庫系統Trinity。
筆者在很多文章中看見微軟發布了其圖數據庫系統Trinity的消息,但是Trinity具體是什么樣子的數據庫,有什么功能只有短短幾句介紹,于是筆者查看了該項目的原文地址,并加以翻譯。水平有限,請大家多多指教。
Trinity是一個圖數據庫,也是建立在分布存儲云上的計算平臺。作為一個數據庫,它提供如高度并行查詢處理、事務記錄、一致性控制等功能。作為一個計算平臺,它為大型圖形提供了同步或不同步的批處理計算。Trinity可以配置在一臺計算機或數百臺計算機上。
圖是一種具有較高表達能力的抽象數據結構。許多現實生活中的應用都可以通過圖模擬,包括生物網絡,語義網絡和社會網絡。因此,圖形引擎對多種應用都是非常重要的。目前,在這個領域有:Neo4j, HyperGraphDB,InfiniteGraph等等。
- Neo4j是一個基于磁盤的事務性圖數據庫。
- HyperGraphDB是基于鍵/值對存儲的Berkeley DB。
- InfiniteGraph是對大型圖數據分析的分布式系統。
2009年,google 發布了Pregel,作為其大型圖處理平臺。Pregel 是一個批處理系統,同時它不支持在線查詢處理或圖服務。對比來看,Trinity不僅支持在線查詢也支持離線批處理。進一步,Pregel中的批處理是嚴格同步的,但是Trinity 支持了不同步計算,有更好得性能。
#p#
Trinity 的特點
- 數據模型:超圖
- 分布式: Trinity 可以配置在一臺或上百臺計算機上
- 圖數據庫: Trinity是一個基于內存的圖倉庫,它有豐富的數據庫特點,如:在線高度并行查詢處理,ACI交易支持,等等。目前Trinity對圖處理為用戶提供C# APIs 。
- 并行圖處理系統:Trinity 支持大型,離線批處理。支持同步和不同步批計算。
圖模型
Trinity采用超圖模型。簡單圖模型和超圖模型之間的一個區別就是:超圖中的邊(稱為超邊)連接任意數量的節點,而在一個簡單的圖中邊只能連接兩個節點。
超圖是比簡單圖更一般:
- 超圖模型對許多應用程序來說更直接,因為很多關系都不是一對一的關系。
- 一些多邊關系不能輕易通過簡單圖模擬出來。直接用簡單圖建模往往導致信息丟失。
Trinity是一個分布式圖數據庫
一個圖形數據庫應該支持一些基本的數據庫功能,如查詢,事務記錄,并行控制和一致性維護。
Trinity支持內容豐富的圖表。每個節點(或邊緣)與一組數據,或者一個鍵/值對相關聯。換句話說,在Trinity中節點和邊是異構類型。
Trinity優化并發聯機查詢處理。當在一臺機器上部署,Trinity可以在一秒鐘內訪問1,000,000節點(例如,當執行BFS時)。當通過網絡部署時,速度是受網絡延遲。Trinity提供了一個圖形分割機制,以盡量減少延遲。我們在InfiniBand網絡上部署了Trinity,我們將盡快報告結果。
為支持高效的網上查詢處理,Trinity配置了各種索引。目前,我們提供單詞查找樹、訪問節點/邊緣名稱和與節點/邊緣關聯的鍵/值對散列。我們正在實現與子圖匹配的結構索引。
Trinity還支持對圖的時時更新。它是事務記錄,并發控制和一致性都生效。
目前,Trinity沒有圖形查詢語言。圖的訪問都是通過C#的API進行。我們正在為Trinity設計一種高級的查詢語言。
Trinity是一個基于圖數據的分布式并行平臺
很多圖上操作都是以批處理模式執行的,例如: PageRank,最短路徑查詢,頻繁子圖挖掘,隨機游走,圖形分割等。
和谷歌的Pregel一樣,Trinity支持以節點為基礎的圖形并行處理。通過門戶網站,用戶提供一個腳本(目前C#代碼或DLL)來對一個節點指定計算方法,包括它把什么信息傳遞給相鄰節點。該系統將對這些進行并行計算。
與谷歌的Pregel不一樣的是,在節點上的操作沒有嚴格要求以同步的方式進行。某些操作(例如,最短路徑查詢)在非同步模式下會更好的被執行。
舉個例子,這是同步的最短路徑搜索(偽代碼,C#代碼)的代碼,這是不同步最短路徑搜索(偽代碼,C#代碼)的代碼。
我們還設計一種高級語言,使用戶可以輕松編寫自己的腳本。
#p#
Trinity架構
Trinity是基于云存儲的。它主要使用內存存儲,磁盤僅作為備份存儲。
系統架構
#p#
Trinity應用
隨著越來越多的應用程序涉及圖形數據,我們預計Trinity將有許多應用。目前,Trinity支持以下兩個應用程序:Probase(一個研究原型)和AEther(生產系統)。
Trinity是Probase的基礎架構,它可以自動從網上獲得大規模知識庫。 Probase有上百萬的節點(表示概念)和邊(表示關系)。超圖比簡單圖更合適對認知建模。Trinity用于:1)分類建設; 2)數據集成(如添加Freebase data到Probase),3)查詢Probase.
Microsoft Bing的AEther項目現在使用Trinity管理AEther的實驗數據,其中包括大量的工作流和工作流中的演化。Trinity是Aether工作流程管理系統的后端圖存儲引擎。我們正在增加更多功能,特別是子圖匹配和頻繁子圖挖掘,從而支持該項目。
原文鏈接:http://research.microsoft.com/en-us/projects/trinity/