Проектирование хранилищ данных для приложений систем деловой осведомленности (Business Intelligence Systems)

Денормализация модели ХД

Показывать лекцию целиком
  • Задачи:
  • Что такое денормализация и методы ее реализации;
  • Выполнить горизонтальное секционирование таблицы;
  • Выполнить вертикальное секционирование таблицы;
  • Выполнить объединение таблиц;
  • Выполнить денормализацию колонки.
  • Определения

  • Денормализацией называется процесс размещения одних и тех же данных в различных объектах БД с целью увеличить производительность обработки запросов.
  • Индикаторы на деномализацию:
  • Критические запросы, обращающиеся к данным более, чем одной таблицы;
  • Вычисления на колонках одной таблицы;
  • Различные пользователи обращаются к таблицам по разным схемам доступа;
  • Частота использования колонок в запросах.
  • Методы денормализации

  • Горизонтальное секционирование используется для разделения таблицы на несколько таблиц с теми же колонками, но меньшим числом строк.
  • Вертикальное секционирование используется для разделения таблицы на несколько таблиц с одинаковым числом строк, но с различным набором колонок.
  • Объединение таблиц используется для исключения соединений между таблицами путем объединения таблиц в одну.
  • Денормализация колонки используется для исключения соединений между таблицами путем дублирования колонки в этих таблицах.
  • Горизонтальное секционирование

  • Предположим, что маркетинговая служба анализирует постоянно продажи текущего года, а по годам анализ продаж выполняется один раз в году. Тогда целесообразно с целью увеличения производительности запросов выполнить горизонтальное секционирование таблицы фактов "Продажи" (Sale) по годам.
  • Рассмотрим, как CASE средства помогают проектировщику данных выполнять секционирование таблиц многомерной модели данных.

    Модель ХД

    Горизонтальное секционирование

  • Для этого введем в таблицу фактов Sales атрибут "Год продажи" (Sale_year) в качестве ключа секционирования.
  • Для того, чтобы выполнить горизонтальное секционирования таблицы фактов "Продажи" (Sale) можно щелкнуть правой кнопкой мыши на таблице фактов и из всплывающего меню выбрать пункт "Горизонтальное секционирование" (Horizontal Partitioning).
  • Рассмотрим, как CASE средства помогают проектировщику данных выполнять секционирование таблиц многомерной модели данных.

    Ключ для горизонтального секционирования

    Горизонтальное секционирование

  • На экране появится диалоговое окно "Выбор таблицы для секционирования" (Partitioned Table Selection). Выбрав таблицу "Продажи" (Sale), нажмите на кнопку "Далее".
  • На экране появится диалоговое окно "Определение секций" (Partition Definitions), в котором необходимо определить имена секций (пусть это будут имена Sale_CurYear, Sale_2009 и Sale_2008) и нажать на кнопку "Далее".
  • Рассмотрим, как CASE средства помогают проектировщику данных выполнять секционирование таблиц многомерной модели данных.

    Выбор таблицы для горизонтального секционирования

    Определение имен секций

    Горизонтальное секционирование

  • На экране появится диалоговое окно "Выбор дискриминантной колонки" (Discriminant Column Selection). Дисериминантная колонка – этого колонка таблицы, которая входит в критерий секционирования, поэтому ее не обязательно хранить в секциях.
  • Щелкнув левой кнопкой мыши на пиктограмме "Добавить строку", вы активизируете диалоговое окно "Выбор" (Selection). Выберем в списке колонок колонку "Год продажи" (SALE_YEAR), по которой будет выполняться секционирование и нажмем кнопки "ОК" и "Далее".
  • Рассмотрим, как CASE средства помогают проектировщику данных выполнять секционирование таблиц многомерной модели данных.

    Выбор дискриминантной колонки

    Выбор дискриминантной колонки

    Выбор дискриминантной колонки

    Горизонтальное секционирование

  • На экране появится диалоговое окно "Информация о секционировании" (Partitioning Information).
  • Далее нажмем кнопку "Готово". После расстановки на рабочем пространстве секций получим многомерную модель данных с секционированной таблицей "Продажи" (Sale).
  • Чтобы удалить секционирование, выберите пункт меню Model->Transformations и в появившемся диалоговом окне List of Transformations удалите определение секционирования таблицы.
  • Секции таблицы становятся независимыми и их нужно будет удалить через пункт меню Model->Table в диалоговом окне List of Tables.
  • Рассмотрим, как CASE средства помогают проектировщику данных выполнять секционирование таблиц многомерной модели данных.

    Определение секционирования

    Модель ХД с секционированной таблицей фактов

    Удаление секционирования

    Удаление секций

    Ключ секционирования удаляется автоматически

    Вертикальное секционирование

  • Вертикальное секционирование состоит в сегментации исходной таблицы с одним и темже первичным ключом, но с различными колонками.
  • Выполним вертикальное секционирование таблицы измерения Customer.
  • Для этого сначала в таблицу Customer добавим данные о кредитах покупателя Credit_Card_Number и Amount_Number. В этом случае имеет смысл отделить данные о кредитах от других данных таблицы.
  • Вертикальное секционирование

  • Активизируйте таблицу Customer. В всплывающем по правой кнопке меню пвыберите вертикальное секционирование. Нажмите кнопку "Далее".
  • В появившемся диалоговом окне присвойте имя объекту. Нажмите кнопку "Далее".
  • В появившемся диалоговом окне Partition Column Selection растащите колонки по таблицам. Нажмите кнопку "Готово".
  • Вы получили вертикальное разбиение таблицы.
  • Вертикальное секционирование

    Вертикальное секционирование

    Вертикальное секционирование

    Вертикальное секционирование

    Вертикальное секционирование

    Объединение таблиц

  • Для того, чтобы продемонстрировать объединение таблиц добавим в исходную модель таблицу Order, связанную с таблицей измерения Customer.
  • Для такой модификации модели ХД целесообразно объединить таблицы Customer и Order в одну, чтобы оптимизировать соединения.
  • Выберите пункт меню Tools-"Denormalization-"Table Collapsing.
  • В появившемся диалоговом окне Table Collapsing Target определите имя новой таблицы. Нажмите кнопку "Далее".
  • В появившемся диалоговом окне выберите для объединения. Нажмите кнопку "Далее".
  • Нажмите кнопку "Готово".
  • Объединение таблиц: расширение модели

    Объединение таблиц

    Объединение таблиц

    Объединение таблиц

    Объединение таблиц

    Объединение таблиц

    Денормализация колонки

  • Для демонстрации метода денормализации колонки расширим исходную модель данных.
  • Добавим в исходную модель две таблицы Devision (Отдел) и PaySlip (Платежная расписка).
  • Допустим, что мы хотим, чтобы наименование отдела появлялось в платежной расписке при печати. Тогда, чтобы сократить число соединений мы можем выполнить денормализацию колонки Div_Name.
  • Денормализация колонки

    Денормализация колонки

  • Выберите пункт меню Tools-"Denormalization-"Column Denormalization. Появится Column Denormalization Wizard.
  • Выберите таблицу в которую нужно дублировать колонку. Нажмите ОК и кнопку "Далее".
  • Выберите колонку для дублирования и нажмите кнопку "Готово".
  • Денормализация колонки выполнена.
  • Денормализация колонки

    Денормализация колонки

    Денормализация колонки

    Денормализация колонки

    Выводы

  • Вы научились для повышения производительности обработки запросов:
  • Выполнять горизонтальное секционирование таблицы модели ХД;
  • Выполнять вертикальное секционирование таблицы модели ХД;
  • Выполнять объединение таблиц модели ХД;
  • Выполнять денормализацию колонки модели ХД.
  • Вернуться к учебному плану