редиса, отвале платежной системы и т д консистентность данных будет?
Там чуть-чуть только переписать его. Просто будет немного больше шагов. И будет полная консистентность при любом падении. Если изучал когда-нибудь Event Sourcing то быстро поймёшь, что лог событий всегда отражает консистентное состояние системы. Текущее состояние это лишь проекция, сумма лога событий. Запись одного события в лог можно считать атомарной операцией. Как перевести биллинг на схему похожую на Event Sourcing это много раз решённая задача. В том числе в моём биллинге. Так решать не принято, 99% программистов решают "в лоб" и костылят потом транзакции и блокировки из-за ошибочно выбранной модели.
А тебе не кажется что транзакции и блокировки это стандартные решения, а проектировать систему так чтобы они были не нужны, это не совсем верно?
Конечно, транзакции и блокировки проще и понятней. Как любой приëм который даëт бонус в краткосрочной перспективе и позже прилетают большие проблемы в долгосрочной. Нужно понимать плюсы и минусы разных решений и знать чем мы жертвуем и ради чего. Допустим трейты, наследование, аннотации это не зло само по себе. Но злоупотребление и упование на такие вещи всегда приводит к печальным последствиям. Это суть любого антипаттерна. Если держишь небольшое зло под контролем, то не беда. Если решил что это хорошо и допустимо везде и всегда, то ты попал. Для программиста который думает о транзакциях и блокировках, главное понимать, что есть и другие пути. Если он это понимает и может сравнить разные варианты решения задачи, то он находится в более выгодном положении чем программист, который видит решение только через мьютексы и более ничего. Знание вариантов и разумный выбор — залог успеха проекта ) Как видно по моему коду, я и сам не гнушаюсь транзакциями, хотя прекрасно могу жить и без них )
Да нет, проще как раз Event Sourcing, но у него есть один маленький минус - на сколь-нибудь больших объёмах тормозит безбожно. Поэтому базы используют его только в журналах предзаписи.
Не тормозит если думать над дизайном на пару шагов дальше, а не бросать на полпути.
Обсуждают сегодня