【问题标题】:Transactions for patches in RavenDbRavenDb 中的补丁事务
【发布时间】:2015-05-10 19:43:10
【问题描述】:

RavenDb 不支持补丁的事务。但是在几乎任何高负载项目中,补丁都是唯一的方法(由于并发问题)。您不可避免地会遇到需要执行一系列补丁的情况:

AddLikeToCommentLikes(...); AddLikeToUserLikes(...) //需要向用户显示他喜欢的评论

根据我的经验,通常会有主要更改和次要更改(如果丢失可以恢复)。但有时会有几个同样重要的变化。

那么在这种情况下,最好的做法是使补丁不发生或全部发生?有没有办法模拟多个补丁的事务?

我在这方面的唯一想法是将更改合并到一个脚本补丁中。所以我们有一个添加注释的脚本,然后在同一个脚本中,我们使用 LoadDocument 获取 UserLikes 文档并对其进行修改。但我怀疑 RavenDb 保证不会在此操作中修改 UserLikes。

【问题讨论】:

    标签: ravendb


    【解决方案1】:

    RavenDB 确实支持补丁事务,只要您按 id 打补丁。 如果您通过查询进行修补,则该操作将作为每个单独文档的事务处理,而不是全局处理。

    在补丁中调用 LoadDocument 将导致所有文档被补丁修改共享同一个事务,因此所有补丁更改都被保存,或者它不是以原子方式发生的 p>

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多