Обзор
В проектировании хранилищ данных звездообразная схема и схема снежинка — это два фундаментальных подхода к организации таблиц фактов и измерений, каждый со своими собственными компромиссами.
Звездообразная схема
- Центральная таблица фактов окружена непосредственно денормализованными таблицами измерений
- Все данные измерений хранятся в одной плоской таблице на каждое измерение
- Требует меньше джойнов, в результате чего запросы становятся проще и быстрее
- Вводит избыточность данных из-за денормализации
Fact Table → DimDate, DimProduct, DimCustomer (все плоские, однауровневые)
Схема снежинка
- Таблицы измерений нормализованы и разбиты на несколько связанных подтаблиц
- Снижает избыточность данных и улучшает целостность данных
- Требует больше джойнов для получения полной информации, что увеличивает сложность запросов
Fact Table → DimProduct → DimCategory → DimSupplier (многоуровневая иерархия)
Ключевые компромиссы
- Производительность запросов: выигрывает звездообразная схема — меньше джойнов означает более быстрое выполнение запросов, что критично для аналитических нагрузок
- Эффективность хранения: выигрывает схема снежинка — нормализация исключает дублирование данных
- Обслуживание: схему снежинку легче обновлять благодаря снижению избыточности, но сложнее запрашивать
- Простота: звездообразная схема предпочтительна для BI-инструментов и аналитиков благодаря её понятной структуре
Лучшие практики в хранилищах данных
Звездообразная схема обычно рекомендуется для хранилищ данных, потому что:
- Аналитические запросы ставят производительность чтения выше эффективности записи
- Затраты на хранение обычно менее критичны, чем скорость запросов
- Более простые схемы улучшают доступность для бизнес-пользователей и инструментов отчётности
Схема снежинка может быть предпочтительна, когда ограничения на хранение значительны или когда требуется строгая согласованность данных во всех иерархических измерениях.