Команда YDB СУБД Яндекса

Разрабатываем распределённую СУБД с поддержкой строгой консистентности, ACID-транзакций, автопартиционирования и транзакционных, стриминговых и аналитических нагрузок.

Что такое YDB

YDB — универсальная СУБД для высоконагруженных транзакционных приложений и корпоративных хранилищ данных, которая разработана в Яндексе.

Как всё начиналось

Основание YDB

YDB начали разрабатывать в 2014 году. Тогда в Яндексе уже существовал ряд самописных систем для хранения и обработки данных, которые организационно объединили.

Каждая из них имела какой‑то фатальный недостаток — например, была eventual consistent или имела single point of failure. Опираясь на ошибки прошлого, команда заложила архитектуру системы следующего поколения, которая и легла в основу YDB.

Запуск YDB в Yandex Cloud

YDB используется для сетевого блочного хранилища Yandex Cloud и множества сервисов. Через какое‑то время YDB стала доступна как управляемый сервис в Yandex Cloud.

У системы появились внешние пользователи, что повлияло на принципы развития платформы — ключевой задачей команды стало научиться делать удобное и простое в использовании решение, сохранив эффективность и масштабируемость.

Выход в опенсорс

В 2022 году мы выложили исходные коды YDB в опенсорс. С тех пор активно развиваем продукт как СУБД, доступную в Яндексе и за пределами.

Команды YDB

Команда распределённого хранилища

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

Команда строковых таблиц

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

Команда разработки систем поставки данных

Делает Topics внутри YDB — распредёленные отказоустойчивые очереди сообщений, тесно интегрированные с остальными компонентами YDB. Они обеспечивают работу транзакций внутри YDB между топиками и таблицами. Иными словами, у нас есть своя встроенная замена Apache Kafka.

Команда распределённых запросов

Обеспечивает эффективное выполнение пользовательских SQL-запросов к распределённой БД, включая как OLTP, так и OLAP-сценарии. Команда решает задачи оптимизации запросов, распределённого планирования и эффективного выполнения вычислений.

Команда колоночных таблиц

Занимается разработкой таблиц базы данных, предназначенных для хранения и обработки петабайтов пользовательских данных для OLAP сценариев. Оптимизирует структуру храненения данных под различные профили пишущей и чтающей нагрузки. Разрабатывает эффективные алгоритмы предварительной фильтрации и агрегации данных с использованием вспомогательных индексов (пушдаун вычислений).

Команда развития инструментов и инфраструктуры разработки

Тестирование распределённых систем, особенно баз данных, требует продуманных подходов. Наша команда занимается развитием и совершенствованием инструментов тестирования, чтобы эффективно справляться с этими задачами. Мы также поддерживаем процессы автоматического тестирования на GitHub и выстраиваем там инфраструктуру для надёжного тестирования.

Команда автоматизации управления распределёнными системами

Отвечает за запуск наших сервисов в облаках и локально, мониторинг и процессы CI/CD. Разрабатывает Kubernetes-оператор для автоматизированного развёртывания и управления кластерами YDB.

Команда потоковых и федеративных запросов

Разрабатывает облачный сервис Yandex Query и движок федеративных запросов в YDB. Yandex Query предназначен для анализа данных в Object Storage и потоковых данных из шины Yandex Data Streams с помощью SQL-запросов. Это позволяет обрабатывать непрерывные запросы по потокам данных.

Команда продуктового развития YDB

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

Команда разработки клиентских библиотек

Наш код на 8+ языках программирования работает в рантайме клиентских приложений по другую сторону сети (относительно кластера YDB) — это нативные SDK, промышленные стандарты типа JDBC, database/SQL, ADO.Net, утилиты, библиотеки миграций и ORМы. Тестируем отказоустойчивость, разрабатываем инструменты диагностики и наблюдаемости.

Что мы делаем

Создаём инструменты для управления базами данных и построения распределённых систем. Мы любим решать сложные задачи. А ещё — успеваем развивать не только СУБД, но и себя: многие из нашей команды защитили магистерские диссертации и получили кандидатские степени ведущих университетов.

Кого мы ищем

Разработчики

Алгоритмическая база
Интерес к базам данных
Продвинутые знания в С++
Разработка распределённых систем и их дизайн
Готовность и желание работать с инфраструктурными задачами

SRE

Навыки программирования на Python, Go или даже С++
Понимание работы сетей
Опыт работы с публичными облаками
Опыт эксплуатации Linux

Технические менеджеры

Выстраивание процессов работы
Понимание принципов работы распределённых систем
Постоянное взаимодействие с командой разработчиков
Управление сложными длительными проектами и продуктами
Разработка программного обеспечения или инфраструктурных решений

Команда

Андрей Фомичёв

Руководитель YDB

Являюсь основателем и техническим директором YDB. Всю сознательную профессиональную жизнь занимаюсь задачами хранения и обработки данных и распределенными системами, имею степень кандидата физико-математических наук по базам данных. Когда-то на заре развития системы писал код YDB Distributed Storage, а несколько лет назад выводил YDB в опенсорс. Сейчас развиваю YDB как универсальную базу данных, которая способна решить любую пользовательскую задачу.

Олег Бондарь

Директор по продукту YDB

Более 25 лет занимаюсь высоконагруженными распределёнными проектами, системами хранения и обработки данных, разработкой ПО. Много лет работаю в Яндексе, участвовал в выходе YDB в опенсорс. Десять лет назад наш продукт был инфраструктурным проектом для внутренних сервисов, а сегодня — основная платформа хранения, обработки и передачи данных практически для всех сервисов Яндекса.

Сергей Пучин

Руководитель YDB Compute, SDK & Engineering

Руковожу разработкой области выполнения запросов, клиентского инструментария и инфраструктуры разработки YDB, присоединился к команде практически с самого начала её существования. Мы стремимся сделать наш продукт универсальной базой данных, способной решать не только сценарии высокой OLTP — нагрузки, но также и аналитические сценарии, включая гибридное выполнение. Поэтому мы продолжаем работать над ключевыми компонентами системы, такими как оптимизатор запросов, распределённый планировщик и рантайм.

Рассказываем о YDB

В этом докладе Павел Велихов рассказывает, как команда разработала стоимостный оптимизатор, какие задачи он решает и как YDB выглядит на фоне конкурентов в OLTP, OLAP и HTAP-сценариях.
Алексей Николаевский объясняет, как устроены архитектуры транзакций в Apache Kafka и YDB, что такое топик, транзакционная запись и чтение, а также чем похожи и различаются производительности транзакций.
Виталий Исаев показывает, как эффективно объединять данные из разных СУБД: о принципах работы систем и ключевых оптимизациях.
Шина данных уровня Яндекса требует нестандартных решений. Наш техлид Александр Зевайкин рассказывает о том, как появился сервис YDB Topics, как его оптимизировали и зачем отказались от Kafka.
В докладе Алексей Мясников рассказывает про наш опыт разработки драйверов для распределеной БД на разных языках, про проблемы, с которыми сталкивались и решали или митигировали, а также про вынесенные уроки и принятые решения.
В докладе Олег Бондарь, CPO YDB, в рамках Я. Субботника по инфраструктуре подробно рассказывает про распределённую отказоустойчивую базу данных с открытым исходным кодом.

Наши вакансии

Разработчик на С++ в команду строковых таблиц YDB

От 5 лет

Разработчик на C++ в YDB OLAP

От 5 лет

Разработчик бэкенда в команду клиентских библиотек YDB

От 5 лет

С++ разработчик в Query Processor Team

От 3 лет

Напишите нам

Полина Абушек, Рекрутер YDB