Модели данных

12.09.2025 Обновлено: 12.09.2025

Лекция 2. Модели данных

Основные понятия

  • База данных — организованная совокупность данных, хранящаяся в ЭВМ и отображающая некоторую предметную область.
  • Модель данных — набор концепций, правил и структур, которые определяют, как хранятся данные в базе данных.
  • СУБД — ПО для создания, манипулирования и совместного использования баз данных.
  • ERD (Entity Relation Diagram) — показывает сущности и их связи.

У ERD есть разные нотации:

  • Воронья лапка (Crow’s foot)
  • E-диаграмма (нотация Чена)
  • IDEF1X и другие

Сущности и атрибуты

  • Сущности — объекты.
  • Атрибуты — свойства сущностей:
    • простые и составные;
    • обязательные и необязательные.

Модели данных

Это решение определяет, насколько система будет производительной, масштабируемой, гибкой и в конечном итоге успешной. Неверный выбор модели данных подобен выбору неправильного фундамента для здания.


Реляционная

Самая популярная модель, основанная на реляционной алгебре.

Особенности:

  • Организует данные в виде двумерных таблиц.
  • Использует SQL для запросов.
  • Поддерживает ACID-свойства — гарантии инвариантности данных.

Преимущества:

  • Целостность и непротиворечивость данных за счёт ключей, ограничений и транзакций.
  • SQL как стандарт облегчает разработку, поддержку приложений и миграцию данных.
  • Нормализация устраняет избыточность и аномалии.

Недостатки:

  • Изменение структуры таблиц на работающей системе — сложная и дорогая операция.
  • Горизонтальное масштабирование сложнее, чем у некоторых NoSQL-решений.
  • Сложные JOIN-запросы на огромных таблицах могут выполняться медленно.
  • Неэффективна для хранения иерархических (древовидных) или графовых данных.

Применение:

  • OLTP-системы (Online Transaction Processing) — запросы на каждое действие пользователя.
  • Системы с высокими требованиями к целостности — везде, где есть деньги, всё должно быть «чётенько».
  • Когда данные чётко структурированы.

OLTP vs OLAP: OLTP — много мелких онлайн-транзакций; OLAP (Online Analytical Processing) — аналитика, агрегации, отчёты по большим объёмам.

Семейства: SQL, NoSQL, NewSQL.


Колоночная

Особенности:

  • Вместо хранения записи целиком, данные организуются по столбцам.
  • Относятся к семейству NoSQL (хотя есть и реляционные представители).
  • Идеальна для OLAP-запросов.
  • По сути та же двумерная таблица, но «горизонталь» и «вертикаль» поменяны местами.
  • Много оптимизаций (компрессия, векторизованные вычисления).

Преимущества:

  • Высокая производительность аналитических запросов.
  • Эффективное сжатие данных (в столбце много однотипных значений).
  • Улучшенная производительность ввода-вывода.
  • При горизонтальном масштабировании — почти линейное увеличение производительности.

Недостатки:

  • Операции, характерные для OLTP, работают менее эффективно.
  • При частых изменениях данных возникают сложности в синхронизации и обеспечении целостности между столбцами.

Применение: big data, аналитика, BI.

Реализации:

  • Cassandra
  • ScyllaDB
  • Google BigQuery
  • ClickHouse (колоночная реляционная СУБД)

Документоориентированные

Особенности:

  • Данные хранятся в виде документов, а не строк таблицы.
  • Относятся к семейству NoSQL.
  • Документы обычно в формате BSON (a-la бинарный JSON).
  • Объединяются в коллекции (аналог таблиц, но без обязательного единого формата для всех записей).
  • Документы могут содержать вложенные объекты и массивы.

Пример: спроектируем хранение сериала. В реляционной модели — куча таблиц и FOREIGN KEY (сериал → сезоны → серии → актёры …). В документоориентированной — просто массивы внутри одного документа. Если же использовать ссылки вместо вложенных объектов — теряем целостность ссылок (возможны «висячие» ссылки) — рэйс-кондишены и проблемы.

Преимущества:

  • Возможность изменения структуры документов без модификации общей схемы БД.
  • Документы в JSON/BSON естественно ложатся на объекты приложения.

Недостатки:

  • Ограниченная целостность данных.
  • Сложность запросов.
  • Потенциальная избыточность.

Применение:

  • Хранение логов.
  • OLTP-системы.
  • Разработка MVP.
  • Неструктурированные данные.
  • Обработка больших объёмов данных.

Реализации:

  • MongoDB
  • Firebase Realtime Database
  • Elasticsearch (поисковый движок)
  • Amazon DynamoDB
  • CouchDB

Графовая

Особенности:

  • Основные объекты — узлы, рёбра, свойства, а не таблицы.
  • Относятся к семейству NoSQL.

Преимущества:

  • Запросы на поиск путей, обход графа и анализ связей выполняются очень быстро.
  • Нет жёстко фиксированной схемы.
  • Легко добавлять новые типы связей и узлов без пересмотра всей структуры.

Недостатки:

  • Узко специализированы — за пределами «графовых» задач уступают другим моделям.

Реализации:

  • Neo4j
  • Dgraph

Ключ-значение

Особенности:

  • Простейшая модель: ключ → значение.

Преимущества:

  • Операции получения, вставки и удаления выполняются за $O(1)$.
  • Быстрые и нетребовательные к ресурсам.

Недостатки:

  • Не подходят для сложных запросов, агрегаций или выборок.

Применение:

  • Кеширование данных.
  • Хранение сессионных данных.
  • Реализация очередей.
  • Хранение конфигурационных данных.

Реализации: Redis, Memcached, etcd.


Временные ряды (Time Series)

Особенности:

  • Каждое значение привязано к моменту времени.

Преимущества:

  • Оптимизация под высокую скорость записи.
  • Простая агрегация и интерполяция.
  • Хранение больших объёмов данных.
  • Быстрый доступ к данным за определённые временные интервалы.

Применение:

  • Мониторинг и логирование.
  • Финансовые рынки.
  • Интернет вещей (IoT).

Реализации: InfluxDB, TimescaleDB, Prometheus.


Векторная

Особенности:

  • Данные сохраняются в виде векторов вещественных чисел (эмбеддингов).

Преимущества:

  • Быстро выполняют запросы поиска похожих векторов благодаря специальным индексам и алгоритмам (например, HNSW — Hierarchical Navigable Small World).

Применение:

  • Рекомендательные системы.
  • Поиск по смыслу (семантический поиск).
  • Кластеризация.

Реализации:

  • Pinecone
  • Milvus
  • Weaviate
  • pgvector (расширение PostgreSQL)

Объектные хранилища данных

Особенности:

  • Предназначены для работы с файлами: документами, изображениями, видео, аудио.
  • Файлы располагаются в каталогах и подкаталогах.
  • Хранят помимо файла метаданные.

Преимущества:

  • Интеграция с ОС и стандартными программами для работы с файлами.
  • Позволяют выстраивать сложные модели доступа.
  • Позволяют разворачивать CDN (Content Delivery Network).

Недостатки:

  • Поиск осуществляется по именам файлов и метаданным, а не по содержимому.

Применение: хранение слабоструктурированных данных, медиаконтент, бэкапы.

Реализации:

  • Amazon S3
  • MinIO