Tinkerpop - Titan / Cassandra项目设置

时间:2014-09-04 09:58:12

标签: java-ee architecture cassandra titan tinkerpop

我正在设置一个Java Enterprise 1.7项目,该项目使用TinkerPop 3和Titan 0.5与Cassandra。

一般的想法是:

  1. 运行Titan 0.5的专用数据库服务器,
  2. Tinkerpop 3 某处
  3. 运行与数据库服务器分离的Java EE 7应用程序的Application Server。
  4. 我有很多未解决的问题,我想要求最佳做法建议示例

    1. Tinkerpop 3应该留在哪里?在Application Server或数据库服务器中?
    2. Tinkerpop如何与泰坦交流?
    3. 使用Titan为Tinkerpop提供此类环境的最佳配置是什么?
    4. Java Enterprise应用程序应如何与Tinkerpop通信?
    5. Tinkerpop API应该如何与Java EE集成?请记住多个用户同时和一般的企业环境问题(缓存,trandactions,多次调用数据库等)
    6. 您有任何项目设置示例吗?
    7. 这个基本配置最终将放入github ot bitbucket准备好用于其他项目。

1 个答案:

答案 0 :(得分:4)

Titan有点像数据库,但有点像GraphDB驱动程序。我这样说是因为无论你选择什么配置,Titan都会使用另一个DB作为存储后端。目前的选项包括BerkeleyDB,HBase和Cassandra。 This page描述了Cassandra的系统架构选项。

我将remote server mode用于java网络应用。我分别运行Cassandra,我在每个应用程序服务器中使用Titan通过thrift与Cassandra进行通信(Titan也支持astyanax)。我创建了一个TitanGraph实例并将其(通过工厂bean包装器)注入到需要访问图形的任何Service Beans中。

TitanGraph将负责事务级别和数据库级别的缓存。这是可配置的。

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

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

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

我没有公开项目的例子,但我真的应该这样做。也许我本周末有时间提出一些事情。

使用Spring,JAX-RS和Jersey的

Here is an example web app