如何从所有其他客户端锁定MongoDB集合(写入或读取)?

时间:2014-09-06 03:08:21

标签: java mongodb database-locking

(侧栏上标有相似标题的其他问题并未解决此问题。)

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

{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. 解锁收藏品
  6. 我希望能够锁定所有其他客户端甚至在我的客户端锁定时读取集合,因为在客户端到达第4步之前到达第2步和第3步的另一个客户端将导致seq_ids冲突。

1 个答案:

答案 0 :(得分:0)

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