【问题标题】:Embedded and Distributed Key Value Store or Graph Database for JavaJava 的嵌入式和分布式键值存储或图形数据库
【发布时间】:2017-12-20 20:59:00
【问题描述】:

是否有可以集成到 Java 应用程序中的分布式键值存储或图形数据库。

我在看 Titan + BerkeleyDB,但它似乎仍然需要一个单独的服务器。

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

Titan 可以在独立模式下运行并连接到其他 Titan 节点吗?如果是,如何配置或实现?

如果 Titan 不能以这种方式工作,是否有类似 HazelCast 但具有类似于 Create https://crate.io/ 的分布式持久存储的东西。

【问题讨论】:

    标签: java titan


    【解决方案1】:

    您可以查看Permazen

    它基本上是一个简单的键/值存储之上的以 Java 为中心的持久层。提供了几种键/值存储风格。

    免责声明:我是项目作者。

    【讨论】:

      【解决方案2】:

      TitanDB 或 JanusGraph(从 TitanDB 1.0.0 派生)与 BerkeleyDB 可以同时嵌入 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),以便它们的数据保持一致。

      【讨论】:

      • 在嵌入式模式下运行时,有没有办法让Titan连接成一个集群,比如我有3个servlet在运行Titan,数据可以分布到3个节点上吗?
      • TitanDB 或 JanusGraph 节点之间不相互通信,您必须为所有节点使用通用存储后端集群 (Cassandra/HBase),以便它们的数据保持一致。
      • 查看它可以与 Hazelcast 一起用于集群的文档:titan.thinkaurelius.com/wikidoc/0.4.1/Using-Hazelcast.html
      • @xybrek Hazelcast 集成在 Titan 0.4.1 中内置,但在 1.0.0 版本中只有 Cassandra、HBase 和 BerkeleyDB 内置支持
      • 你好,我也看过embeddedcassandra可以集群化,你熟悉这个功能吗?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-04-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-04
      • 1970-01-01
      相关资源
      最近更新 更多