Обзор YDB
YDB — это горизонтально масштабируемая распределённая отказоустойчивая СУБД. YDB спроектирована с учетом требований высокой производительности — например, обычный сервер может обрабатывать десятки тысяч запросов в секунду. В дизайн системы заложена работа с объемами данных в сотни петабайт. YDB может эксплуатироваться в однодатацентровом и геораспределенном (кросс-датацентровый) режимах на кластере из тысяч серверов.
YDB обеспечивает:
- строгую консистентность с возможностью ослабления для увеличения производительности;
- поддержку запросов YQL (диалект SQL для работы с большими данными);
- автоматическую репликацию данных;
- высокую доступность с автоматической обработкой отказов вычислительных узлов, стоек, или зон доступности;
- автоматическое партицирование данных при увеличении их объема или увеличении нагрузки.
Для взаимодействия с YDB доступен YDB CLI, а также SDK для Java, Python, Node.js, PHP и Go.
YDB поддерживает реляционную модель данных и оперирует таблицами с предопределённой схемой. Для удобства организации таблиц поддерживается создание директорий по аналогии с файловой системой.
В качестве основного способа формирования команд к базе данных используется язык YQL, являющийся диалектом SQL. Таким образом, пользователю предлагается мощный и, в то же время, привычный способ взаимодействия с БД.
В YDB поддерживаются высокопроизводительные распределенные ACID-транзакции, которые могут затрагивать несколько записей из разных таблиц. Обеспечивается самый строгий уровень изоляции транзакций — serializable. Также имеется возможность ослабления уровня изоляции для увеличения производительности.
В дизайн YDB заложена поддержка разных сценариев нагрузки, таких как OLTP и OLAP. В текущей реализации поддержка аналитических запросов ограничена. Поэтому можно говорить, что в данный момент YDB — это OLTP-база данных.
YDB используется в сервисах Яндекса в качестве высокопроизводительной OLTP СУБД. В частности, сервисы Yandex Cloud Yandex Object Storage использует YDB для хранения данных и базируется на её компонентах.
YDB в Yandex Cloud
Вы можете создать базу данных в бессерверной (Serverless) конфигурации или с выделенными серверами (Dedicated). Подробнее о различиях в конфигурациях читайте в разделе Serverless и Dedicated режимы работы.
Для сервиса действует соглашение об уровне обслуживания. Уровень обслуживания сервиса определен в документе Уровень обслуживания Yandex Managed Service for YDB.
Сценарии применения
YDB является альтернативой имеющимся решениям в следующих случаях:
- При использовании NoSQL систем, когда требуется строгая консистентность данных.
- При использовании NoSQL систем, когда требуется транзакционное изменение данных, хранящихся в разных строках одной или нескольких таблиц.
- В системах, требующих обработки и хранения большого объема данных, с возможностью практически неограниченного горизонтального масштабирования (в эксплуатации находятся промышленные кластера из 5000+ узлов, обрабатывающие нагрузку в миллионы RPS, и хранящие петабайты данных).
- В системах с незначительной нагрузкой, когда поддержка отдельного инстанса базы данных будет расточительна с материальной точки зрения (предлагается использовать YDB в режиме бессерверных вычислений).
- В системах с плохо предсказуемой или сезонно меняющейся нагрузкой (используя возможность добавления/уменьшения вычислительных ресурсов по запросу и/или в режиме бессерверных вычислений).
- В высоконагруженных системах, которые шардируют нагрузку между инстансами реляционной базы данных.
- При разработке нового продукта, для которого нет надежного прогноза будущей нагрузки, или ожидается большая нагрузка, превышающая возможности традиционных реляционных баз данных.