Обзор YDB
YDB — это горизонтально масштабируемая распределенная отказоустойчивая СУБД. YDB спроектирована с учетом требований высокой производительности — например, обычный сервер может обрабатывать десятки тысяч запросов в секунду. В дизайн системы заложена работа с объемами данных в сотни петабайт. YDB может эксплуатироваться в однодатацентровом и геораспределенном (кросс-датацентровый) режимах на кластере из тысяч серверов.
YDB обеспечивает:
- строгую консистентность с возможностью ослабления для увеличения производительности;
- поддержку запросов YQL (диалект SQL для работы с большими данными);
- автоматическую репликацию данных;
- высокую доступность с автоматической обработкой отказов вычислительных узлов, стоек, или зон доступности;
- автоматическое партицирование данных при увеличении их объема или увеличении нагрузки.
Для взаимодействия с YDB доступен YDB CLI, а также SDK для C++, C#, Go, Java, Node.js, PHP, Python и Rust.
YDB поддерживает реляционную модель данных и оперирует таблицами с предопределенной схемой. Для удобства организации таблиц поддерживается создание директорий по аналогии с файловой системой. Помимо таблиц YDB поддерживает топики, которые представляют собой сущность для хранения неструктурированных сообщений и доставки их множеству подписчиков.
В качестве основного способа формирования команд к базе данных используется язык YQL, являющийся диалектом SQL. Таким образом, пользователю предлагается мощный и, в то же время, привычный способ взаимодействия с БД.
В YDB поддерживаются высокопроизводительные распределенные ACID-транзакции, которые могут затрагивать несколько записей из разных таблиц. Обеспечивается самый строгий уровень изоляции транзакций — serializable. Также имеется возможность ослабления уровня изоляции для увеличения производительности.
В дизайн YDB заложена поддержка разных сценариев нагрузки, таких как OLTP и OLAP. В текущей реализации поддержка аналитических запросов ограничена. Поэтому можно говорить, что в данный момент YDB — это OLTP-база данных.
YDB — открытая система. Исходный код YDB доступен под лицензией Apache License 2.0. Взаимодействие клиентских приложений с YDB построено на базе протокола gRPC, спецификация которого открыта, что позволяет реализовать SDK для любого языка программирования.
Сценарии применения
YDB является альтернативой имеющимся решениям в следующих случаях:
- При использовании NoSQL-систем, когда требуется строгая консистентность данных.
- При использовании NoSQL-систем, когда требуется транзакционное изменение данных, хранящихся в разных строках одной или нескольких таблиц.
- В системах, требующих обработки и хранения большого объема данных, с возможностью практически неограниченного горизонтального масштабирования (в эксплуатации находятся промышленные кластеры более чем из 5000 узлов, обрабатывающие нагрузку в миллионы RPS и хранящие петабайты данных).
- В системах с незначительной нагрузкой, когда поддержка отдельного инстанса базы данных будет расточительна с материальной точки зрения (предлагается использовать YDB в режиме бессерверных вычислений).
- В системах с плохо предсказуемой или сезонно меняющейся нагрузкой (используя возможность добавления/уменьшения вычислительных ресурсов по запросу и/или в режиме бессерверных вычислений).
- В высоконагруженных системах, которые шардируют нагрузку между инстансами реляционной базы данных.
- При разработке нового продукта, для которого нет надежного прогноза будущей нагрузки, или ожидается большая нагрузка, превышающая возможности традиционных реляционных баз данных.