давайте вот такую простую и типовую задачку: надо перевести деньги со счёта А на счёт Б:
1. убедиться, что счёт А не заблокирован на снятие
2. убедиться, что счёт Б не заблокирован на приём
3. убедиться, что сумма перевода находится между минимумом и максимумом допустимого
4. убедиться, что сумма перевода находится в рамках доступных А средств (в т.ч. с учётом возможного кредитного лимита)
5. списать сумму со счёта А
6. причислить сумму на счёт Б
7. сформировать запись в журнале транзакций
Нужна строгая ACIDность всей операции. Представим себе, что у нас таких операций 10к в минуту. Вопросы:
- как минимизировать время обработки, блокировок и количество пересылаемых по сети данных?
- как максимизировать административную и техническую защиту от внесения дефектов в код этой операции в ходе разработки?