Дизайн хранилища данных, несколько измерений или одно измерение с атрибутами?
Работаю над хранилищем данных и ищу предложения о наличии многочисленных измерений по сравнению с большими измерениями с атрибутами.
В настоящее время у нас есть DimEntity, DimStation, DimZone, DimGroup, DimCompany и у нас есть несколько таблиц фактов, которые содержат ключи от каждого из измерений. Это лучший способ, или было бы лучше иметь только одно измерение, DimEntity и включать станцию, зону, группу и компанию в качестве атрибутов объекта?
Мы уже пошли по пути отдельных измерений с нашим ETL, поэтому проблема заполнения и построения звездной схемы не является проблемой. Производительность и ремонтопригодность важны. Эти размеры не часто меняются, поэтому ищите руководство по наилучшему способу обработки таких размеров.
Таблицы фактов содержат более 100 миллионов записей. Измерение сущности имеет около 1000 записей, а остальные перечисленные имеют по 200 записей каждая.
1 ответ
Не зная определения таблиц звездной схемы, количества данных и т. Д., Трудно дать да или нет. Это будет балансирование.
Для производительности чтения таблица фактов должна быть как можно более тонкой, а размерность должна быть как можно более короткой (малое количество строк). Консолидация измерений обычно означает, что таблица фактов становится тоньше, а количество записей измерений увеличивается.
Если вы можете консолидировать измерения, не добавляя в консолидированное измерение значительное количество строк, возможно, стоит посмотреть. Может случиться так, что вы можете объединить измерения с низким количеством элементов в мусорное измерение и достичь хорошего баланса. Измерения с высокими показателями кардинальности не должны быть объединены.
Вот хорошая статья Кимбаллского университета о размерном моделировании. Посмотрите конкретно, где он обращается к таблицам фактов сороконожки и как он рекомендует использовать нежелательные измерения.