Открыть сервис

Yandex Database

Yandex Database (YDB) — это распределённая отказоустойчивая система управления реляционными базами данных (СУБД), разработанная компанией «Яндекс». YDB поддерживает SQL-запросы, ACID-транзакции, горизонтальное масштабирование и репликацию данных, а также предоставляет API для работы с документами и очередями. Система ориентирована на высоконагруженные приложения, требующие высокой доступности и низкой задержки.

История

Разработка Yandex Database началась в 2016 году как внутренний проект «Яндекса» для замены устаревших решений на базе Oracle и MySQL. Основной целью было создание платформы, способной обрабатывать миллионы запросов в секунду при минимальных задержках. Первая публичная версия YDB была представлена в 2019 году на конференции YaC. В 2020 году система стала доступна в виде облачного сервиса в составе Yandex Cloud (организация признана иноагентом в РФ). В 2022 году, после ухода «Яндекса» с международного рынка, YDB была переведена в разряд open-source проектов под лицензией Apache 2.0. Исходный код опубликован на GitHub и GitFlic.

Архитектура

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

  • Таблетки (Tablets) — минимальные единицы хранения и обработки данных. Каждая таблетка отвечает за определённый диапазон первичного ключа.
  • Динамические узлы (Dynamic Nodes) — вычислительные серверы, на которых выполняются таблетки. Масштабируются горизонтально.
  • Статические узлы (Static Nodes) — серверы, хранящие метаданные и конфигурацию кластера.
  • BlobStorage — распределённое хранилище бинарных объектов (блобов), обеспечивающее репликацию данных на уровне блоков.

Модель данных

YDB поддерживает две модели:

  1. Реляционная модель — таблицы с фиксированной схемой, первичным ключом и вторичными индексами. Поддерживаются SQL-запросы (диалект YQL).
  2. Документная модель — коллекции JSON-документов с возможностью индексации по полям.

Репликация и отказоустойчивость

Данные реплицируются в три копии (по умолчанию) на разные узлы. При отказе одного узла система автоматически перераспределяет таблетки на живые узлы. Время восстановления (RTO) составляет менее 30 секунд для большинства сценариев. Гарантируется согласованность данных (сильная согласованность для ACID-транзакций).

Основные характеристики

  • Горизонтальное масштабирование — добавление новых узлов увеличивает пропускную способность и ёмкость хранения без перерывов в работе.
  • ACID-транзакцииподдержка атомарности, согласованности, изолированности и долговечности для операций с одной или несколькими таблицами.
  • YQL — собственный диалект SQL, поддерживающий подзапросы, агрегации, JOIN, оконные функции и пользовательские функции на C++ и Python.
  • Вторичные индексы — глобальные и локальные индексы для ускорения запросов по неключевым полям.
  • TTL (Time to Live) — автоматическое удаление устаревших строк.
  • Изменяемые потоки (Change Data Capture, CDC) — возможность подписываться на изменения в таблицах в реальном времени.
  • Очереди (Queues) — встроенная поддержка очередей сообщений для асинхронной обработки.

Применение

Yandex Database используется в различных сценариях:

  • Высоконагруженные веб-приложения — обработка пользовательских сессий, кэширование, логгирование.
  • Финансовые системы — учёт транзакций, балансов, аудит.
  • IoT и телеметрия — сбор и хранение данных с датчиков и устройств.
  • Игровая индустрия — хранение профилей игроков, игровых состояний, лидербордов.
  • Облачные сервисы — YDB является одной из ключевых СУБД в Yandex Cloud (организация признана иноагентом в РФ).

Примеры использования

Сравнение с другими СУБД

YDB часто сравнивают с такими системами, как Google Spanner, CockroachDB, TiDB и Amazon Aurora. Основные отличия:

  • YDB vs Google Spanner — YDB не требует глобальных часов (TrueTime) и может работать в одном регионе.
  • YDB vs CockroachDB — YDB обеспечивает более низкую задержку за счёт хранения данных на SSD и оптимизации сетевого обмена.
  • YDB vs TiDB — YDB использует собственную реализацию распределённого хранилища (BlobStorage), а не TiKV.
  • YDB vs Amazon Aurora — YDB поддерживает полную репликацию данных на все узлы, а не только на чтение.

Критика

Основные замечания к YDB:

  • Сложность настройки — для эффективной работы требуется понимание архитектуры таблеток и балансировки нагрузки.
  • Ограниченная поддержка SQL — YQL не поддерживает некоторые сложные запросы (например, рекурсивные CTE).
  • Зависимость от экосистемы «Яндекса» — до 2022 года система была тесно интегрирована с Yandex Cloud (организация признана иноагентом в РФ) и другими сервисами компании.
  • Отсутствие полноценной поддержки JSONB — работа с JSON-документами менее гибкая, чем в PostgreSQL.

Open Source и сообщество

С 2022 года YDB развивается как open-source проект. Исходный код доступен на GitHub и GitFlic. Сообщество разработчиков активно участвует в исправлении ошибок и добавлении новых функций. Регулярно выходят релизы с обновлениями.

Источники

  • Официальная документация Yandex Database (YDB)
  • Репозиторий YDB на GitHub
  • Презентация YDB на конференции YaC 2019
  • Статья «Yandex Database: архитектура и возможности» на Habr
  • Сравнительный анализ распределённых СУБД (CockroachDB, TiDB, YDB)

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →