将gremlin图存储在本地dynamodb中

时间:2016-11-28 09:45:35

标签: titan gremlin gremlin-server

嘿,而不是使用aws web我正在使用其本地可用的数据库并在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: []

可能的解决方案:wait(),computer(),collect(),wait(long),computer(java.lang.Class),collect(groovy.lang.Closure)

我正在使用tinkerpop 3,请帮忙。

谢谢。

2 个答案:

答案 0 :(得分:3)

相关文档链接:

正如Filipe所提到的,g.commit()会引发异常,因为commit()上的g方法不是GraphTraversalSource。我建议您使用graph.tx().commit(),其中graph.tx()Transaction获取Graph。在评论中,我们发现您在commit()上尝试TinkerGraph一项不支持交易的交易。

您需要实例化 TitanGraph ,而不是TinkerGraph。这通常使用properties file完成,dynamodb-titan-storage-backend存储库中有一个DynamoDB Local example properties file。请务必更新storage.dynamodb.client.endpoint以符合您的配置。如果您使用的是DynamoDB-Titan链接中的Titan Server说明,则端口为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实例。可以通过注释掉pom.xml-inMemory参数来更改此行为。

答案 1 :(得分:0)

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

g是遍历的遍历:g = graph.traversal()并且无法提交。