YDB для студентов технических ВУЗов

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

Что мы предлагаем?

  • Даем возможность получить опыт профессиональной разработки с использованием современных технологий и языков программирования, востребованных во всем мире.
  • Позволяем совместить получение такого опыта с подготовкой курсового или дипломного проекта.
  • Консультируем по применяемым технологиям и алгоритмам в рамках работы над проектом.
  • Если ваша доработка будет принята, то вы получите подтвержденный merge коммита с вашим авторством в проект на github с 2500+ звездами.
  • Мы ищем лучших для того, чтобы пригласить к себе в команду.

Зачем это нам?

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

Что мне делать?

  • Прочитайте о последовательности шагов по выполнению проекта в разделе Как выстроена работа
  • Любые вопросы по теме студенческих проектов можно задавать на почту students@ydb.tech
  • Вы можете также присоединиться к публичному русскоязычному Telegram-чату YDB, и задать вопрос там.

Как выстроена работа?

В настоящее время мы готовы предложить вам темы, связанные с доработками YDB SDK.

  1. Выберите тему проекта из предложенных ниже
  2. Выберите язык программирования, из тех которые поддерживаются YDB SDK, и для которых мы подготовили инструкции по сборке и запуску тестов
  3. Соберите SDK по инструкции, запустите тесты, оцените сложность кода и свои возможности по его изменениям
  4. Напишите нам письмо на почту students@ydb.tech следующего содержания:
    • Как вас зовут, в какому ВУЗе учитесь, на каком курсе, по какой специальности
    • Какую тему вы хотите взять, на каком языке программирования
    • Так как в рамках тем можно делать разные доработки, напишите, за что именно хотели бы взяться
  5. Мы согласуем с вами тему и состав доработки, вы подтверждаете её в своем ВУЗе
  6. После подтверждения вам назначается постоянный куратор, который создаст проектный чат в Telegram, в котором вы будете решать все возникающие вопросы
  7. Реализуйте доработку, напишите тесты, получите подтверждение реализации у куратора
  8. Сделайте PR с доработкой в репозиторий на GitHub
  9. Дождитесь, пока PR пройдет проверки другими членами команды YDB, после чего будет принят в основную ветку репозитория
  10. Используйте PR с вашим авторством как основу для своего курсового/дипломного проекта

Темы проектов

Обгоняем скорость света

Узлы кластеров YDB распределены географически на расстояния, где физика в виде скорости света начинает оказывать заметное влияние на работу системы.

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

Каков тот алгоритм выбора, который позволит сделать работу эффективнее, но не ухудшит надежность системы, или её характеристики в разных предельных случаях?

Мы реализовали первую версию такого алгоритма в YDB Go SDK.

Мы хотим предложить вам в рамках курсового или дипломного проекта взяться за реализацию и/или оптимизацию этого алгоритма на любом языке программирования, на котором существует YDB SDK: C++, Go, Java, Rust, PHP, C# (.NET), Python, node.js.

Feature parity

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

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

На странице Feature parity документации YDB можно увидеть текущий статус: какие функции реализованы в каких SDK.

Мы предлагаем вам в рамках курсового или дипломного проекта взяться за реализацию какой-либо функции в том SDK, где она еще не реализована.

Другие темы

Вы можете взять за основу курсового или дипломного проекта реализацию любой доработки SDK из перечня зарегистрированных Issues.

Часть из них отмечена тегом student-projects, что означает что они (по нашему мнению) неплохо подходят для такой цели:

Как собрать и запустить тесты?

Инструкции по сборке и запуску тестов размещены в репозиториях на GitHub: