圖數據庫Titan運行在多種數據庫之上的,這些數據庫都是亞馬遜Web服務支持的。很多人認為圖數據庫僅對于社交應用有用,比如Facebook或者LinkedIn。但是Titan也是亞馬遜Kiva系統用來管理其零售倉庫的主數據庫。而且由于亞馬遜倉庫系統可能是全球最大的倉庫系統,關于零售巨頭如何使用這項技術值得一看,另外企業要看看如何用其同現有的AWS部署合作。Titan在設計應用和倉庫之外也發展很好。
除了社交應用之外,圖數據庫同很多應用可以工作。很多應用可以自然擴展使用圖形類型的關系。比如,好多內嵌在社交應用中的推薦系統常常都是基于圖形的系統。圖數據庫由一系列結點和邊界組成;每一個結點代表了一個實體,每一個邊界代表了兩個結點之間的一種連接或者關系。圖數據庫,尤其是Titan易于安裝和集成。
Titan是一種基于NoSQL的數據庫。NoSQL是一種概括性術語,泛指所有非關系型數據庫。在這個范圍之下有多個不同的模型,每一個都有自己的優點和缺點。Cassandra是另一種基于NoSQL的數據庫,天生適用于時間序列數據,但是不適合處理關系結點網絡的即席查詢。在這樣的實例中,圖數據庫卻非常合適。
Titan組件和存儲引擎
技術上,Titan并不是數據庫;它是一個數據庫之上的客戶端庫。它依賴于下面的存儲引擎,比如Cassandra或者Hadoop,來存儲其數據。它也依賴于索引引擎,比如Lucene、ElasticSearch或者Solar,來執行相關的查詢。因此,只要你的對戰中有這些技術,就可以在上面添加Titan;實際上你不需要部署另一個分布式數據庫系統。這樣做就減少了額外開支,可以加速新技術的應用。
Titan需要一個存儲引擎,因為這是用來存儲結點和邊界的。Cassandra和HBase都運行在AWS上,而且支持大數據風格的擴展。亞馬遜關系數據服務和Aurora是所缺少的兩個存儲引擎;然而,在最近的波士頓AWS Meetup上,很多AWS用戶要求亞馬遜添加Aurora來支持Titan。像ElasticSearch、Lucene或者Solr這樣的索引后端進行常規操作,但是需要執行相關的查詢。一旦下載了Titan,你會得到運行嵌入式存儲引擎和索引后端的配置。
開發者可以在邊界上增加屬性和語義,比如定義指令和基數。屬性可以讓開發者搜索關系的具體類型;指令和基數允許在數據上執行域的語義。
開啟Titan圖數據庫
對于計劃在AWS上使用Titan的企業而言,開始在白板上畫一個應用的主數據結構是自家的方式,然后使用Gremlin命令行工具在圖表中創建結點和邊界。從這一點上看,你可以用Gremlin查詢界面,而且可能發現面向圖形的方法簡化了查詢。
另一個選擇是采用Titan的內置數據庫,“The Graph of the Gods.”你可以下載一個數據庫,里面有完整一套“god”和“關系”,然后在那個數據庫閃剛運行查詢。為了實現這一點,啟動gremlin,然而運行gremlin> GraphOfTheGodsFactory.load(g)
你也可以運行所有類型的查詢,比如:
saturn = g.V.has('name','saturn').next() to find a particular node or
saturn.in('father').in('father').name to find Saturn's grandchild (Hercules) or
hercules.out('father','mother')*.getVertexLabel() to find Hercules' parents.