Tinkerpop3连接到远程TitanDB服务器

时间:2016-08-03 15:00:30

标签: java titan gremlin tinkerpop3 tinkerpop-blueprint

我试图在Java中使用Tinkerpop3作为客户端从已经运行的TitanDB服务器获取Graph对象(我不想创建服务器)。

换句话说,我正在尝试实现这样的功能: public Graph obtainGraph(String serverIp,String graphName);

我试图像这样做: AWS Lambda + Tinkerpop/Gremlin + TitanDB on EC2 + AWS DynamoDB in cloud

但据我了解,TitanFactory.open()启动服务器,我不想这样做 - 我只想连接到现有服务器。

文档以及Internet中的大多数材料使用内存中的图表作为示例,我找不到一个,它显示了如何:

  • 创建新图并将其保存在远程服务器上

  • 从远程服务器检索现有图表

  • 更新此类远程Graph,因此在添加/删除边缘提交更改后

  • 删除整个图表

我不想通过Gremlin语言(字符串)来做上述事情,而是通过Java API(TinkerpopBlueprins)。 这家伙接近我需要的东西: Add vertices to TitanDB Graph in Java 但是,他的方法已经将Graph作为参数。

我在互联网的很多地方看到过GraphFactory.open()获取属性文件的路径,但是我还没有看到这种文件内容的例子,尤其是TitanDB的相关数据,所以我更喜欢使用配置对象。

图形图= GraphFactory.open(new BaseConfiguration())

说,没有gremlin.graph属性。

配置配置= new BaseConfiguration(); configuration.setProperty(" gremlin.graph"," titan");

图形图形= GraphFactory.open(配置);

说GraphFactory找不到[titan] - 确保jar在类路径中

是否有任何静态类型的构建器包含枚举和常量,而不是Map,它会告诉我,我必须提供哪些属性以及它们的类型是什么? 是否有任何开源项目,使用Tinkerpop3作为客户端连接到远程TitanDB服务器,我可以作为示例使用?

我希望看到完整的工作示例,而不是使用外部配置的内存。

1 个答案:

答案 0 :(得分:7)

以下是连接到正在运行的Titan Server的Titan驱动程序示例。 https://github.com/pluradj/titan-tp3-driver-example正如您所指出的,这会将Gremlin作为字符串传递给远程Titan服务器。

如果您不想直接使用Java API,则应使用TitanFactory.open()直接连接到图表。 TitanFactory.open()创建了一个TitanGraph实例,您可以执行图形API调用。 它没有启动Titan服务器。在幕后,它创建了与后端存储和索引的客户端连接。

对于没有Titan Server {4}}

的Titan Java程序,您可以参考此示例

您可以使用属性文件(这里是使用Cassandra和Elasticsearch的{​​{3}})或通过代码构建https://github.com/pluradj/titan-tp3-java-example对象来配置它(基本上设置相同的键值对)属性文件)。

  • 如果在初始连接之前图形不存在,Titan将在Cassandra中创建图形键空间并在Elasticsearch中创建索引。

  • 记下storage.hostnameindex.search.hostname,因为它们分别是您的Cassandra和Elasticsearch集群。 这些基本上就是您的“图形服务器”。您不需要运行单独的Titan Server。

  • Titan没有任何API可以从后端存储中删除图表。要删除整个图形,您需要通过example configuration连接到Cassandra,然后执行API以删除键空间。同样,您需要通过其Configuration连接到Elasticsearch,并删除索引。