Проект содержит все необходимые материалы для курса по NoSQL базам данных и пайплайн в GitHub Actions для проверки лабораторных работ.
EventHub — backend‑сервис платформы мероприятий, предназначенный для изучения различных подходов к хранению и обработке данных с использованием NoSQL баз данных. Проект выполняется поэтапно в рамках лабораторных работ и представляет собой единый сервис, который развивается в течение всего курса.
Цель проекта — на практике понять, как работают NoSQL базы данных, их сильные и слабые стороны, и сравнить различные подходы к хранению данных.
Вы научитесь работать с 4-мя NoSQL базами данных:
Всего будет 7 лабораторных работ:
- Старт: Healthcheck
- Redis: Сессии пользователей
- MongoDB: Пользователи и события
- MongoDB: Шардирование и репликация
- Cassandra: Реакции на мероприятия
- Cassandra: Отзывы на мероприятия
- Neo4j: Связи и рекомендации
Задания публикуются постепенно по мере прохождения курса
- Используйте предоставленный шаблон репозитория ndbx-template
- Соблюдайте требования к структуре проекта, описанные в CONTRIBUTING.md
- Можно использовать любой язык программирования
- Фреймворки и библиотеки - на ваше усмотрение, но не забывайте о производительности
- Все лабораторные работы должны полностью проходить автоматическую проверку в GitHub Actions
- Каждая последующая лабораторная работа должна на основе предыдущей
- Очередная лабораторная работа не должна ломать функциональность предыдущих лабораторных работ (проверяется в процессе автоматической проверки)
За выполнение лабораторных работ вы получаете баллы, из которых складывается итоговая оценка за семестр.
У каждой лабораторной работы есть своя максимальная сумма баллов и срок сдачи. Если вы сдаёте работу после срока, то из полученных баллов вычитается "штраф за просрочку".
Сроки и баллы указаны в таблице успеваемости (уточняйте у преподавателя).
- Документируйте исходный код, соблюдая стандарты, например:
- Собюдайте конвенцию коммитов
- Каждый коммит - рабочая и протестированная версия проекта. Это облегчит поиск последней рабочей версии при поиске ошибки
- Пишите документацию на Markdown в Obsidian или в вашей IDE.
- Используйте Makefile для удобного взаимодействия с проектом
- Используйте PlantUML для создания блок-схемы и диаграмм. Есть возможность предпросмотра в IDE (в VSCode через расширение PlantUML) и утилиты graphviz и Java, установленных на вашем компьютере (подробнее)
- Схемы БД реализуйте через DBML и dbdiagram.io. В VSCode есть расширение для предпросмотра
- Ведите коллекцию Postman или Insomnia c примерами запросов и ответов для каждого эндпоинта. Можно развернуть Swagger, но не обязательно.
- Используйте публичные датасеты с тестовыми данными, например, из Kaggle или генерируйте свои на Python, Go или любом другом языке программирования.
- Если нужен текст-рыба - используйте
- генератор текста "рыба" если нужен текст на русском
- или Lorem Ipsum если нужен текст на английском