есть у юзера деньги на счету и надо на каждый запрос в апи тупо вычитать 10 копеек со счета. Как сделать так, чтобы бд не умерла от постоянных апдейтов или mysql выдержит? пока что rps ~ 20 но в будущем будет ~ 200 - это мало поэтому велик изобретать не кайф
слышал такое делают на кликхаусе. надежность у него такая же, как и у остальных бд более-менее, при этом по хоршему обычно биллинг считается по логам. альтернатива: можно кешировать количество запросов в абстрактном memcached/redis а потом делать batch update, просто скидываешь в базу все что набежало с прошлого запроса
альтернативный вариант наверное больше подходит, как раз у юзера счет в минус может уходить поэтому в рил тайме можно не обновлять записи и блочить чуть позже
200 - выдержит из коробки
Билинг, это транзакционность, т.е. берете любую транзакционную СУБД с Serializable Isolation и вперед. В тот момент, когда у вас будут проблемы с базой данных, вы уже научитесь тюнинговать машинку под СУБД, потом узнаете про нюансы этой СУБД и начнете поиск под требования новой базы данных, так что не переживайте - не обосретесь 😄 P.s. заранее все равно всего не предугадаете P.p.s. Ну и это, менять деньги на счету нужно в транзакции
Обсуждают сегодня