2014-09-04 38 views
2

我正在建立一个使用TinkerPop 3和Titan 0.5与Cassandra的Java Enterprise 1.7项目。Tinkerpop - Titan/Cassandra项目设置

的一般想法是有:

  1. 运行泰坦0.5的专用数据库服务器,
  2. TinkerPop有关3 某处
  3. 运行从分离的一个Java EE 7应用的应用服务器数据库服务器

我有许多悬而未决的问题,我想问的的最佳实践建议例子

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

这个基本配置最终将被放入github或者bitbucket中,准备好用于其他项目。

回答

4

泰坦有点像数据库,但也有点像GraphDB驱动程序。我这样说是因为不管你选择什么配置,泰坦将使用另一个数据库作为存储后端。目前的选项是BerkeleyDB,HBase和Cassandra。 This page描述了Cassandra的系统架构选项。

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

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

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

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

(这就是例子只是一个短名单,但它的东西,我几乎总是这样。)

我没有一个公共项目的例子,但我真的应该。也许我会有时间在这个周末抛出一些东西。

Here is an example web app使用Spring,JAX-RS和Jersey。

+0

真正有用的信息! 我希望你会找到时间分享一个公共项目的例子! – 2014-09-05 12:24:52

+1

只有一件事要补充:Titan 0.5与TP3不兼容,只与TP2兼容。泰坦0.9(下一版本)将与TP3合作。 – 2014-09-05 16:06:30

+0

@AndreaT我添加了一个链接到titan-web-example。 – 2014-09-08 22:55:15