Реляционные БД
Тема дорожной карты · Backend разработчик
SQL базы данных (реляционные базы данных) хранят данные в таблицах с заранее определёнными схемами и обеспечивают ссылочную целостность через внешние ключи, являясь основой транзакционных бэкенд-систем с гарантиями ACID. Язык структурированных запросов (SQL) предоставляет декларативный интерфейс для работы с данными: SELECT ... JOIN ... WHERE извлекает реляционные данные из нескольких таблиц, INSERT INTO добавляет записи, UPDATE ... SET изменяет их, а DELETE FROM удаляет; BEGIN/COMMIT/ROLLBACK обёртывают несколько операторов в атомарные транзакции. Доминирующие open-source SQL базы данных для бэкенд-разработки: PostgreSQL — известный расширенными возможностями, такими как JSONB-колонки, полнотекстовый поиск, материализованные представления и оконные функции, — и MySQL, широко применяемый в веб-стеках и известный высокой пропускной способностью чтения; SQLite служит встроенной базой данных с нулевой конфигурацией, идеальной для локальной разработки и лёгких приложений. Оптимизация производительности SQL требует индексирования внешних ключей и часто фильтруемых колонок через CREATE INDEX, анализа планов запросов с EXPLAIN ANALYZE (PostgreSQL) или EXPLAIN (MySQL), и настройки пулинга соединений через pgBouncer, HikariCP или настройки пула SQLAlchemy. Управление изменениями схемы в SQL базах данных осуществляется с помощью инструментов миграции — Flyway, Liquibase, Alembic (alembic upgrade head) или Rails db:migrate, — интегрированных в CI/CD-пайплайны для синхронизации схемы базы данных с кодом приложения во всех окружениях.
Как это работает
Реляционные БД используют ACID-транзакции, декларативный SQL, реляционную схему. PostgreSQL — современный дефолт для новых проектов (богатая типизация, JSON-поддержка, расширения, MVCC); MySQL/MariaDB всё ещё распространён (legacy + WordPress); SQLite — для маленьких single-host (удивительно мощный); CockroachDB / YugabyteDB — для распределённого SQL. Стратегия индексов, план запроса (EXPLAIN), connection pooling — операционные основы. Миграции через Alembic, Flyway, Liquibase или фреймворк-специфичные тулы.
Когда применять
Postgres по умолчанию для любого нового проекта — широкий feature set, зрелая эксплуатация, JSON и full-text встроены. MySQL — только если команда или хостинг уже на нём. SQLite — для embedded или первых 10к юзеров (буквально — масштабируется дальше, чем думают). Distributed SQL (Cockroach, Yugabyte, TiDB) — только когда переросли primary-replica Postgres; эта точка гораздо дальше, чем продают вендоры.
Типичные ошибки
Ловушки Реляционные БД: пропущенные индексы на колонках в WHERE / JOIN (один медленный запрос валит БД); N+1 паттерны от ORM (eager-load явно); долгие транзакции держат локи (делите на меньшие записи); не анализируете план запросов перед деплоем (EXPLAIN ANALYZE); pool соединений мал или велик (начните с max_connections / replica_count, тюньте по наблюдениям).