Занятие №06 посвящено изучению фундаментальной эволюции парадигм организации данных в информационных системах: от ранних навигационных моделей (иерархической и сетевой) к доминирующей математически строгой реляционной модели Э. Кодда, ее объектно-реляционному расширению и специализированным архитектурам семейства NoSQL (документным, графовым, колоночным, ключ-значение).
Главная методическая задача: преодолеть наивное убеждение студентов о том, что «SQL устарел, а NoSQL решает любые задачи» либо обратное заблуждение, что «реляционные СУБД универсальны для абсолютно любых нагрузок». Преподаватель формирует у будущих техников-программистов инженерное системное мышление: модель данных выбирается строго на основе характеристик предметной области, топологии связей, требований к транзакционной целостности (ACID) и ограничений распределенных систем (CAP-теорема).
В зависимости от академического расписания учебный процесс реализуется либо в полном 80-минутном формате, либо в сокращенном 60-минутном формате.
| Этап занятия | Основной регламент (80 мин) | Сокращенный регламент (60 мин) | Методический акцент и перераспределение материала |
|---|---|---|---|
| 1. Организационный момент и актуализация | 5 мин (00–05 мин) | 5 мин (00–05 мин) | Фронтальный опрос по ограничениям файловых систем. Постановка проблемного вопроса: «Почему нельзя хранить друзей пользователя соцсети в реляционной таблице так же эффективно, как остатки на банковском счете?». |
| 2. Изложение теоретического материала | 35 мин (05–40 мин) | 25 мин (05–30 мин) | В 80-мин: полный разбор иерархической, сетевой моделей, 12 правил Кодда, объектных СУБД, CAP-теоремы и всех 4 семейств NoSQL. В 60-мин: краткий обзор ранних моделей, фокус на контрасте «Реляционная vs NoSQL (документная, графовая, колоночная, key-value)» и теореме CAP. |
| 3. Демонстрация презентации и тренинг | 25 мин (40–65 мин) | 18 мин (30–48 мин) | Разбор интерактивных слайдов (prezentaciya.html) с блок-схемами структур данных, анализ популярного мема о миграции на NoSQL / Bobby Tables, самостоятельное заполнение рабочего листа (zanyatie.html) по 4 вариантам кейсов. |
| 4. Подведение итогов, рефлексия, ДЗ | 15 мин (65–80 мин) | 12 мин (48–60 мин) | Критериальный аудит работ по 4-балльной закрытой рубрике (.rubrika.md), разбор типовых ошибок, экспорт рабочего листа, инструктаж по резервному заданию (domashnee_zadanie.html). |
Появилась во второй половине 1960-х годов (флагманская система — IBM IMS, созданная в рамках лунной программы Apollo).
Стандартизирована ассоциацией CODASYL (Conference on Data Systems Languages, 1969–1971 гг., системы IDMS, IDS).
FIND FIRST RECORD OF SET, FIND NEXT). Изменение физической структуры диска полностью ломало прикладной код.Предложена Эдгаром Ф. Коддом в 1970 году в эпохальной статье «A Relational Model of Data for Large Shared Data Banks» (IBM Research).
Эволюционный гибрид (PostgreSQL, Oracle DB), расширивший реляционную модель поддержкой сложных пользовательских типов (UDT), наследования таблиц, вложенных массивов и встроенных функций (PL/pgSQL), а также нативной обработкой формата JSON/JSONB. Позволяет нивелировать феномен «объектно-реляционного импеданса» (Object-Relational Impedance Mismatch).
Возникло на рубеже 2000–2010 годов как ответ на взрывной рост объемов неструктурированных данных (Big Data), необходимость горизонтального масштабирования (Scale-Out) на недорогом оборудовании и сверхвысокой доступности.
| Семейство NoSQL | Базовые структуры | Популярные СУБД | Оптимальные сценарии использования | Ограничения и риски |
|---|---|---|---|---|
| Документные (Document-oriented) | Иерархические документы (JSON, BSON, XML). Гибкая схема (Schema-on-read). | MongoDB, Couchbase, CouchDB | Каталоги товаров с динамическими свойствами, профили пользователей, CMS, блоги, мобильные бэкенды. | Дублирование данных при денормализации; отсутствие транзакций между не связанными коллекциями (до последних версий). |
| Графовые (Graph) | Вершины (Nodes), Направленные ребра (Edges/Relationships), Свойства (Properties). Безындексная смежность (Index-free adjacency). | Neo4j, Memgraph, Amazon Neptune | Социальные сети (графы друзей), рекомендательные движки, антифрод-мониторинг финансовых связей, логистические маршруты. | Сложность горизонтального шардирования графа на множество физических узлов без колоссальных накладных расходов. |
| Колоночные (Wide-column / Columnar) | Колоночные семейства (Column Families) или физическое хранение по столбцам вместо строк. Колоссальное сжатие данных (LZ4, ZSTD). | ClickHouse, Apache Cassandra, ScyllaDB, HBase | Аналитика больших данных (OLAP), кликстрим, сбор телеметрии IoT, агрегатные запросы (SUM, AVG) по миллиардам строк за секунды. | Крайне низкая эффективность точечных обновлений (UPDATE/DELETE) отдельных строк; не подходит для классических OLTP-транзакций. |
| Ключ-значение (Key-Value) | Ассоциативный массив (хэш-таблица). Доступ по строгому первичному ключу за $O(1)$. | Redis, KeyDB, Memcached, DynamoDB | Кэширование сессий, счетчики просмотров, лидерборды, корзины покупателей, брокеры сообщений (Pub/Sub). | Невозможность выполнения сложных запросов по значениям атрибутов (нет гибкого WHERE); риск потери данных при сбое оперативной памяти. |
В любой распределенной системе хранения данных при возникновении сетевого разделения узлов (Network Partition, P) архитектор вынужден выбирать строго между:
| Парадигма ACID (Реляционные СУБД) | Парадигма BASE (Распределенные NoSQL) |
|---|---|
|
Atomicity (Атомарность): транзакция выполняется целиком либо не выполняется вовсе (Rollback). Consistency (Согласованность): транзакция переводит базу из одного валидного состояния в другое, соблюдая все ограничения. Isolation (Изоляция): параллельные транзакции не влияют на промежуточные результаты друг друга. Durability (Долговечность): зафиксированные изменения (Commit) сохраняются даже при внезапном отключении питания. |
Basically Available (Базовая доступность): система сохраняет работоспособность при отказе большинства узлов, возвращая ответы (пусть и частично устаревшие). Soft state (Неустойчивое состояние): состояние данных может изменяться со временем даже без внешних запросов за счет фоновой репликации. Eventual consistency (Согласованность в конечном счете): через определенный промежуток времени при отсутствии новых обновлений все реплики кластера гарантированно придут к идентичному состоянию. |