了解Gremlin在并发环境中的合并行为

问题描述 投票:1回答:1

以下查询仅在两个顶点不存在时才添加边。

g.V('ea36e68a-70c5-4d38-a038-f5145ed4ced7').as('v').
  V('e3516889-7df0-4cc9-b240-2aa0dba75280').
  coalesce(__.inE('follows').where(outV().as('v')), addE('follows').from('v'))

我的问题是,如果要在高度并发的设置中执行此查询会发生什么?是否有可能阅读相同的“存在”标准并创建多个边缘?我是图形数据库的新手,看起来没有我们可以在SQL中强制执行的唯一性约束。我的目标是确保一些边缘只能创建一次(例如followslikes)。我该如何处理这个问题?

concurrency graph-databases gremlin unique-constraint tinkerpop
1个回答
1
投票

您获得的行为不是由Gremlin强制执行或确定的。您可以选择基础图数据库。有些只会在脏读之后更新,而其他人可能会因同时修改数据而引发某种错误,这意味着您必须重试遍历。有些图表确实具有模式的概念,使您能够强制执行各种约束,包括边缘基数。我认为您选择的图表将决定您如何最好地处理此问题(或者您可能允许此问题来决定您选择的图表)。

© www.soinside.com 2019 - 2024. All rights reserved.