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