Документ посвящен знаниям по базам данных, необходимых для реализации проектов. Базы данных - один из ключевых навыков для бэкенд разработчиков.
Что нужно знать:
- SQL синтаксис -
SELECT,INSERT,UPDATE/DELETE,GROUP BY,JOIN - Создание таблиц
- Индексы и первичный ключ
- Внешние ключи
- RDBMS - MySQL, Postgres. Различные книги/курсы, как правило, учат SQL в контексте в одной из этих двух систем управления баз данных. Для джуниров разница между ними не принципиальна
- Embedded SQL databases - SQLite, H2
- Курс "SQL для начинающих: с нуля до сертификата Oracle" Заура Трегулова - для начала достаточно глав 1-3, 6-7, 10-12
- Практика:
- Интерактивные задачи для практики синтаксиса - https://app.codesignal.com/ (раздел Arcade - Databases)
- Проект #3 - "Обмен валют"
Базовые инструменты для работы с SQL из Python.
Что нужно уметь:
- Подключать библиотеки для работы с SQL, используя системы управления зависимостями
- Создавать таблицы
- Читать данные из таблиц в ассоциативные массивы или в экземпляры классов-моделей
Примеры:
- TODO
- Практика:
- Проект #3 - "Обмен валют"
ORM - инструмент для стирания границ между записями в базе и Python объектами. Таблицы в базе данных, как правило, описывают некоторые сущности - пользователей, заказы, товары. ORM позволяют описать эти сущности с помощью классов и совершать действия над таблицами (чтение, вставку, и прочие) без написания SQL синтаксиса - ORM это берёт на себя.
Сфокусируемся на SQLAlchemy и Django ORM.
Что нужно уметь:
- Подключать ORM к проекту, используя системы управления зависимостями
- Писать классы, описывающие хранящиеся в таблицах сущности
- CRUD операции (create, read, update, delete)
- Кастомные запросы
- TODO
- Практика - проекты с 4 по 7
SQL - самая нужная для джуниора технология для хранения, но кроме SQL существуют десятки инструментов для хранения данных, созданных под ситуации, где SQL излишен, либо неудобен. Знать все типы баз данных на практике - невозможно, их слишком много. Достаточно иметь представление о том, какие из них и в каких ситуациях используются.
В рамках проектов, на практике поработаем с S3/Minio - хранилищем файлов, и Redis - хранилищем кэша/сессий.
- Практика - проекты 6 и 7
Перечисленные выше знания и инструменты - база для Junior (кроме NoSQL). Если есть желание и необходимость углубиться в Backend технологии, советую обратить внимание на:
- Инструменты миграций - Alembic, Django migrations
- Document-oriented DB - MongoDB
- Key-value storage - Redis
- Интеграции хранилищ кэша