Neptune:影响和示例 1.0.4.1.R2.1

0

【以下的问题经过翻译处理】 最近发布了1.0.4.1.R2.1版本,有一些模糊的修复说明...

“禁用了Gremlin条件插入模式的优化,该模式可以添加或附加到现有标签和属性中。”

我正在尝试确定我们的团队是否受到影响,以及是否需要清理任何错误数据。

能否提供受影响的示例查询?

是否有办法检测节点/边缘是否受到此错误的影响?

profile picture
EXPERTE
gefragt vor einem Jahr74 Aufrufe
1 Antwort
0

【以下的回答经过翻译处理】 pwonSpins写道: 我注意到最近发布了1.0.4.1.R2.1版本,但修复的描述很模糊...

"禁用了Gremlin条件插入模式的优化,该模式可以添加或附加到现有标签和属性"

我正在试图确定我们的团队是否受到影响,以及是否需要清理任何不良数据。 可以提供受影响的示例查询吗? 是否有办法检测节点/边缘是否受此错误影响?

Hi pwongSpins,

在特定条件下,Neptune版本1.0.4.1.R1中的Gremlin条件插入模式可以以以下方式添加或附加到现有标签和属性:

1.将新属性和值添加到现有顶点中。 2.将新属性值添加到现有属性和现有顶点中。 3.更新附加到现有边缘的属性值。

该问题已在2021年3月11日的1.0.4.1.R2.1版本中得到修复,并将在2021年3月19日的10.4.1.R1.1中得到修复。现有集群将在下一个维护窗口中作为补丁进行升级。

要评估您的查询是否受到影响,请检查以下所有条件是否为真:

1.您运行条件插入查询,并使用以下模式之一: a.g.V(<ID>).fold().coalesce(unfold(),g.addV("L1").property(id,<ID>).property(<KEY>,<VALUE>))... b.g.E(<ID>).fold().coalesce(unfold(),V(<from>).addE(<label>).to(V(<to>)).property(id,<id>).property(<KEY>,<VALUE>))... c.g.E(<ID>).fold().coalesce(unfold(),g.addE(<label>).from(V<from>).to(V(<to>)).property(id,<id>).property(<KEY>,<VALUE>))... 2.数据库中已经存在一个带有<ID>的顶点/边,以满足1中描述的查询条件。在这种情况下,理想情况下,在 coalesce 内部的第二个条件不应执行任何操作。由于存在错误,第二个条件将导致将属性(<KEY><VALUE>)附加/更新到现有的顶点/边。 如果顶点/边已经存在(满足条件2),它不包含具有与 coalesce 第二个语句中描述的完全键/值相同的属性。 您没有明确指定类似于 property(Cardinality.single,<KEY>,<VALUE>) 的顶点属性的基数。 您还可以运行类似于以下的评估查询,以将具有多值属性的所有顶点作为映射返回:

g.V().as("node").propertyMap().unfold().as("p").select(values).count(local).is(gt(1)).select("node","p")

如果您现有的查询满足了上述所有条件中的一个或多个,或者评估查询返回结果,您可能需要对您的数据进行审核。

以下是一些示例查询,以进一步说明该问题:

假设您的数据库中有以下数据。

Vertex ID = “1", property {key=“name”, value=“pumba”}, label = “Animal” Vertex ID = “2", property {key=“name”, value=“simba”}, label = “animal” Edge ID = “3", property {key=“since”, value=1997}, label = “isFriendOf” 现在在 Neptune 的一个版本中运行查询,该版本已经在 1.0.4.1.R1 上执行了条件插入模式。 g.V("1").fold().coalesce(unfold(), g.addV("Animal").property(id,"1").property("name","pumba"))

Database after query: (no impact)

Vertex ID = “1", property {key=“name”, value=“pumba”}, label = “Animal” Vertex ID = “2", property {key=“name”, value=“simba”}, label = “animal” Edge ID = “3", property {key=“since”, value=1997}, label = “isFriendOf” g.V("1").fold().coalesce(unfold(), g.addV("Animal").property(id,"1").property("name","mufasa"))

Database after query: (vertex property data impacted)

Vertex ID = “1", property {key=“name”, value=[“pumba”,“mufasa”]}, label = “Animal” Vertex ID = “2”, property {key=“name”, value=“simba”}, label = “animal” Edge ID = “3”, property {key=“since”, value=1997}, label = “isFriendOf” g.V("1").fold().coalesce(unfold(), g.addV("Animal").property(id,"1").property("age",30))

Database after query: (vertex property data impacted)

Vertex ID = “1", property {key=“name”, value=[“pumba”,“mufasa”]},property {key=“age”, value=30}, label = “Animal” Vertex ID = “2", property {key=“name”, value=“simba”}, label = “animal” Edge ID = “3", property {key=“since”, value=1997}, label = “isFriendOf” g.E("3").fold().coalesce(unfold(), V("1").addE("isFriendOf").to(V("2")).property(id, "3").property("since",1997))

Database after query: (no impact)

Vertex ID = “1”, property {key=“name”, value=“pumba”}, label = “Animal” Vertex ID = “2”, property {key=“name”, value=“simba”}, label = “animal” Edge ID = “3”, property {key=“since”, value=1997}, label = “isFriendOf” g.E("3").fold().coalesce(unfold(), V("1").addE("isFriendOf").to(V("2")).property(id, "3").property("since",1998))

Database after query: (edge property data impacted)

Vertex ID = “1", property {key=“name”, value=“pumba”}, label = “Animal” Vertex ID = “2", property {key=“name”, value=“simba”}, label = “animal” Edge ID = “3", property {key=“since”, value=1998}, label = “isFriendOf”

profile picture
EXPERTE
beantwortet vor einem Jahr

Du bist nicht angemeldet. Anmelden um eine Antwort zu veröffentlichen.

Eine gute Antwort beantwortet die Frage klar, gibt konstruktives Feedback und fördert die berufliche Weiterentwicklung des Fragenstellers.

Richtlinien für die Beantwortung von Fragen