YDB — это распределённая отказоустойчивая реляционная БД с открытым исходным кодом. Вместе со стеком serverless-технологий YDB позволяет организовать систему хранения и обработки данных для самых сложных и требовательных приложений.
Также YDB — это платформа для создания инфраструктурных компонентов. Мы предлагаем пользователям не только надёжные транзакции поверх таблиц, но и готовые решения на основе самого движка: персистентные очереди, федеративные запросы, сетевые диски для виртуальных машин (Yandex Network Block Store) и другие.
Важные свойства YDB — горизонтальное масштабирование, высокая доступность и отказоустойчивость. Система реагирует на изменения нагрузки в компонентах и узлах системы, динамически перераспределяет логические компоненты по узлам, обеспечивает консистентное выполнение пользовательских SQL-запросов и автоматическое управление партицированием таблиц.
От качественного решения подобных задач зависят многие видимые пользователю характеристики БД: консистентность, отзывчивость и пропускная способность. Мы постоянно улучшаем управляющие компоненты, чтобы увеличивать производительность, создавать новую функциональность и расширять сценарии применения YDB.
Ещё одна задача YDB — обеспечивать безопасный доступ к данным и безопасную работу с ними. Это включает в себя аутентификацию, проверку прав на действия с данными и объектами, манипуляции правами, интеграции с системами управления идентификацией и доступом, работу с секретами, аудитное логирование. От работы подсистем безопасности зависит безопасность пользовательских данных.
Большая часть разработки ведётся в GitHub, поэтому вы сможете публично делиться результатами работы.
Какие задачи вас ждут:
Развитие новой функциональности
Вы будете реализовывать новые алгоритмы балансировки. Разрабатывать подходы к масштабированию компонент системной распределённой инфраструктуры. Добавлять интеграции с внешними системами управления идентификацией и доступом. Развивать работу с секретами.
Улучшение того, что уже есть
Понадобится развивать алгоритмы балансировки логических компонент. Улучшать автоматическое партиционирование таблиц. Уменьшать стоимость выполнения пользовательских и системных операций со схемой. Развивать систему прав YDB и её взаимодействие с внешними системами управления доступом. Улучшать подсистему аудитного логирования.
RnD и взаимодействие со смежными командами
Важно изучать проблемы в реализации и предлагать, как решить их. Вы будете общаться с командами других подсистем YDB и вместе выбирать оптимальные решения при проектировании изменений.
Мы ждём, что вы:
- Любите С++, хорошо им владеете и пишете на нём больше трёх лет
- Знаете и умеете применять классические алгоритмы и структуры данных
- Понимаете парадигму многопоточности, знакомы с основными подходами, проблемами и ограничениями в этой области
- Разрабатывали высоконагруженные, распределённые, близкие к железу сервисы или сервисы реального времени