Tinkerpop3 连接到远程 TitanDB 服务器

Tinkerpop3 connect to remote TitanDB server

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

换句话说,我正在尝试实现这样的功能:

public Graph obtainGraph(String serverIp, String graphName);

我试着像这里那样做:

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

文档以及 Internet 上的大多数资料都使用内存中的图表作为示例,但我找不到一个说明如何:

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

我在 Internet 的许多地方看到,GraphFactory.open() 获取属性文件的路径,但是我还没有看到此类文件内容的示例,尤其是与 TitanDB 相关的数据,所以我会更喜欢使用 Configuration 对象。

Graph graph = GraphFactory.open(new BaseConfiguration())

表示没有 gremlin.graph 属性.

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

Graph graph = GraphFactory.open(configuration);

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

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

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

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

如果你不想这样做,因为你想直接使用 Java API,你应该使用 TitanFactory.open() to make a direct connection to your graph. TitanFactory.open() creates a TitanGraph 可以执行你的图表的实例 API呼吁反对。 它不会启动 Titan 服务器。在幕后,它会创建到后端存储和索引的客户端连接。

没有Titan Server https://github.com/pluradj/titan-tp3-java-example

的Titan Java程序可以参考这个例子

您可以使用属性文件配置它(这里是一个通过代码的 example configuration using Cassandra and Elasticsearch) or by constructing a Configuration 对象(基本上设置与属性文件中相同的键值对)。

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

  • 记下 storage.hostnameindex.search.hostname,因为它们分别是您的 Cassandra 和 Elasticsearch 集群。 这些本质上是您的 "graph server". 您不需要单独的 Titan 服务器 运行.

  • Titan 没有任何 API 可以从后端存储中删除图形。要删除整个图表,您需要通过 Java client driver, and execute the API to drop the keyspace. Similarly, you would need to connect to Elasticsearch through its Indices API 连接到 Cassandra,然后删除索引。