2017-07-16 27 views
-1

是否有可集成到Java應用程序中的分佈式鍵值存儲或圖形數據庫?用於Java的嵌入式和分佈式鍵值存儲或圖形數據庫

我在看泰坦+ BerkeleyDB,但它似乎仍然需要一個單獨的服務器。

http://titan.thinkaurelius.com/wikidoc/0.4.0/Home.html

可以在單機模式下運行的泰坦,並連接到其他節點泰坦?如果是,那麼如何配置或實現?

是否有像HazelCast那樣的東西,但分佈式持久性存儲與創建https://crate.io/類似,如果泰坦不以這種方式工作。

回答

0

使用BerkeleyDB的TitanDB或JanusGraph(由TitanDB 1.0.0分支)可以同時嵌入Java或獨立服務器。

如果你使用Maven,那麼在POM文件中添加這些依賴關係:

<dependency> 
    <groupId>com.thinkaurelius.titan</groupId> 
    <artifactId>titan-core</artifactId> 
    <version>1.0.0</version> 
</dependency> 
<dependency> 
    <groupId>com.thinkaurelius.titan</groupId> 
    <artifactId>titan-berkeleyje</artifactId> 
    <version>1.0.0</version> 
</dependency> 

示例代碼:

ModifiableConfiguration config = GraphDatabaseConfiguration.buildGraphConfiguration(); 
config.set(GraphDatabaseConfiguration.STORAGE_BACKEND, "berkeleyje"); 
config.set(GraphDatabaseConfiguration.STORAGE_DIRECTORY,"data"); 
TitanGraph graph = TitanFactory.open(config); 

TitanManagement mgmt = graph.openManagement(); 
mgmt.makePropertyKey("name").dataType(String.class).make(); 
mgmt.makeEdgeLabel("friend").make(); 
mgmt.commit(); 

TitanTransaction tx = graph.newTransaction(); 
Vertex ashaful = tx.addVertex("name", "Ashraful Islam"); 
Vertex jishnu = tx.addVertex("name", "Jishnu Banerjee"); 
Vertex ovi = tx.addVertex("name", "Ahsanul Haque Ovi"); 
ashaful.addEdge("friend", jishnu); 
jishnu.addEdge("friend", ovi); 
tx.commit(); 

GraphTraversalSource g = graph.traversal(); 
GraphTraversal result = g.V().has("name", "Ashraful Islam").out("friend").out("friend").values("name"); 
while (result.hasNext()) { 
    System.out.println(result.next()); 
} 

graph.close(); 

TitanDB或JanusGraph節點不互相溝通,你必須爲您的所有節點使用通用存儲後端羣集(Cassandra/HBase),以使其數據一致。

+0

當在嵌入式模式下運行時,是否有一種Titan作爲集羣連接的方式,例如,我有3個運行Titan的Servlet可以將數據分配到3個節點中嗎? – xybrek

+0

TitanDB或JanusGraph節點彼此不通信,您必須爲所有節點使用公共存儲後端羣集(Cassandra/HBase),以使其數據一致。 –

+0

查看文檔,它可以使用Hazelcast進行聚類:http://titan.thinkaurelius.com/wikidoc/0.4.1/Using-Hazelcast.html – xybrek