Перенос логики транзакций на средний уровень: плюсы и минусы

Перенос логики транзакций на средний уровень: плюсы и минусы
Перенос логики транзакций на средний уровень: плюсы и минусы - austindistel @ Unsplash

Упоминание хранимой процедуры предполагает, что вы работаете с реляционной (sql) базой данных.

Вам не нужно ничего более необычного, чем простая транзакция базы данных по логике отмены/списка ожидания. Процесс освобождения места из-за отмены и немедленного заполнения этого места первым правомочным человеком в списке ожидания должен выполняться в рамках одной транзакции.

Используя транзакцию, у вас не будет риска, что кто-то, регистрирующийся заново, перепрыгнет очередь и займет место кого-то в списке ожидания, потому что временно свободное место не будет видно до тех пор, пока транзакция не будет совершена и это место не занято. кто-то из списка ожидания.

Существует условие гонки, при котором две отмены происходят одновременно и выбирают одного и того же человека из списка ожидания. Если ваша база данных хорошо спроектирована для такой возможности, она не сможет выполнить одну из транзакций1. Затем неудачную транзакцию можно просто повторить.

Существует действительно небольшая вероятность состояния гонки, если мероприятие полностью забронировано, но в списке ожидания нет людей, и новая регистрация и отмена происходят одновременно. Тогда может случиться ситуация, что новая регистрация ставится в лист ожидания, а место освобождается. Это можно решить, периодически проверяя, есть ли свободное место и список ожидания, и в этом случае допускать людей из списка ожидания.


1: It might interest you. Concurrency Control

Прикрепляю к посту несколько видео по теме:

Прикрепленное видео 1 - Развенчиваем мифы о MongoDB. Павел Перекалов

Прикрепленное видео 2 - Саша Иванов «ORM о котором вы [скорее всего] никогда не слышали»

Прикрепленное видео 3 - Максим Стаценко — Обзор технологий хранения больших данных. Плюсы, минусы, кому подойдет


LetsCodeIt, 9 мая 2023 г., 06:21