3

让我们考虑下图:

Steve---KNOWS--->Kent---KNOWS--->Ingrid
                 cool             nice
                   |
                   +----KNOWS--->Burt
                                  nice

......事实上,史蒂夫举办了一个派对,肯特的朋友们在他的公寓里大肆破坏。为此他原谅了肯特,但他想将英格丽德和伯特标记为混蛋。他几乎不知道他的妻子也想和 Kent 断绝关系,而当 Steve 开始他的交易时,她也开始了她的。下面是对数据集的操作顺序:

  1. Steve 开始交易 TX1
  2. Steve-KNOWS-Kent'cool'-KNOWS-* 上的 TX1 过滤器。TX1 找到英格丽德,锁定英格丽德并将她的人格属性更改为“混蛋”。
  3. 与此同时,史蒂夫怀恨在心的妻子在隔壁房间开始交易 TX2。
  4. TX2 过滤 Steve-KNOWS-relationships 和 name='Kent'。它锁定了肯特并将酷变不酷。此更新已提交。
  5. TX1,仍然遍历图表是由 Ingrid 完成的,应该继续 Burt,还是应该?

    • 即使 Steve-KNOWS-Kent'cool' 不再是 TRUE,TX1 是否会继续并将 Burt 设置为“jerk”?史蒂夫的妻子认为肯特不酷。
    • 提交 TX1 是否会导致成功提交 Ingrid 的个性属性更新,或者此更改是否也会由于乐观锁定约束而失败,即结果集在更新时已更改。

请仅考虑默认锁定和 READ COMMITTED 隔离级别。

我不确定我是否理解了我的观点,而且我对 neo4j 还不够流利,无法自己进行测试。我认为解释默认锁定、乐观锁定方法和 READ COMMITTED 的后果会非常有用,最好有一个用例,其中一些在 neo4j 用户文档或参考手册中。

4

0 回答 0