2

我正在建立一个使用 TinkerPop 3 和 Titan 0.5 和 Cassandra 的 Java Enterprise 1.7 项目。

总体思路是:

  1. 运行 Titan 0.5 的专用数据库服务器,
  2. Tinkerpop 3某处
  3. 运行与数据库服务器分离的 Java EE 7 应用程序的应用程序服务器。

我有许多未解决的问题,我想询问最佳实践建议示例

  1. Tinkerpop 3 应该放在哪里?在应用程序服务器或数据库服务器中?
  2. Tinkerpop 如何与 Titan 通信?
  3. 对于 Tinkerpop with Titan 这种环境的最佳配置是什么?
  4. Java Enterprise 应用程序应如何与 Tinkerpop 通信?
  5. Tinkerpop API 应该如何与 Java EE 集成?请记住同时多个用户和一般企业环境问题(缓存、交易、多次调用数据库等)
  6. 你有任何项目设置示例吗?

这个基本配置最终将放在 github ot bitbucket 中,为其他项目做好准备。

4

1 回答 1

5

Titan 有点像数据库,但也有点像 GraphDB 驱动程序。我这样说是因为无论您选择什么配置,Titan 都会使用另一个数据库作为存储后端。当前选项是 BerkeleyDB、HBase 和 Cassandra。本页介绍 Cassandra 的系统架构选项。

我对 Java Web 应用程序使用远程服务器模式。我单独运行 Cassandra,并在每个应用程序服务器中使用 Titan 通过 thrift 与 Cassandra 进行通信(Titan 也支持 astyanax)。我创建了一个 TitanGraph 实例并将其(通过工厂 bean 包装器)注入到任何需要访问图的服务 Bean 中。

TitanGraph 将处理事务级和数据库级缓存。这是可配置的。

TitanGraph 将处理并发操作。关键是让您的交易正确。您可能可以通过让事务以 1:1 的方式存在请求来开始。请记住,读取操作也发生在事务中(这有时会使新手感到困惑)。

我尽可能地坚持使用 Blueprints API (TinkerPop),但通常我需要做一些 Titan 特定的事情——通常与搜索相关。我通常将 TinkerPop 用于:

(这只是一个简短的示例列表,但这是我几乎总是做的事情。)

我没有公共项目示例,但我真的应该。也许这个周末我有时间扔东西。

这是一个使用 Spring、JAX-RS 和 Jersey的示例 Web 应用程序。

于 2014-09-05T12:11:42.217 回答