Обзор 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 в режиме бессерверных вычислений).
  • В системах с плохо предсказуемой или сезонно меняющейся нагрузкой (используя возможность добавления/уменьшения вычислительных ресурсов по запросу и/или в режиме бессерверных вычислений).
  • В высоконагруженных системах, которые шардируют нагрузку между инстансами реляционной базы данных.
  • При разработке нового продукта, для которого нет надежного прогноза будущей нагрузки, или ожидается большая нагрузка, превышающая возможности традиционных реляционных баз данных.