Обзор
Yandex Database (YDB) — это горизонтально масштабируемая распределённая отказоустойчивая СУБД. YDB спроектирована с учетом требований высокой производительности — например, обычный сервер может обрабатывать десятки тысяч запросов в секунду. В дизайн системы заложена работа с объемами данных в сотни петабайт.
YDB является региональной базой данных и располагается в трёх зонах доступности.
YDB обеспечивает:
- строгую консистентность с возможностью ослабления для увеличения производительности;
- подержку запросов YQL (диалект SQL для работы с большими данными);
- автоматическую репликацию данных;
- высокую доступность с автоматической обработкой отказов вычислительных узлов или зон доступности;
- автоматическое партицирование данных при увеличении их объема или увеличении нагрузки.
YDB может работать в двух режимах:
-
С выделенными инстансами (dedicated) — режим, при котором для базы выделяются отдельные виртуальные хосты с задаными ресурсами. Вы самостоятельно задаете число хостов, их вычислительные ресурсы задаете параметры хранилища и настраиваете облачные сети.
Если вычислительных ресурсов базы данных станет недостаточно для обслуживания подаваемой нагрузки, скорость обработки запросов будет уменьшаться вплоть до отказа в обслуживании. Чтобы избежать этого, своевременно добавляйте вычислительные ресурсы в базу данных.
Такой режим удобно использовать, когда вы хорошо представляете, какой объем ресурсов потребуется вашей базе для работы и можете спрогнозировать пиковые нагрузки. При этом оплата происходит за выделенные вычислительные ресурсы, объем хранилища и резервных копий и не зависит от числа операций с базой. Подробнее об оплате читайте в правилах тарификации.
-
Бессерверный (serverless) режим — режим, в котором вы можете развернуть базу данных в обслуживаемой среде без создания отдельных хостов. Вам не нужно контролировать вычислительные ресурсы, сети и другие параметры. Все ресурсы, которые необходимы для работы базы, автоматически предоставляются сервисом и масштабируются в зависимости от нагрузки.
Бессерверный режим подходит для небольших проектов, когда отдельный сервер не нужен, или для задач с неравномерной и плохо прогнозируемой нагрузкой. В таком режиме вы платите за фактические операции с базой и за хранение данных и резервных копий. Подробнее об оплате читайте в правилах тарификации.
Бессерверный режим Yandex Database поддерживает работу с данными не только с помощью YDB API, но и с помощью Document API — HTTP API, совместимого с Amazon DynamoDB. С помощью этого API можно выполнять операции над документными таблицами.
YDB предоставляет YDB API и его реализации в виде YDB CLI и YDB SDK для Java, Python, Node.js и Go
YDB поддерживает реляционную модель данных и оперирует таблицами с предопределённой схемой. Для удобства организации таблиц поддерживается создание директорий по аналогии с файловой системой.
В YDB поддерживаются высокопроизводительные распределенные ACID-транзакции, которые могут затрагивать несколько записей из разных таблиц. Обеспечивается самый строгий уровень изоляции транзакций — serializable. Также имеется возможность ослабления уровня изоляции для увеличения производительности.
В дизайн YDB заложена поддержка разных сценариев нагрузки, таких как OLTP и OLAP. В текущей реализации поддержка аналитических запросов ограничена. Поэтому можно говорить, что в данный момент YDB — это OLTP-база данных.