Gremlin服务器:vertexIdManager=ANY是否生成id冲突



我需要在gremlin服务器中配置tinkergraph-empty.properties文件,以便使用";ANY";逻辑

gremlin.tinkergraph.vertexIdManager=ANY
gremlin.tinkergraph.edgeIdManager=ANY
gremlin.tinkergraph.vertexPropertyIdManager=ANY

我用一个空数据库测试了这个配置:当我创建一些顶点时,我注意到id是用字符串表示的数字,这些数字不是连续的,这是否意味着会有id冲突?这背后的逻辑是什么?

我需要这个配置,因为我需要我的本地gremlin服务器与Amazon Neptune中的数据兼容,只有ANY与Neptune ID兼容。我需要能够在localhost gremlin服务器中加载Neptune的数据库内容,对其进行一些操作,然后可能将其传输回Neptune而不会出现问题。

我担心碰撞,因为这会破坏数据,而当我的数据被破坏时,这也是我的项目。

您可能看不到顺序ID的原因是属性也有ID,在TinkerGraph的情况下,它们来自同一个池。您也可以在本地使用Gremlin控制台看到这一点。

gremlin> conf = new BaseConfiguration();[]
gremlin> conf.setProperty("gremlin.tinkergraph.vertexIdManager","ANY");[]
gremlin> conf.setProperty("gremlin.tinkergraph.edgeIdManager","ANY");[]
gremlin> conf.setProperty("gremlin.tinkergraph.vertexPropertyIdManager","ANY");[]
gremlin> g = TinkerGraph.open(conf).traversal()
==>graphtraversalsource[tinkergraph[vertices:0 edges:0], standard]
gremlin> g.addV('test')
==>v[0]
gremlin> g.addV('test')
==>v[1]
gremlin> g.addV('test').property('x',1)
==>v[2]
gremlin> g.addV('test')
==>v[4]
gremlin> g.V().has('x').properties('x').id()
==>3       

更新时间:2022/01/16以解决评论中的其他问题。

使用g.io加载的文件(JSON或GraphML(可以包含用户提供的ID。除非ID已在使用中,否则这些功能将起作用。不允许重复的ID,如果遇到任何错误,都将引发错误。在文件加载过程中,只有属性才会自动获得ID。

最新更新