我正在尝试开发一个预订系统,可以在检查可用性后预订不同的资产。该系统首先尝试从数据库中读取记录,并检查所预订的时段是否可用。如果可用,则通过向系统插入新记录来为其预订该时段。
现在的问题是,如果有多个用户请求预订,由于对数据库的多个请求可能交错,因此可能会出现这种情况。
为避免这种情况,我最好在读操作开始之前就获得集合级别的锁,并且只有在最后一次写操作完成后才释放锁。
我的理解正确吗?如果是,MongoDB可以实现吗?
任何使用MongoDB、Mongoose或@tsed/mongoose的解决方案都非常欢迎。
现在的问题是,如果有多个用户请求预订,由于对数据库的多个请求可能交错,因此可能会出现这种情况。
User 1 -> read request start
User 2 -> read request start
User 1 -> read request success (booking available)
User 2 -> read request success (booking available)
User 1 -> write a new record to the db (new booking)
User 2 -> write a new record to the db (new booking) but this conflicts with User 1.
为避免这种情况,我最好在读操作开始之前就获得集合级别的锁,并且只有在最后一次写操作完成后才释放锁。
我的理解正确吗?如果是,MongoDB可以实现吗?
任何使用MongoDB、Mongoose或@tsed/mongoose的解决方案都非常欢迎。