4

我没有使用 AWS,而是使用其本地可用的 DynamoDB 数据库并在 Gremlin 控制台中创建图表。

我的电脑正在使用Gremlin-version=3.0.1.incubatingTitan-version=1.0.0

我的问题:如何将图表保存在我的本地 DynamoDB 中,以便我可以随时取回它?(例如在计算机重新启动后)。

我已经尝试了很多,使用save()commit()图表。但我总是得到一个错误:

g.commit()
No signature of method: org.apache.tinkerpop.gremlin.process.traversal.dsl.graph
  .GraphTraversalSource.commit() is applicable for argument types: () values: []
Possible solutions: wait(), computer(), collect(), wait(long), computer(java.lang.Class), collect(groovy.lang.Closure)

我正在使用Tinkerpop 3.

4

2 回答 2

4

相关文档链接:

正如 Filipe 提到的,g.commit()抛出异常是因为没有commit()方法gGraphTraversalSource. 我建议你使用graph.tx().commit(), where graph.tx()gets the Transactionfrom Graph。在评论中,我们发现您正在尝试在不支持事务commit()的 a 上进行事务。TinkerGraph

您需要实例化 a TitanGraph,而不是 a TinkerGraph。这通常使用属性文件完成,并且存储库中有一个 DynamoDB 本地示例属性文件dynamodb-titan-storage-backend。确保更新storage.dynamodb.client.endpoint以匹配您的配置。如果您使用来自 DynamoDB-Titan 链接的 Titan 服务器说明,则端口为4567. 如果您使用上述 DynamoDB 本地链接中的说明,则默认端口为8000.

gremlin> graph = TitanFactory.open('conf/gremlin-server/dynamodb-local.properties')
==>standardtitangraph[com.amazon.titan.diskstorage.dynamodb.DynamoDBStoreManager:[127.0.0.1]]
gremlin> v0 = graph.addVertex('name', 'jason'); v1 = graph.addVertex('name', 'mustaffa'); v0.addEdge('helps', v1)
==>e[175-39k-1lh-374][4232-helps->4144]
gremlin> graph.tx().commit()
==>null

另请注意,DynamoDB-Titan 方向最终会启动内存中的 DynamoDB Local 实例。这种行为可以通过注释掉-inMemory参数来改变pom.xml

于 2016-11-29T16:52:09.283 回答
0

您正在尝试提交您的遍历g。您应该尝试像这样提交您的图表:graph.commit().

g是这样初始化的遍历:g = graph.traversal()并且它不能被提交。

于 2016-11-28T12:58:32.897 回答