Понятие модели данных.
Типы моделей данных
Лекция 4
Что такое модель данных
Назначение
История
1. Иерархическая (Hierarchical)
1. Иерархическая (Hierarchical)
Плюсы
Минусы
1. Иерархическая (Hierarchical). Пример
“выведи все транзакции по счету клиента”
“найти все транзакции больше 10 000$ за месяц по всем клиентам”
2. Сетевая (Network)
2. Сетевая (Network)
Плюсы
Минусы
3. Реляционная (Relational)
3. Реляционная (Relational)
Плюсы
Минусы
3. Реляционная (Relational). Пример
в начале своей работы
когда пользователей стало очень много
+
NoSQL
+
4. Документо-ориентированная (Document-oriented NoSQL)
4. Документо-ориентированная (Document-oriented NoSQL)
Плюсы
Минусы
4. Документо-ориентированная. Пример
Хранение данных о пользователях
Построение отчета по пользователям
5. Модель ключ-значение (Key-Value Store)
5. Модель ключ-значение (Key-Value Store)
Плюсы
Минусы
5. Модель ключ-значение. Пример
Instagram использует Redis для кэширования ленты.
Лента пользователя хранится как ключ (user_id) - значение (json с постами).
Запрос “дай последнюю ленту” - это мгновенное обращение к Redis.
Но Redis - это key-value: если нужно сделать сложный запрос “найти все посты с хэштегом #AI у всех пользователей”, то это невозможно без отдельной индексации.
Ключ-значение идеально для кэшей и быстрых lookup, но не для сложных поисковых задач
6. Column-Family / Wide-Column Stores
6. Column-Family / Wide-Column Stores
Плюсы
Минусы
6. Column-Family / Wide-Column Stores. Пример
У YouTube - терабайты логов просмотров.
Важно быстро считать статистику: сколько раз ролик посмотрели за день, какие страны лидируют и т.д.
В реляционной БД на строках пришлось бы читать все данные.
В Bigtable данные хранятся по колонкам, и когда нужно только поле “views” или “country”, то читается лишь часть таблицы - это очень быстро
Если YouTube хочет удалить все просмотры от определенного пользователя (например, по GDPR), то это будет сложнее, потому что данные “размазаны” по колонкам.
Колоночные БД — супер для аналитики и отчетов, но не для пользовательских транзакций.
7. Графовая модель
7. Графовая модель
Плюсы
Минусы
7. Графовая модель. Пример
Пример: у пользователя миллиарды пользователей, и нужно мгновенно ответить: “кто из друзей его друзей видел этот пост?”.
В реляционной БД это JOIN таблицы “пользователи - друзья” на миллионы строк - это очень дорого.
В графовой базе (Neo4j) каждая связь “друг” - это ребра графа, переходы “user - friend - friend” выполняются очень быстро.
Когда граф стал огромным (миллиарды рёбер), масштабирование оказалось непростым: traversal на 4-5 шагов глубже начинает занимать секунды.
Графовые БД - лучшие для социальных сетей и рекомендаций, но плохо масштабируются в ширину.
8. Модель Entity-Attribute-Value (EAV)
8. Модель Entity-Attribute-Value (EAV)
Плюсы
Минусы
Интересные факты
Понятие модели данных.
Типы моделей данных
Лекция 4