Gremlin 服务器:vertexIdManager=ANY 是否会产生 ID 冲突?
Gremlin-server: does vertexIdManager=ANY generates id collisions?
我需要在 gremlin-server 中配置 tinkergraph-empty.properties
文件,以便使用“ANY”逻辑生成 ID
gremlin.tinkergraph.vertexIdManager=ANY
gremlin.tinkergraph.edgeIdManager=ANY
gremlin.tinkergraph.vertexPropertyIdManager=ANY
我用一个空数据库测试了这个配置:当我创建一些顶点时,我注意到id是用字符串表示的数字,数字不是连续的,这是否意味着会有id冲突?这背后的逻辑是什么?
我需要此配置,因为我需要我的本地 gremlin-server 与 Amazon Neptune 中的数据兼容,只有 ANY 与 Neptune id 兼容。我需要能够在本地主机 gremlin-server 中加载 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 年 1 月 16 日更新解决评论中的其他问题。
使用 g.io
加载的文件(JSON 或 GraphML)可以包含用户提供的 ID。除非 ID 已在使用中,否则这些将起作用。不允许重复 ID,如果遇到任何重复 ID,将抛出错误。只有属性会在文件加载期间自动获得 ID。
我需要在 gremlin-server 中配置 tinkergraph-empty.properties
文件,以便使用“ANY”逻辑生成 ID
gremlin.tinkergraph.vertexIdManager=ANY
gremlin.tinkergraph.edgeIdManager=ANY
gremlin.tinkergraph.vertexPropertyIdManager=ANY
我用一个空数据库测试了这个配置:当我创建一些顶点时,我注意到id是用字符串表示的数字,数字不是连续的,这是否意味着会有id冲突?这背后的逻辑是什么?
我需要此配置,因为我需要我的本地 gremlin-server 与 Amazon Neptune 中的数据兼容,只有 ANY 与 Neptune id 兼容。我需要能够在本地主机 gremlin-server 中加载 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 年 1 月 16 日更新解决评论中的其他问题。
使用 g.io
加载的文件(JSON 或 GraphML)可以包含用户提供的 ID。除非 ID 已在使用中,否则这些将起作用。不允许重复 ID,如果遇到任何重复 ID,将抛出错误。只有属性会在文件加载期间自动获得 ID。