
YDB
YDB — это распределённая отказоустойчивая Distributed SQL база данных с открытым исходным кодом, которая сочетает в себе высокую доступность и масштабируемость со строгой согласованностью и транзакциями ACID.
Эластичность и масштабируемость
YDB создана с учётом требований к высокой производительности и может обрабатывать миллионы транзакций в секунду и петабайты данных для критически важных, интерактивных приложений. Система легко расширяется простым добавлением серверов.
Простота в использовании
Система сочетает в себе строгую согласованность, поддержку ACID-транзакций, высокую производительность, возможность загрузки больших объёмов данных, привычный SQL-диалект и поддержку JSON API.
Отказоустойчивость
YDB спроектирована для работы в трёх зонах доступности и обеспечивает работоспособность даже в случае выхода из строя одной из них.
Автоматическое восстановление после сбоев
Автоматическое восстановление после сбоя диска, сервера или даже центра обработки данных без влияния на работу приложений.
Доступность в любом облаке
YDB доступна для самостоятельного развёртывания, в том числе при помощи Kubernetes, локально, в облачных средах или в качестве управляемого сервиса Яндекс Облака.
Открытый исходный код
Система лицензирована под Apache 2.0.
Нет рисков, не требуется привязка к облаку или поставщику.
Кейсы наших клиентов

Яндекс Маркет
Корзина — один из ключевых компонентов любой торговой площадки или интернет-магазина.
Использование YDB в качестве базы данных позволило Яндекс Маркету выдержать стократное увеличение нагрузки на «Корзину» при соблюдении строгих гарантий времени отклика.
При этом миграция осуществлялась силами одного разработчика в течение месяца.
Как это работает

Архитектура YDB
Мы используем стандартное оборудование: обычные серверы и архитектуру «shared nothing», разделяем уровни вычислений и хранения данных, строим систему на основе логических компонентов — таблеток.

Иерархия
Для удобства организации таблиц существует возможность создания директорий по аналогии с файловой системой.

Таблицы
YDB предоставляет пользователям привычную абстракцию: таблицы. Таблицы должны содержать первичный ключ, по которому сортируются данные. Таблицы автоматически шардируются в диапазоне первичных ключей по размеру или загрузке.

Автоматическое шардирование по нагрузке
При увеличении нагрузки таблетка автоматически разделяется.
.png)
Автоматическое шардирование по размеру
При росте объёма данных таблетка автоматически разделяется.

Автоматическая балансировка
YDB равномерно распределяет таблетки между узлами, перемещает загруженные таблетки с загруженных узлов. Отслеживаются показатели процессора, памяти, сети.

Устройство Distributed Storage
Весь код для работы с блочными устройствами мы пишем сами, не используем готовые драйверы. Компонент PDisk отвечает за работу с блочным устройством. Над PDisk находится слой абстракции VDisk. Между таблеткой и VDisk находится специальный компонент — DSProxy. Он анализирует доступность и характеристики работы диска и на их основании может принять решение об исключении диска из работы.

DSProxy
YDB пишет данные в три зоны доступности, не шлёт запросы на заведомо плохие диски и продолжает работать даже после отказа одной зоны доступности и одного диска.
С чего начать
Docker
Загрузите актуальную публичную версию Docker-образа:
docker pull cr.yandex/yc/yandex-docker-local-ydb:latest
Перед запуском создайте рабочую директорию, и выполните из неё запуск:
docker run -d --rm --name ydb-local -h localhost -p 2135:2135 -p 8765:8765 -p 2136:2136 -v $(pwd)/ydb_certs:/ydb_certs -v $(pwd)/ydb_data:/ydb_data -e YDB_DEFAULT_LOG_LEVEL=NOTICE -e GRPC_TLS_PORT=2135 -e GRPC_PORT=2136 -e MON_PORT=8765 cr.yandex/yc/yandex-docker-local-ydb:latest
Перейдите к статье Начало работы — Самостоятельное развертывание — Docker в документации YDB для получения детальной информации.