Тестовое задание на позицию Backend node.js Просто веб-апп с 1 записью в бд, где у пользователя баланс = 10000. Тестируем отправкой 10000 запросов в один момент времени на списание с баланса -2 ед.
Баланс не может быть меньше 0. Примерно половина запросов должна отработать, а вторая выдать ошибку.
Sequelize, postgresql.
Без очередей, кеширования и блокировок на уровне транзакций. Ваши варианты?
· 26.06.2024
на самом деле было бы интересно обсудить но непонятно можно ли использовать транзакции в целом
у транзакции есть блокирующие средства сохраняющие её изоляцию
считаются они за что-то не разрешённое или нет
0
ответить
коммент скрыт — часть юзеров считает его токсичным или некорректным
коммент удалён
· 26.06.2024
Я сделал на транзакциях, но без изоляции
0
ответить
коммент скрыт — часть юзеров считает его токсичным или некорректным
ответ удалён
· 26.06.2024
Там два момента: 1. Транзакция не должно выполнится если баланс станет <0 2. User должен существовать
Сначала я делал на мидлваре проверку юзера, но это убило производительность
Сделал в одной транзакции стало лучше та
0
ответить
коммент скрыт — часть юзеров считает его токсичным или некорректным
ответ удалён
· 26.06.2024
Как я понял, тут подводный камень в том, чтобы сделать списание баланса через литеральный синтаксис . Я так и сделал
0
ответить
коммент скрыт — часть юзеров считает его токсичным или некорректным
ответ удалён