← Все вакансии

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

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

Также YDB — это платформа для создания инфраструктурных компонентов. Мы предлагаем пользователям не только надёжные транзакции поверх таблиц, но и готовые решения на основе самого движка: персистентные очереди, федеративные запросы, сетевые диски для виртуальных машин (Yandex Network Block Store) и другое.

Задачи и обязанности

Распределённые транзакции


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



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

Партиционирование


Строковая таблица в БД может быть шардирована по диапазонам значений первичного ключа. Каждый шард таблицы отвечает за свой диапазон первичных ключей. Диапазоны ключей, обслуживаемых разными шардами, не пересекаются. Различные шарды таблицы могут обслуживаться разными серверами распределённой БД (в том числе расположенными в разных локациях), а также могут независимо друг от друга перемещаться между серверами для перебалансировки или поддержания работоспособности шарда при отказах серверов или сетевого оборудования.

Первичные и вторичные индексы


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

Векторный поиск


Поиск k ближайших соседей (k-NN) — это задача оптимизации, которая заключается в нахождении k ближайших точек к точке запроса. Это может быть полезно в различных приложениях, таких как классификация изображений, рекомендательные системы и многое другое.



Решение задачи k-NN разбивается на два крупных подкласса методов: точные и приближённые.

Полнотекстовый поиск


Полнотекстовые индексы — это экспериментальный тип вторичных индексов, которые предоставляют возможности быстрого текстового поиска. Основная идея полнотекстового индекса заключается в сохранении сопоставления терминов со строками, которые содержат эти термины.

Больше о бэкенде в Яндексе — в канале Yandex for Backend

Требования

  • Разрабатывали на С++ не меньше трёх лет
  • Знаете всё, что обычно спрашивают на собеседованиях: классические алгоритмы, структуры данных и прочее
  • Понимаете ключевые аспекты построения отказоустойчивых распределённых систем
  • Прочитали классические книги Дейта и Клеппмана :)
Откликнуться →