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