Star-Schema Design
Является ли дизайн Star-Schema необходимым для хранилища данных? Или вы можете сделать хранилище данных с другим шаблоном проектирования?
8 ответов
Использование звездообразных схем для системы хранилища данных дает вам несколько преимуществ, и в большинстве случаев целесообразно использовать их для верхнего уровня. У вас также может быть хранилище оперативных данных (ODS) - нормализованная структура, которая хранит "текущее состояние" и облегчает такие операции, как конформация данных. Однако существуют разумные ситуации, когда это нежелательно. У меня была возможность создавать системы с уровнями ODS и без них, и у меня были конкретные причины для выбора архитектуры в каждом конкретном случае.
Не вдаваясь в тонкости архитектуры хранилища данных или не начав войну против Кимбалла против Инмона, главные преимущества схемы "звезда":
В большинстве систем управления базами данных в оптимизаторе запросов предусмотрены функции "преобразования звезд", которые используют структуры индекса растрового изображения или пересечение индекса для быстрого разрешения предикатов. Это означает, что выбор из звездообразной схемы может быть сделан без попадания в таблицу фактов (которая обычно намного больше индексов), пока выбор не будет решен.
Разделить схему типа "звезда" относительно просто, так как необходимо разделить только таблицу фактов (если у вас нет библейских размеров). Исключение разделов означает, что оптимизатор запросов может игнорировать запросы, которые не могут участвовать в результатах запроса, что экономит ресурсы ввода-вывода.
Медленно меняющиеся размеры гораздо проще реализовать на схеме типа "звезда", чем на снежинке.
Схема легче для понимания и имеет тенденцию включать меньше объединений, чем схема снежинки или ER. Ваша команда отчетов будет любить вас за это
Схемы типа "звезда" намного проще в использовании и (что более важно) хорошо работают с помощью специальных инструментов запросов, таких как Business Objects или Report Builder. Как разработчик, вы очень слабо контролируете SQL, сгенерированный этими инструментами, поэтому вам нужно как можно больше помочь оптимизатору запросов. Схемы типа "звезда" дают оптимизатору запросов относительно небольшую возможность ошибиться.
Как правило, ваш уровень отчетности будет использовать звездообразные схемы, если у вас нет особых причин не делать этого. Если у вас есть несколько исходных систем, вы можете захотеть реализовать Оперативное хранилище данных с нормализованной или снежной схемой для накопления данных. Это проще, потому что ODS обычно не делает историю. Историческое состояние отслеживается в звездных схемах, где это гораздо проще сделать, чем с нормализованными структурами. Нормализованное или "снежное" хранилище операционных данных отражает "текущее" состояние и не хранит историческое представление сверх того, что присуще данным.
Процессы загрузки ODS связаны с очисткой и согласованием данных, что проще сделать с нормализованной структурой. Как только вы получите чистые данные в ODS, измерения и загрузки фактов могут отслеживать историю (изменения во времени) с помощью общих или относительно простых механизмов относительно просто; это гораздо проще сделать со звездообразной схемой. Многие инструменты ETL (например) предоставляют встроенные средства для медленно меняющихся измерений, и реализация универсального механизма относительно проста.
Расслоение системы таким образом обеспечивает разделение обязанностей - логика очистки бизнеса и данных рассматривается в ODS, а загрузка схемы типа "звезда" связана с историческим состоянием.
В литературе хранилища данных ведутся постоянные дебаты о том, где в архитектуре хранилища данных должен применяться проект Star-Schema.
Короче говоря, Кимбалл очень высоко ценит использование только дизайна Star-Schema в хранилище данных, в то время как Inmon сначала хочет создать Enterprise Datawarehouse, используя нормализованный дизайн 3NF, а затем использовать дизайн Star-Schema в датамарках.
Кроме того, здесь вы также можете сказать, что дизайн схемы Snowflake является еще одним подходом.
Четвертый дизайн может быть подходом моделирования хранилища данных.
Звездные схемы используются для обеспечения высокоскоростного доступа к большим объемам данных. Высокая производительность достигается за счет уменьшения количества объединений, необходимых для удовлетворения любого запроса, который может быть сделан по предметной области. Это достигается за счет обеспечения избыточности данных в таблицах измерений.
Вы должны помнить, что схема "звезда" является шаблоном для верхнего слоя склада. Все модели также включают промежуточные схемы в нижней части стека хранилища, а некоторые также включают постоянную преобразованную объединенную промежуточную область, где все исходные системы объединяются в моделируемую схему 3NF. Различные предметные области сидят выше этого.
Альтернативы звездообразным схемам на верхнем уровне включают в себя вариант, который представляет собой схему снежинки. Новый метод, который также может быть полезен при расследовании, - это моделирование хранилища данных, предложенное Дэном Линстедтом.
Особенность звездных схем в том, что они являются естественной моделью для тех вещей, которые большинство людей хотят делать с хранилищем данных. Например, легко создавать отчеты с разной степенью детализации (например, месяц, день или год). Кроме того, эффективно вставлять типичные бизнес-данные в схему типа "звезда", что также является распространенной и важной особенностью хранилища данных.
Вы, конечно, можете использовать любую базу данных, какую захотите, но если вы не очень хорошо знаете свой бизнес-домен, вполне вероятно, что ваши отчеты будут работать не так эффективно, как если бы вы использовали схему типа "звезда".
Схемы типа "звезда" естественным образом подходят для последнего уровня хранилища данных. Как вы туда попали, это другой вопрос. Насколько я знаю, есть два больших лагеря: Билл Инмон и Ральф Кимбалл. Возможно, вы захотите взглянуть на теории этих двух парней, если / когда вы решите пойти со звездой.
Кроме того, некоторым инструментам отчетности действительно нравится настройка схемы "звезда". Если вы привязаны к конкретному инструменту отчетности, это может повлиять на то, как выглядит витрина отчетности на вашем складе.
Схема "звезда" - это логическая модель данных для реляционных баз данных, которая соответствует обычным потребностям хранилищ данных; если задана реляционная среда, схема "звезда" или "снежинка" будет хорошим шаблоном проектирования, встроенным во многие методологии проектирования DW.
Однако существуют и другие механизмы, кроме реляционных баз данных, и они могут использоваться для эффективного хранения данных. Многомерные механизмы хранения могут быть очень быстрыми для задач OLAP (например, TM1); мы не можем применить дизайн схемы звезды в этом случае. Другие примеры, требующие специальных логических моделей, включают базы данных XML или базы данных, ориентированные на столбцы (например, экспериментальное хранилище C).
Можно обойтись без. Тем не менее, вы усложните себе жизнь - ваша организация захочет использовать стандартные инструменты, расположенные поверх DW, и эти инструменты будут ожидать схему типа "звезда" - много усилий будет потрачено на установку квадратного колышка за раунд отверстие.
Многие оптимизации уровня базы данных предполагают, что у вас есть звездообразная схема; вы потратите много времени на оптимизацию и реструктуризацию, чтобы БД работала "правильно" с вашим не совсем звездным макетом.
Убедитесь, что плюсы перевешивают минусы..
(Звучит так, будто я был там раньше?)
-D
Есть три проблемы, которые нам нужно решить.
1) Как извлечь данные из операционной исходной системы, не оказывая на них чрезмерного давления, объединяя таблицы внутри и между ними, очищая данные по мере их извлечения, создавая деривации и т. Д.
2) Как объединить данные из разнородных источников - некоторые унаследованные, некоторые основанные на файлах, из разных отделов в единое, точное, эффективно хранимое целое, которое моделирует бизнес и не отражает структуры исходных систем. Помните, что системы меняются / заменяются относительно быстро, но базовая модель бизнеса меняется медленно.
3) Как структурировать данные так, чтобы они максимально быстро и точно отвечали конкретным аналитическим требованиям и требованиям к отчетности для конкретных людей / подразделений в бизнесе.
Решение этих трех очень разных проблем требует разных архитектурных слоев для их решения.
Промежуточный слой Мы копируем структуры источников, но каждую ночь загружаются только измененные данные из источников. как только данные взяты из промежуточного слоя на следующий уровень, данные отбрасываются. Запросы представляют собой запросы отдельных таблиц с простым фильтром data_time. Очень мало влияет на источник.
Уровень предприятия Это бизнес-ориентированная база данных третьей нормальной формы. Данные извлекаются (и затем удаляются) из промежуточного уровня на уровень предприятия, где они очищаются, интегрируются и нормализуются.
Уровень представления (звездная схема) Здесь мы моделируем в соответствии с конкретными требованиями. Данные намеренно отменяют нормализацию, чтобы уменьшить количество объединений. Иерархии, которые могут занимать несколько таблиц на уровне предприятия, объединены в таблицы с одним измерением, а несколько таблиц транзакций могут быть объединены в таблицы с одним фактом.
Вы всегда сталкиваетесь с этими тремя проблемами. Если вы решите покончить с корпоративным уровнем, вам все равно придется решить вторую проблему, но вы должны сделать это на уровне звездной схемы, и, на мой взгляд, это неправильное место для этого.