1 of 28

Понятие модели данных.

Типы моделей данных

Лекция 4

2 of 28

Что такое модель данных

3 of 28

Назначение

  1. Обеспечивает единое представление данных
  2. Упрощает хранение и доступ (поиск, обновление, удаление).
  3. Помогает обеспечить целостность, нормализацию, минимизацию дублирования.
  4. Влияет на производительность и масштабируемость.

4 of 28

История

5 of 28

1. Иерархическая (Hierarchical)

6 of 28

1. Иерархическая (Hierarchical)

  • Предсказуемость структуры и высокая эффективность навигации
  • Простота проектирования и понимания
  • Относительно высокая целостность (data integrity)
  • Жёсткая структура, низкая гибкость
  • Избыточность/дублирование
  • Ограниченность в запросах
  • Трудности при изменении структуры и поддержке

Плюсы

Минусы

7 of 28

1. Иерархическая (Hierarchical). Пример

“выведи все транзакции по счету клиента”

“найти все транзакции больше 10 000$ за месяц по всем клиентам”

8 of 28

2. Сетевая (Network)

9 of 28

2. Сетевая (Network)

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

Плюсы

Минусы

10 of 28

3. Реляционная (Relational)

11 of 28

3. Реляционная (Relational)

  • Сила SQL, гибкость запросов
  • Нормализация и контроль избыточности
  • ACID-свойства (транзакции, согласованность)
  • Много зрелых инструментов, экосистема
  • Жесткость схемы (schema rigidity)
  • Неэффективность с полуструктурированными или неструктурированными данными
  • Проблемы масштабирования горизонтально
  • Производительность с очень большими данными и при сложных связях

Плюсы

Минусы

12 of 28

3. Реляционная (Relational). Пример

в начале своей работы

когда пользователей стало очень много

+

NoSQL

+

13 of 28

4. Документо-ориентированная (Document-oriented NoSQL)

14 of 28

4. Документо-ориентированная (Document-oriented NoSQL)

  • Гибкая схема (schema flexibility)
  • Хранение вложенных структур естественно
  • Масштабируемость горизонтально (sharding, репликация)
  • Быстрая разработка / быстрые итерации
  • Меньше гарантий целостности и транзакций
  • Избыточность данных
  • Неэффективность при сложных связях / агрегациях
  • Сложности при анализе / BI / отчетности

Плюсы

Минусы

15 of 28

4. Документо-ориентированная. Пример

Хранение данных о пользователях

Построение отчета по пользователям

16 of 28

5. Модель ключ-значение (Key-Value Store)

17 of 28

5. Модель ключ-значение (Key-Value Store)

  • высокая производительность,
  • масштабируемость,
  • простота
  • не подходит, если нужно сложные запросы, связи между объектами, агрегации и т.д.

Плюсы

Минусы

18 of 28

5. Модель ключ-значение. Пример

Instagram использует Redis для кэширования ленты.

Лента пользователя хранится как ключ (user_id) - значение (json с постами).

Запрос “дай последнюю ленту” - это мгновенное обращение к Redis.

Но Redis - это key-value: если нужно сделать сложный запрос “найти все посты с хэштегом #AI у всех пользователей”, то это невозможно без отдельной индексации.

​

Ключ-значение идеально для кэшей и быстрых lookup, но не для сложных поисковых задач

19 of 28

6. Column-Family / Wide-Column Stores

20 of 28

6. Column-Family / Wide-Column Stores

  • Оптимизированы для аналитики и агрегирования
  • Хороши для выполнения запросов, в которых мало столбцов, но много строк
  • Масштабируемость
  • Плохо подходят для операций с большим количеством insert/update/ delete строк; особенно если они касаются множества столбцов или строк
  • Сложнее поддерживать связи / JOIN’ы
  • Сложность при изменении схемы

Плюсы

Минусы

21 of 28

6. Column-Family / Wide-Column Stores. Пример

У YouTube - терабайты логов просмотров.

Важно быстро считать статистику: сколько раз ролик посмотрели за день, какие страны лидируют и т.д.

В реляционной БД на строках пришлось бы читать все данные.

В Bigtable данные хранятся по колонкам, и когда нужно только поле “views” или “country”, то читается лишь часть таблицы - это очень быстро

Если YouTube хочет удалить все просмотры от определенного пользователя (например, по GDPR), то это будет сложнее, потому что данные “размазаны” по колонкам.

​

Колоночные БД — супер для аналитики и отчетов, но не для пользовательских транзакций.

22 of 28

7. Графовая модель

23 of 28

7. Графовая модель

  • Естественное представление сложных сетевых/реляционных структур
  • Запросы связей (traversal) быстрые
  • Гибкость при усложнении связей
  • Сложность масштабирования
  • Запросы и индексация усложняются при вложенном графе или множестве связей
  • Средств для анализа часто меньше

Плюсы

Минусы

24 of 28

7. Графовая модель. Пример

Пример: у пользователя миллиарды пользователей, и нужно мгновенно ответить: “кто из друзей его друзей видел этот пост?”.

В реляционной БД это JOIN таблицы “пользователи - друзья” на миллионы строк - это очень дорого.

В графовой базе (Neo4j) каждая связь “друг” - это ребра графа, переходы “user - friend - friend” выполняются очень быстро.

​

Когда граф стал огромным (миллиарды рёбер), масштабирование оказалось непростым: traversal на 4-5 шагов глубже начинает занимать секунды.

​

Графовые БД - лучшие для социальных сетей и рекомендаций, но плохо масштабируются в ширину.

25 of 28

8. Модель Entity-Attribute-Value (EAV)

26 of 28

8. Модель Entity-Attribute-Value (EAV)

  • экономия места,
  • гибкость, когда заранее неизвестно, какие атрибуты нужны
  • сложные запросы,
  • сложность поддержки,
  • могут быть плохими производительность и поддержка индексации

Плюсы

Минусы

27 of 28

Интересные факты

  1. Некоторые современные базы данных построены гибридно: они совмещают модели (PostgreSQL поддерживает JSON-документы внутри реляционных таблиц; есть “multi-model” СУБД).
  2. Динамичные данные - документно-ориентированные или модели ключ-значение; для отчетов - извлечение данных в реляционный формат или ETL-конвейеры.
  3. В Big Data часто встречаются колоночные базы данных и системы, использующие “схему-на-чтение” (schema-on-read) или гибкие схемы - потому что заранее неизвестно, что именно придет.

28 of 28

Понятие модели данных.

Типы моделей данных

Лекция 4