TigerBeetle на практике, или чем хороши узкоспециализрованные тулы Вы когда-нибудь работали с TigerBeetle? Это БД, заточенная под работу с финансовыми транзакциями. Она гарантирует точность, высокую скорость и устойчивость к большим нагрузкам. Однако, узкая специализация накладывает ограничения на то, в каких проектах можно использовать TigerBeetle и как вообще с ней работать. В частности, TigerBeetle заставляет оперировать такими бухгалтерскими понятиями, как дебит, кредит, счета, переводы, и при этом дебит строго не может превышать кредит. И это не просто рекомендация, это на уровне архитектуры БД прописано. Как это работает на деле? Вот хороший пример — разработка сервиса по продаже билетов и мерча. Все началось с того, что один инженер просто захотел понять, как это сделать не в теории, а своими руками. На основе он TigerBeetle создал систему, которая позволяет продавать билеты разных из ценовых категорий и мерч. У каждой группы товаров было три счета: 🔵Operator, в котором был указан весь доступный товар, 🔵Budget, в котором указан остаток товара, доступного для продажи, 🔵Spent, в который записывается проданный товар. Сначала со счета Operator билеты и футболки движутся в Budget.  Затем, когда пользователь начинает покупку, создается отложенный перевод из Budget в Spent с тайм-аутом в пять минут. Если за это время деньги не поступают, перевод просто удаляется. Но если все ок и платеж проходит, купленный товар окончательно записывается в Spent. Комбинация из трех счетов не допускает перепродаж — не получится продать больше билетов и мерча, чем есть в наличии. Эта простая, но рабочая демка стала основой для полноценного, жизнеспособного сайта, который может обрабатывать 977 продаж в секунду. Это более чем неплохой результат и демонстрация возможностей TigerBeetle. 🔜 Так что, что скажете про БД? Имели с ней дело когда-нибудь или, может, планируете?