我试图在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服务器,我可以作为示例使用?
我希望看到完整的工作示例,而不是使用外部配置的内存。
答案 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.hostname
和index.search.hostname
,因为它们分别是您的Cassandra和Elasticsearch集群。 这些基本上就是您的“图形服务器”。您不需要运行单独的Titan Server。
Titan没有任何API可以从后端存储中删除图表。要删除整个图形,您需要通过example configuration连接到Cassandra,然后执行API以删除键空间。同样,您需要通过其Configuration
连接到Elasticsearch,并删除索引。