【问题标题】:Tree editing by multiple users simultaneously?多个用户同时编辑树?
【发布时间】:2012-09-24 11:28:37
【问题描述】:

我有一个树状的分层类别,我需要将其保存在数据库中。我使用 MPTT(嵌套集)来保存这些数据。

问题是这个类别需要多个用户编辑,有时是同时编辑。

如何保持结构的完整性,又不对用户施加过多限制?

鉴于 MPTT 的性质,当改变结构中的一个元素时,它也会影响其他元素(改变左/右值)。

例如。用户 A 删除 Node1,用户 B 在 Node1 下添加 Leaf1。这应该会给用户 B 一个错误,即 Node1 不再存在,但我相信它只会给用户 B 造成混乱......

这个问题有什么实用的解决办法吗?

【问题讨论】:

    标签: mysql algorithm tree mptt


    【解决方案1】:

    这与任何其他多用户事务系统有何不同?

    将您的用户操作包含在事务中,这样所有参与的表都将被锁定。然后根据当前数据验证输入并执行更新。

    【讨论】:

    • 是的,但是对 MPTT 树的任何修改都会改变整个结构(左/右值),因此如果 100 个用户将向树添加新叶子,则只有 1 个会成功,而 99 个不会。 .
    【解决方案2】:

    您正在寻找的是乐观并发。这意味着,您允许用户开始编辑记录,但在应用更改之前,您检查记录是否处于与用户开始编辑时相同的状态。

    其他情况是锁定所有可能受编辑影响的记录,但它会限制用户进行任何更改。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-03
      • 2019-04-18
      相关资源
      最近更新 更多