Skip to content

Latest commit

 

History

History
74 lines (49 loc) · 4.67 KB

File metadata and controls

74 lines (49 loc) · 4.67 KB

Базы данных

Документ посвящен знаниям по базам данных, необходимых для реализации проектов. Базы данных - один из ключевых навыков для бэкенд разработчиков.

SQL

Что нужно знать:

  • SQL синтаксис - SELECT, INSERT, UPDATE/DELETE, GROUP BY, JOIN
  • Создание таблиц
  • Индексы и первичный ключ
  • Внешние ключи
  • RDBMS - MySQL, Postgres. Различные книги/курсы, как правило, учат SQL в контексте в одной из этих двух систем управления баз данных. Для джуниров разница между ними не принципиальна
  • Embedded SQL databases - SQLite, H2

Избранные курсы и учебные ресурсы

Python SQL connectors

Базовые инструменты для работы с SQL из Python.

Что нужно уметь:

  • Подключать библиотеки для работы с SQL, используя системы управления зависимостями
  • Создавать таблицы
  • Читать данные из таблиц в ассоциативные массивы или в экземпляры классов-моделей

Примеры:

Избранные курсы и учебные ресурсы

ORM

ORM - инструмент для стирания границ между записями в базе и Python объектами. Таблицы в базе данных, как правило, описывают некоторые сущности - пользователей, заказы, товары. ORM позволяют описать эти сущности с помощью классов и совершать действия над таблицами (чтение, вставку, и прочие) без написания SQL синтаксиса - ORM это берёт на себя.

Сфокусируемся на SQLAlchemy и Django ORM.

Что нужно уметь:

  • Подключать ORM к проекту, используя системы управления зависимостями
  • Писать классы, описывающие хранящиеся в таблицах сущности
  • CRUD операции (create, read, update, delete)
  • Кастомные запросы

Избранные курсы и учебные ресурсы

  • TODO
  • Практика - проекты с 4 по 7

NoSQL базы данных

SQL - самая нужная для джуниора технология для хранения, но кроме SQL существуют десятки инструментов для хранения данных, созданных под ситуации, где SQL излишен, либо неудобен. Знать все типы баз данных на практике - невозможно, их слишком много. Достаточно иметь представление о том, какие из них и в каких ситуациях используются.

В рамках проектов, на практике поработаем с S3/Minio - хранилищем файлов, и Redis - хранилищем кэша/сессий.

Избранные курсы и учебные ресурсы

  • Практика - проекты 6 и 7

Что дальше

Перечисленные выше знания и инструменты - база для Junior (кроме NoSQL). Если есть желание и необходимость углубиться в Backend технологии, советую обратить внимание на:

  • Инструменты миграций - Alembic, Django migrations
  • Document-oriented DB - MongoDB
  • Key-value storage - Redis
  • Интеграции хранилищ кэша