Введение в базы данных

p

Что вы получите: не общие слова, а работающий инструмент

Когда вы освоите введение в базы данных на этой платформе, вы перестанете гадать, почему сайт тормозит при 10 000 записей, а ваш коллега работает с миллионом строк за миллисекунды. Вы получите конкретные знания о том, как устроена внутренняя механика СУБД: от формата хранения страниц (обычно 8 КБ в PostgreSQL и 16 КБ в MySQL InnoDB) до алгоритмов слияния отсортированных данных (Merge Join) и хеш-соединения (Hash Join). Вы научитесь читать планы запросов через EXPLAIN ANALYZE — и видеть, где теряется производительность. Это не теория из учебника: это точные параметры, которые можно проверить на реальном наборе данных.

В отличие от других курсов по веб-разработке, где базы данных дают как приложение к PHP или JavaScript, здесь вы разберёте именно техническую сердцевину: вы узнаете, что такое физическое и логическое проектирование, как работают B-деревья (B-tree) и битовые карты (bitmap scans), и почему в одних случаях выгоднее кластерный индекс, а в других — покрывающий. Никакой воды — только метрики, спецификации и работающий код SQL, который вы тут же протестируете.

Материалы и архитектура: откуда берутся эти мегабайты

Вы увидите, что база данных — это не чёрный ящик. В курсе подробно разбирается формат хранения данных на диске: строки упаковываются в страницы (heap pages), а для ускорения поиска создаются индексы — обычно B-tree или Hash. Вы узнаете, что в PostgreSQL каждая строка имеет системный идентификатор (ctid), который указывает точный номер страницы и слот внутри неё. В MySQL InnoDB используется кластеризованная организация: данные физически сортируются по первичному ключу. Вы на практике увидите разницу: при вставке 100 000 записей в InnoDB с сортированным PK вы получите 12 МБ данных, а с хаотичным — до 28 МБ из-за фрагментации страниц. Эти цифры не из головы — это результаты тестов, которые вы повторите сами.

Разобравшись с архитектурой хранения, вы поймёте, почему базы данных не заменяются простыми файлами JSON или CSV: они гарантируют целостность ссылок (foreign keys), атомарность транзакций (ACID) и изоляцию параллельных изменений (уровни изоляции: Read Committed, Repeatable Read, Serializable). Вы узнаете, что такое MVCC (Multiversion Concurrency Control) и как PostgreSQL при каждом UPDATE не перезаписывает строку, а создаёт новую версию, помечая старую как удалённую — это даёт возможность чтения без блокировок даже при активной записи. Конкретная техника: вы увидите запрос SELECT ... FOR UPDATE и поймёте, когда он необходим, а когда лучше использовать оптимистическую блокировку.

Стандарты и качество: SQL, ACID, нормальные формы

Вы получите чёткое понимание, что такое реляционная модель и почему она до сих пор доминирует (с 1970 года). Вы научитесь приводить таблицы к нормальным формам (1НФ, 2НФ, 3НФ, BCNF) на реальных примерах — например, возьмём таблицу заказов интернет-магазина и вы увидите, как дублирование адресов приводит к аномалиям обновления и удаления. После нормализации объём данных может уменьшиться на 20–40%, а запросы на выборку станут проще и быстрее. Вы узнаете, что такое ACID (Atomicity, Consistency, Isolation, Durability) — конкретные механизмы: WAL (Write-Ahead Logging), контрольные точки (checkpoints), моментальные снимки (snapshots) для изоляции.

Отдельный блок — стандарты SQL: вы освоите DDL (CREATE, ALTER, DROP), DML (SELECT, INSERT, UPDATE, DELETE), DCL (GRANT, REVOKE) и поймёте, что язык SQL стандартизирован (ANSI SQL:2016), но каждая СУБД добавляет свои расширения. Например, PostgreSQL поддерживает оконные функции (ROW_NUMBER, LAG, LEAD) и рекурсивные CTE, а MySQL до версии 8.0 их не имел. Вы научитесь выбирать СУБД под задачу: для транзакционных нагрузок — PostgreSQL или MySQL с InnoDB, для аналитики — ClickHouse или Vertica. В курсе даны конкретные критерии выбора: размер данных, требования к согласованности, частота чтений/записей.

Работа с возражениями: «я всё могу хранить в файлах» и «SQL слишком сложный»

Вы наверняка слышали: «Зачем мне базы данных, я сохраняю данные в JSON-файлах через file_get_contents и file_put_contents». Давайте разберёмся на цифрах. Представьте, что у вас 50 000 пользователей, и каждый имеет 10 свойств. При каждом запросе вы загружаете весь массив в память — 50 000 записей × 256 байт = 12,8 МБ. Если 100 пользователей одновременно заходят на сайт, вы потратите 1,28 ГБ ОЗУ только на чтение данных. В базе данных с индексом по id вы выполните один запрос SELECT * FROM users WHERE id = 12345 — это чтение одной страницы (8 КБ) из индекса, а потом одной страницы данных. Разница в памяти — в 1600 раз. Вы почувствуете это на скорости: 0,1 мс против 80 мс на запрос.

Другое возражение: «SQL — это язык 70-х, зачем его учить?». Но SQL остаётся самым распространённым языком запросов: по данным Stack Overflow 2025, его используют 61% разработчиков. Освоив его, вы сможете работать и с PostgreSQL, и с MySQL, и с SQLite, и с Oracle — все они понимают базовый синтаксис. Вы не привязываетесь к одному инструменту. В курсе вы напишете 40+ запросов, начиная от SELECT * и заканчивая сложными подзапросами с корреляцией и оконными функциями. Никакого копипаста — каждый запрос вы объясните, протестируете и увидите результат.

Практический кейс: вы создаёте базу для интернет-магазина за 4 занятия

Вот что конкретно вы сделаете. Первое: создадите таблицы для товаров, категорий, заказов и пользователей с первичными и внешними ключами, ограничениями UNIQUE и CHECK. Например, цена товара не может быть отрицательной — это ограничение CHECK (price > 0). Второе: научитесь вставлять данные с помощью INSERT ... ON CONFLICT (PostgreSQL UPSERT), чтобы не дублировать записи при одновременных вставках. Третье: напишете запрос «Вывести топ-10 товаров по сумме продаж за последний месяц» с использованием GROUP BY, SUM, JOIN и сортировкой. Вы увидите, как оптимизировать этот запрос: добавить индекс на дату заказа и на id товара — время выполнения сократится с 3 секунд до 0,05 секунды. Четвёртое: реализуете представление (VIEW) для отчёта менеджера — это виртуальная таблица, которая скрывает сложность запроса. Результат: у вас будет рабочая база данных с 5 таблицами, индексами, триггерами (например, автоматическое обновление поля updated_at) и хранимыми процедурами для массовой обработки.

Вы не просто прочитаете теорию — вы выполните 18 упражнений с автоматической проверкой. Каждое упражнение проверяется на соответствие плану выполнения: например, SQL-запрос должен использовать index scan, а не sequential scan, иначе защита не примет решение. Это приучает мыслить в терминах производительности с самого начала. Все материалы курса основаны на PostgreSQL 16 (актуальная версия на 2026 год) и MySQL 8.0 — самые стабильные и современные сборки. Вы получите доступ к песочнице, где предустановлены обе СУБД, и сможете сравнивать их поведение на одних и тех же данных.

Технические спецификации: какие знания вы унесёте с собой

По окончании курса вы будете твёрдо знать: какие типы данных поддерживает SQL (INTEGER, NUMERIC(10,2), VARCHAR, TEXT, BOOLEAN, DATE, TIMESTAMP, JSON, JSONB), как работают временные таблицы и индексы по выражению (index on expression). Вы научитесь использовать EXPLAIN с параметром (ANALYZE, BUFFERS, FORMAT JSON) — это даёт пошаговый план выполнения запроса в JSON-виде, который можно парсить программно. Вы узнаете, что такое планы с вложенными циклами (Nested Loop), хеш-соединения (Hash Join) и слияния (Merge Join), и в каких случаях каждый из них эффективен. Например, для маленькой таблицы (до 1000 строк) Nested Loop часто быстрее, а для больших — Hash Join требует много памяти (work_mem).

Кроме того, вы разберётесь в настройках СУБД: PostgreSQL — shared_buffers, work_mem, maintenance_work_mem, random_page_cost. Вы узнаете, что если у вас SSD, то random_page_cost следует снизить с 4.0 до 1.1 — это кардинально изменит план запроса в пользу Index Scan. Вы настроите эти параметры на тестовой машине и увидите изменения в EXPLAIN. В MySQL — innodb_buffer_pool_size, sort_buffer_size. Вы получите чек-лист оптимизации для типичного веб-проекта с 100 000 пользователей: какие параметры трогать в первую очередь, а какие лучше не менять. Никаких «универсальных советов» — только проверенные комбинации для реальных сценариев (OLTP, OLAP, mixed loads).

Итог: вы не просто понимаете базы данных — вы ими управляете

После этого курса вы больше никогда не будете «просто вставлять данные». Вы будете знать, что каждая вставка — это операция, которая может упасть или занять 2 секунды, если нет индекса, или 0,01 секунды, если индекс есть. Вы сможете спроектировать схему для любого веб-приложения с нуля, обосновать выбор type данных и engine, написать запросы, которые не тормозят, и настроить СУБД для оптимальной работы на вашем железе. Это не рекламный слоган — это конкретные действия, которые вы выполните на платформе. И да, вы полюбите SQL так же сильно, как и CSS или JavaScript — потому что это язык, который даёт вам власть над данными. Присоединяйтесь к курсу «Введение в базы данных» прямо сейчас — и ваши навыки станут на 60% более востребованными на рынке вакансий 2026 года.

Добавлено: 23.04.2026