【问题标题】:How to Lock a MongoDB Collection from all other Clients (write OR read)? [duplicate]如何从所有其他客户端锁定 MongoDB 集合(写入或读取)? [复制]
【发布时间】:2014-10-31 00:41:03
【问题描述】:

(侧边栏其他类似标题的问题没有解决这个问题。)

我有一个像历史序列生成器一样使用的集合:

{seq_id:1,dt:ISODate(...),type:'service_a',stage:1}
{seq_id:2,dt:ISODate(...),type:'service_a',stage:2}
{seq_id:3,dt:ISODate(...),type:'service_a',stage:3}
{seq_id:1,dt:ISODate(...),type:'service_b',stage:1}
{seq_id:2,dt:ISODate(...),type:'service_b',stage:2}
{seq_id:3,dt:ISODate(...),type:'service_b',stage:3}

我希望能够:

  1. 从所有其他客户端锁定集合(写入或读取)
  2. 将最近的 seq_id 读入内存
  3. 在内存中再生成 3 个序列 ID(在我的例子中是 Java)
  4. 将 3 个文档插入集合中
  5. 解锁收藏

我希望能够在我的客户端锁定集合时锁定所有其他客户端甚至无法读取集合,因为在我的客户端到达第 4 步之前到达第 2 步和第 3 步的另一个客户端会导致 seq_ids 冲突。

【问题讨论】:

    标签: java mongodb database-locking


    【解决方案1】:

    MongoDB 是eventually consistent,它排除了基于锁的模式以及保证最新更新。听起来您应该选择 Cassandra 或标准 RDBS 之类的东西。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-03-16
      • 2020-04-13
      • 1970-01-01
      • 2023-03-29
      • 1970-01-01
      • 2014-12-28
      • 2019-10-19
      • 1970-01-01
      相关资源
      最近更新 更多