Java 的嵌入式和分布式键值存储或图形数据库
Embedded and Distributed Key Value Store or Graph Database for Java
是否有可以集成到 Java 应用程序中的分布式键值存储或图形数据库。
我在看 Titan + BerkeleyDB,但它似乎仍然需要一个单独的服务器。
http://titan.thinkaurelius.com/wikidoc/0.4.0/Home.html
Titan 运行 可以在单机模式下连接到其他Titan 节点吗?如果是,如何配置或实现?
是否有类似 HazelCast 但具有类似于 Create https://crate.io/ 的分布式持久存储的东西,如果 Titan 不能那样工作的话。
带有 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),以便它们的数据保持一致。
您可以查看 Permazen。
它基本上是一个简单的 key/value 存储之上的 Java-centric 持久层。提供了几种 key/value 商店口味。
免责声明:我是项目作者。
是否有可以集成到 Java 应用程序中的分布式键值存储或图形数据库。
我在看 Titan + BerkeleyDB,但它似乎仍然需要一个单独的服务器。
http://titan.thinkaurelius.com/wikidoc/0.4.0/Home.html
Titan 运行 可以在单机模式下连接到其他Titan 节点吗?如果是,如何配置或实现?
是否有类似 HazelCast 但具有类似于 Create https://crate.io/ 的分布式持久存储的东西,如果 Titan 不能那样工作的话。
带有 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),以便它们的数据保持一致。
您可以查看 Permazen。
它基本上是一个简单的 key/value 存储之上的 Java-centric 持久层。提供了几种 key/value 商店口味。
免责声明:我是项目作者。