🤼 Кейс для YDB и почему я не стану пока его использовать
YDB - это SQL база с автошардированием и ACID консистненостью (но без реляций), разработанная Яндексом и выпущенная в open source около года назад
В комментариях к предыдущему посту рассуждал про то почему мне она нравится концептуально, но почему я пока не готов ее использовать, решил продублировать в виде поста
Представим кейс: нам нужно построить систему с огромным кол-вом инсерта + хранением исторических данных за год, а далее их денормализовывать, чтобы показывать пользователям (например, система телеметрии или парсер из кучи источников) при этом сервис наш не то чтобы очень много зарабатывает и может зарабатывать (короче, резать косты важно)
Что я сделал бы среднестатистически: развернул бы на нескольких тачках Kafka (а поскольку это часто больно, я бы попробовал
RedPanda), писал бы туда события, читал в других процессах и переписывал в PostgreSQL (условно, это наша основная база бизнес-логики, если нужно было бы что-то типа OLAP, тогда ClickHouse)
Если же YDB окажется достойной технологией, то можно и события в нее писать и читать их из ее же топиков и денормализованные данные обратно складывать (причем с умеренной денормализацией, потому что YDB поддерживает как вторичные индексы, так и JOIN), соответственно, она может стать даже основной базой для бизнес-логики
Никакого вендор лока (даже если начать с Yandex.Cloud, дальше можно уйти на self-hosted и ничего не потерять), поддержка всего одной системы, уменьшение стоимости, масштабируемость и скорость
Но
YDB я бы пока не стал использовать в production:
1. Найти новых достойных разрабов на ноде, которые знаю PostgreSQL / Kafka - дико тяжело, найти на YDB будет невозможно, придется учить с нуля
2. Проблемы с драйверами точно будут, а значит нужно будет выделять время на контрибьютинг
3. Мы точно столкнемся с проблемами и особенностями YDB (потому что во многом она уникальна) и из-за отсутствия mass adoption вряд ли сможем найти ответы на Stack overflow, а значит придется как и искать кого-то, кто может подсказать что делать, самим шерстить исходники (а значит, знать С) так и экспериментировать пока не получится
Я буду готов взять в полноценный продакшен только:
1. Если очень прижмёт по масштабируемости и без экспериментов будет некуда
2. Когда в вакансиях начнут писать "Знание YDB", а это годик другой, в зависимости от агрессивности маркетинга Яндекса
3. Кор команда проекта будет готова контрибьютить в драйвер YDB для Node.js
Как-то так, поэтому долгих лет здоровья и процветания YDB, надеюсь, что где-нибудь в 2024-ом я смогу уверено брать его с собой в прод
И вам здоровья, друзья 😍