7

我正在尝试使用 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 中的大多数材料都使用内存图作为示例,但我找不到显示如何:

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

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

  • 更新这样的远程图,所以在添加/删除边缘后提交更改

  • 删除整个图

我不想通过 Gremlin 语言(字符串)做上述事情,而是通过 Java API(TinkerpopBlueprins)。这个人正在接近我需要的东西: 在 Java 中将顶点添加到 TitanDB Graph 然而,他的方法已经Graph作为参数。

我在互联网上的很多地方都看到过 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 服务器,我可以用作示例?

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

4

1 回答 1

7

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

如果您不想这样做,因为您想直接使用 Java API,您应该使用TitanFactory.open()直接连接到您的图形。TitanFactory.open()创建一个TitanGraph实例,您可以对其执行图形 API 调用。它不会启动 Titan 服务器。在幕后,它创建与后端存储和索引的客户端连接。

您可以参考此示例了解没有 Titan Server 的 Titan Java 程序https://github.com/pluradj/titan-tp3-java-example

您可以使用属性文件(这里是使用 Cassandra 和 Elasticsearch的示例配置Configuration)或通过代码构造对象(基本上设置与属性文件中相同的键值对)进行配置。

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

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

  • Titan 没有任何 API 可以从后端存储中删除图形。要删除整个图,您需要通过Java 客户端驱动程序连接到 Cassandra ,并执行 API 以删除密钥空间。同样,您需要通过其Indices API连接到 Elasticsearch ,并删除索引。

于 2016-08-03T15:20:43.330 回答