【发布时间】:2016-10-05 09:23:24
【问题描述】:
我有一个集合,我从中获取最大 id,并在使用 max id + 1 插入时。id 列在此集合中是唯一的。
当调用此服务的多个实例时,并发应用程序读取同一个集合并获取最大 ID。但是由于访问了同一个集合,因此将相同的 max id 返回给多个实例,我可以在从该集合中读取数据时获得该集合的显式锁定,并在写入 Mongo DB 后释放锁定吗?
【问题讨论】:
-
您是否尝试过使用外部同步或内置同步集合?
-
能否请您详细说明一下,我们在 MongoDB 中有同步集合吗?
-
你能多写一点你想要达到的目标吗?看起来你需要事务,所以也许 MongoDB 不是这里的最佳选择。如果您只需要原子方式来增加一些计数器,请考虑 auto incrementing sequence field 或 $inc。
-
应用程序是在后端是 Mongo DB 的地方编写的。我已经公开了一项服务,我们希望在 MongoDB 集合中进行自动增量。由于该服务的多个实例被暴露,多个服务试图同时访问和更新 Db,这导致了 DB 的不一致。
标签: java mongodb concurrency jvm locking