монге https://docs.mongodb.com/manual/faq/concurrency/
но почти ничего не понял, есть ли какие то еще ресурсы, которые могут просветить эту тему?
А какие именно вопросы возникли?
хотел в целях обучения попробовать сделать distributed lock по верх монги начал разбираться с операциями findOneAndUpdate/updateOne, а конкретно, как залочить документ в коллекции(например флаг locked:true), чтобы другие подключенные клиенты, не могли его залочить на себя и понял, что не хватает знаний о выполнении операций read/write
В монге нет user-defined локов
У меня есть подозрение, что вы хотите исключить non-repeatable read. Как в реалиционных базах
при апдейте возвращает количество измененных документов, если локаете то вам вернется 1, если локаете залоченый, вернется 0, так вы точно узнаете это вы залокали документ или нет
в реляционках я бы использовал select for update
поэксперементирую с этим, а есть ли возможность сделать операцию read/write долгой или поставить брейкпоинты как дебагере? чтобы например явно из двух процессов поэкспемерементировать с БД и посмотреть как она себя ведет при канкарентных операциях, сэмулировать рейс кондишен?
бд гарантированно вернет 1 или 0 по условию изменила ли она запись или нет если поле уже тру, ты не соможешь выставить тру еще раз, бд не даст
Обсуждают сегодня