$ sudo teach IT
Модуль 6 · Заключение

Урок 6.2 — Дальнейший Roadmap

Куда двигаться после SQLite. PostgreSQL, MySQL, MongoDB, ORM, инструменты и карьерные пути.

💡 Карта развития

Вы изучили SQL на SQLite — лёгкой встраиваемой базе данных. Теперь пора двигаться дальше: промышленные СУБД, NoSQL, ORM и выбор карьерного пути. В этом уроке — дорожная карта вашего дальнейшего роста.

🐘 1. PostgreSQL — следующая ступень

PostgreSQL — самая продвинутая открытая реляционная база данных. Именно её чаще всего используют в реальных проектах. После SQLite вы будете чувствовать себя как дома — синтаксис SQL почти одинаковый.

1.1 Почему PostgreSQL?

  • Бесплатно и открыто — никаких лицензий
  • Огромное сообщество — миллионы разработчиков, тонны документации
  • Расширяемость — JSON, полнотекстовый поиск, геоданные (PostGIS)
  • Надёжность — транзакции, бэкапы, репликация «из коробки»
  • SQL-стандарт — поддержка оконных функций, CTE, UPSERT и многого другого

1.2 Чем отличается от SQLite?

-- SQLite (вы уже знаете):
CREATE TABLE users ( id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT NOT NULL, email TEXT NOT NULL
); -- PostgreSQL (то же самое, но вместо INTEGER ... SERIAL):
CREATE TABLE users ( id SERIAL PRIMARY KEY, name TEXT NOT NULL, email TEXT NOT NULL
); -- SERIAL = INTEGER + AUTOINCREMENT в PostgreSQL
-- В остальном SQL почти не отличается!

1.3 Продвинутые возможности PostgreSQL

-- JSON — храните JSON прямо в таблице
CREATE TABLE events ( id SERIAL PRIMARY KEY, event_data JSONB NOT NULL
);
INSERT INTO events (event_data) VALUES ('{"user": "ivan", "action": "login", "ip": "192.168.1.1"}'); -- Оконные функции — продвинутые расчёты
SELECT name, salary, AVG(salary) OVER (PARTITION BY department) AS avg_department_salary
FROM employees; -- CTE (WITH) — временные таблицы в запросе
WITH top_products AS ( SELECT id, name, price FROM products ORDER BY price DESC LIMIT 5
)
SELECT * FROM top_products WHERE price > 50000;

1.4 Как начать с PostgreSQL?

  1. Скачайте PostgreSQL с официального сайта (www.postgresql.org)
  2. Установите pgAdmin — графический интерфейс для PostgreSQL
  3. Попробуйте SQL-задачи на LeetCode в «режиме PostgreSQL»
  4. Сделайте проект: TODO-приложение, блог, интернет-магазин на PostgreSQL

🐬 2. MySQL — стандарт веба

MySQL — ещё одна популярная реляционная база данных. Именно её чаще всего выбирают для веб-проектов (WordPress, Laravel, многие CMS):

-- MySQL: почти то же самое, но есть нюансы
CREATE TABLE users ( id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(255) NOT NULL, -- VARCHAR вместо TEXT для коротких строк email VARCHAR(255) NOT NULL UNIQUE
); -- Различия с SQLite/PostgreSQL:
-- INT ... AUTO_INCREMENT вместо SERIAL или INTEGER PRIMARY KEY AUTOINCREMENT
-- VARCHAR(n) — строка с ограничением длины
-- Нет JSONB (обычный JSON с MySQL 5.7+)
-- Нет оконных функций в старых версиях
СУБД Когда выбрать
SQLite Для обучения, локальных приложений, встраиваемых БД
PostgreSQL Серьёзные проекты, аналитика, геоданные, продвинутый SQL
MySQL Веб-разработка, WordPress, хостинг, классические LAMP-проекты

🍃 3. MongoDB — когда не нужны таблицы

MongoDB — NoSQL-база данных. Вместо таблиц и строк она хранит документы в формате JSON-подобных структур. Это удобно, когда структура данных меняется или не вписывается в строгие таблицы:

// MongoDB — не SQL, а JavaScript-подобный синтаксис
// Создаём документ (аналог строки в SQL)
db.users.insertOne({ name: "Иван Петров", email: "ivan@mail.com", address: { city: "Москва", street: "Тверская" }, hobbies: ["чтение", "путешествия", "SQL"] // массив прямо в документе
}); // Поиск (аналог SELECT * FROM users WHERE city = 'Москва')
db.users.find({"address.city": "Москва"});

💡 Когда стоит учить MongoDB: Когда нужна гибкая схема, много вложенных данных, или вы работаете с Node.js. Но сначала хорошо освойте SQL — реляционные базы используются чаще.

🔧 4. ORM — SQL из кода

ORM (Object-Relational Mapping) — это библиотеки, которые позволяют писать SQL через код на вашем языке программирования. Вместо строк с SQL вы работаете с объектами и функциями:

# SQLAlchemy (Python) — самая популярная ORM для Python # Вместо этого:
cursor.execute("SELECT * FROM users WHERE email = ?", ("ivan@mail.com",)) # Вы пишете это:
user = session.query(User).filter(User.email == "ivan@mail.com").first() # ORM сама генерирует SQL и превращает результат в Python-объекты!

Популярные ORM:

  • SQLAlchemy — Python (промышленный стандарт)
  • Django ORM — Python (встроена в Django)
  • Prisma — TypeScript / JavaScript
  • TypeORM — TypeScript / JavaScript
  • Entity Framework — C# (.NET)
  • Sequelize — Node.js
  • Hibernate — Java
# Пример SQLAlchemy (определение таблицы через Python-класс)
from sqlalchemy import Column, Integer, String, create_engine
from sqlalchemy.orm import declarative_base Base = declarative_base() class User(Base): __tablename__ = 'users' id = Column(Integer, primary_key=True) name = Column(String, nullable=False) email = Column(String, unique=True) # Это создаст таблицу CREATE TABLE users (...)
# SQL генерируется автоматически!

🛠️ 5. Инструменты администрирования

Работать с базами данных через консоль — нормально, но визуальные инструменты сильно упрощают жизнь:

pgAdmin

Графический клиент для PostgreSQL. Позволяет просматривать таблицы, писать запросы, создавать бэкапы, управлять пользователями:

-- pgAdmin: открыть Query Tool и писать запросы визуально
-- Можно открыть таблицу двойным кликом
-- Есть автодополнение, история запросов, визуальный план выполнения Скачать: https://www.pgadmin.org/

DBeaver

Универсальный клиент для любых баз: SQLite, PostgreSQL, MySQL, Oracle, MongoDB и десятков других. Одно приложение на все случаи:

DBeaver:
- Бесплатно (Community Edition)
- Поддерживает 50+ СУБД
- Визуальный редактор таблиц
- Генерация ER-диаграмм
- Экспорт данных в CSV, JSON, Excel
- Тёмная тема :) Скачать: https://dbeaver.io/

Другие полезные инструменты

  • DB Browser for SQLite — простой клиент для SQLite (вы уже могли использовать его)
  • DataGrip — мощная IDE от JetBrains (платная, но есть пробный период)
  • TablePlus — красивый современный клиент для macOS
  • MySQL Workbench — официальный клиент для MySQL
  • RedisInsight — для Redis (NoSQL)

💼 6. Карьерные пути

Знание SQL открывает двери в несколько IT-специальностей. Вот три основных направления:

📊 Аналитик данных (Data Analyst)

Вы работаете с данными: собираете, очищаете, анализируете и визуализируете. SQL — ваш главный инструмент. Дополнительно:

  • Excel / Google Sheets
  • Python (pandas, numpy, matplotlib)
  • BI-инструменты: Tableau, Power BI, Superset
  • Статистика и A/B-тестирование
-- Типичный запрос аналитика
SELECT DATE(order_date) AS day, COUNT(DISTINCT customer_id) AS unique_customers, ROUND(SUM(amount), 2) AS revenue
FROM orders
WHERE order_date >= '2024-01-01'
GROUP BY day
ORDER BY day;

💻 Backend-разработчик

Вы пишете серверный код, который работает с базой данных. SQL — обязательный навык. Дополнительно:

  • Язык: Python, Java, Go, C#, Node.js, PHP, Ruby — любой на выбор
  • Фреймворк: Django/Flask, Spring Boot, Gin, ASP.NET, Express, Laravel, Rails
  • ORM: SQLAlchemy, Hibernate, Prisma, Entity Framework
  • API: REST, GraphQL
  • Docker, CI/CD, облака (AWS, GCP, Azure)
# Backend + SQL (Python + FastAPI + SQLAlchemy)
@app.get("/users/{user_id}")
def get_user(user_id: int): user = session.query(User).filter(User.id == user_id).first() return {"id": user.id, "name": user.name, "email": user.email}

🗄️ DBA (Database Administrator)

Вы управляете базами данных: настройка, оптимизация, бэкапы, восстановление, безопасность. Глубокое знание SQL — база. Дополнительно:

  • Администрирование Linux
  • Репликация, шардинг, кластеризация
  • Мониторинг (Prometheus, Grafana, Zabbix)
  • Оптимизация запросов (EXPLAIN, индексы, партиционирование)
  • Облачные БД: Amazon RDS, Google Cloud SQL, Yandex Managed Databases
-- DBA: анализ медленных запросов
EXPLAIN ANALYZE
SELECT c.name, COUNT(o.id) as order_count
FROM customers c
LEFT JOIN orders o ON c.id = o.customer_id
WHERE o.order_date >= '2024-01-01'
GROUP BY c.name;

🗺️ 7. Примерный план на 6 месяцев

Вот примерный roadmap, если хотите системно расти:

Месяц Что делать
Месяц 1 Закрепить SQLite: 2-3 задачи на LeetCode ежедневно. Повторить JOIN и GROUP BY.
Месяц 2 Установить PostgreSQL. Пройти туториал. Сделать проект: TODO-приложение.
Месяц 3 Изучить Python + SQLAlchemy. Написать парсер, сохраняющий данные в БД.
Месяц 4 Продвинутый SQL: оконные функции, CTE, индексы. Разобрать EXPLAIN ANALYZE.
Месяц 5 Backend-проект: FastAPI + PostgreSQL + SQLAlchemy. API для заметок или блога.
Месяц 6 Docker, тесты, деплой. Портфолио-проект для GitHub. Подача заявок на стажировку.

📖 8. Ресурсы для дальнейшего изучения

📘 Книги

«Изучаем SQL» (Алан Бьюли) — отличная книга для начинающих
«SQL для смертных» (Джон Вандер Плас) — практическое руководство
«PostgreSQL. Основы» (Павел Лузанов) — для углублённого изучения

🎓 Онлайн-курсы

Stepik — «SQL для начинающих» (бесплатно)
Coursera — «Databases and SQL» (IBM)
SQL-ex.ru — тренажёр SQL с задачами
PGExercises.com — практика PostgreSQL

🎥 YouTube-каналы

Тимофей Хирьянов — курс по базам данных (МФТИ)
CS50 — лекции по SQL (Гарвард, есть русские субтитры)
Артём Шумейко — PostgreSQL для начинающих

Финальный совет

Лучший способ выучить SQL — делать реальные проекты. Придумайте задачу (учёт финансов, библиотека, трекер привычек) и реализуйте её. Сначала на SQLite, потом на PostgreSQL. Код выкладывайте на GitHub — это будет ваше портфолио.

💡 Итог курса

Вы прошли путь от нуля до уверенного владения SQL. Теперь у вас есть база, чтобы расти дальше: PostgreSQL для серьёзных проектов, MySQL для веба, MongoDB для гибких схем, ORM для удобной работы из кода. Выберите направление (аналитика, backend, DBA) и двигайтесь к цели. Удачи!

Урок 6.2: Дальнейший Roadmap

5 вопросов