Альтернатива изображению

YDB

YDB — это распределённая отказоустойчивая Distributed SQL база данных с открытым исходным кодом, которая сочетает в себе высокую доступность и масштабируемость со строгой согласованностью и транзакциями ACID.

Альтернатива изображению
Эластичность и масштабируемость

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

Альтернатива изображению
Простота в использовании

Система сочетает в себе строгую согласованность, поддержку ACID-транзакций, высокую производительность, возможность загрузки больших объёмов данных, привычный SQL-диалект и поддержку JSON API.

Альтернатива изображению
Отказоустойчивость

YDB спроектирована для работы в трёх зонах доступности и обеспечивает работоспособность даже в случае выхода из строя одной из них.

Альтернатива изображению
Автоматическое восстановление после сбоев

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

Альтернатива изображению
Доступность в любом облаке

YDB доступна для самостоятельного развёртывания, в том числе при помощи Kubernetes, локально, в облачных средах или в качестве управляемого сервиса Яндекс Облака.

Альтернатива изображению
Открытый исходный код

Система лицензирована под Apache 2.0.
Нет рисков, не требуется привязка к облаку или поставщику.

Кейсы наших клиентов

Полноэкранное изображение

Яндекс Маркет

Корзина — один из ключевых компонентов любой торговой площадки или интернет-магазина.

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

При этом миграция осуществлялась силами одного разработчика в течение месяца.

Варианты использования

Кеш с SQL-интерфейсом
Быстрый отклик и масштабируемость пропускной способности позволяют использовать YDB одновременно в качестве онлайн-базы данных и предварительно посчитанного кеша. Возможности SQL значительно повышают удобство использования и позволяют проводить оперативную аналитику данных в кеше. Например, сайты туроператоров и агрегаторов путешествий могут использовать базу данных для кеширования результатов поиска авиабилетов или туров, а также для пересчёта цен и проверки сезонной доступности.
Работа с внезапным ростом нагрузки
Эластичность YDB позволяет быстро изменять количество ресурсов, выделенных базе данных, чтобы обеспечить необходимую пропускную способность в соответствии с нагрузкой. Вы можете легко увеличить или уменьшить количество вычислительных ресурсов в зависимости от предстоящих нагрузок, например, на «Чёрную пятницу» или для маркетинговых кампаний.
Централизованная система учёта запасов
YDB обеспечивает строгую целостность транзакций. Это позволяет предоставлять консистентные данные о запасах на всех складах и торговых объектах, и делает YDB подходящим решением для электронной коммерции, приложений складской или транспортной логистики.

Как это работает

Полноэкранное изображение

Архитектура YDB

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

Полноэкранное изображение

Иерархия

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

Полноэкранное изображение

Таблицы

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

Полноэкранное изображение

Автоматическое шардирование по нагрузке

При увеличении нагрузки таблетка автоматически разделяется.

Полноэкранное изображение

Автоматическое шардирование по размеру

При росте объёма данных таблетка автоматически разделяется.

Полноэкранное изображение

Автоматическая балансировка

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 для получения детальной информации.

В двух словах про YDB

Присоединяйтесь к сообществу

Альтернатива изображению

GitHub

Альтернатива изображению

Telegram

Альтернатива изображению

Twitter

Альтернатива изображению

YouTube

Альтернатива изображению

Блог

Альтернатива изображению

LinkedIn