Найти в Дзене
Двое без лодки

Схема снежинка

Общая информация по OLAP и OLTP была освещена здесь. Схема снежинка используется в OLAP базах данных для построения аналитических отчетов на больших объемах данных с большим количеством аналитик (признаков). Факты Как уже выяснили из предыдущей статьи, в центре схемы снежинки находится таблица фактов. Факты - это цифры, к которым можно применить математические функции (сложение, умножение, вычитание и т.д.). Например, год рождения человека - не является фактом, т.к. математические манипуляции с несколькими людьми не дадут какой-то аналитики. Разве что средний год рождения, но вряд ли эта информация кому-либо будет полезной. С другой стороны, оклад, который получает сотрудник в месяц - вполне может являться фактом. Например, можно вычислить бюджет, закладываемый на оплату труда по какому-нибудь отделу, просуммировав оклад всех сотрудников отдела. Признаки Признак - эта некая сущность для характеристики какого-либо факта. Например, для факта оклад, который получает сотрудник в месяц, т
Оглавление

Общая информация по OLAP и OLTP была освещена здесь.

Схема снежинка используется в OLAP базах данных для построения аналитических отчетов на больших объемах данных с большим количеством аналитик (признаков).

Факты

Как уже выяснили из предыдущей статьи, в центре схемы снежинки находится таблица фактов. Факты - это цифры, к которым можно применить математические функции (сложение, умножение, вычитание и т.д.).

Например, год рождения человека - не является фактом, т.к. математические манипуляции с несколькими людьми не дадут какой-то аналитики. Разве что средний год рождения, но вряд ли эта информация кому-либо будет полезной.

С другой стороны, оклад, который получает сотрудник в месяц - вполне может являться фактом. Например, можно вычислить бюджет, закладываемый на оплату труда по какому-нибудь отделу, просуммировав оклад всех сотрудников отдела.

Признаки

Признак - эта некая сущность для характеристики какого-либо факта.

Например, для факта оклад, который получает сотрудник в месяц, требуется признак Сотрудник.

Каждая запись признака имеет первичный ключ (назовем его SID).

У признака могут быть атрибуты - другие признаки, которые хранятся в отдельных таблицах признаков. Т.е. в таблице признака могут присутствовать SID признака, текст и SID'ы атрибутов признака.

Например, для признак Сотрудник может хранить SID сотрудника, ФИО (текст), и SID'ы атрибутов признака: отдел, в котором работает сотрудник, адрес сотрудника, образование и т.д.

Измерения

Для каждого измерения (dimension) создается таблица, в состав которой входит первичный ключ таблицы - DIM (dimension id) и набор SID из этого измерения.

Для наиболее быстрого доступа к данным в схеме снежинка в измерения должны попадать признаки, декартово произведение которых является наименьшим среди всех.

Признаки в измерении по возможности должны относиться к одной сущности.

Хорошая практика.

Измерение КЛИЕНТ содержит:

  • идентификатор клиента
  • ФИО клиента
  • дату рождения клиента
  • номер телефона клиента

Измерение Товар содержит:

  • идентификатор товара
  • наименование товара
  • единицу измерения товара.

Плохая практика.

Измерение КЛИЕНТ содержит:

  • идентификатор клиента
  • ФИО клиента
  • дату рождения клиента
  • номер телефона клиента
  • идентификатор товара

В этом случае, если на данной таблице фактов будет построен отчет по списку клиентов, помимо таблицы клиентов движок базы данных будет сканировать таблицу товаров. Это может значительно замедлить производительность отчета.

Основной принцип проектирования отчетов в OLAP-системе - понимание, как будет использоваться отчет. Какие наборы данных и вообще данные будут запрашивать пользователи.

Наборы данных нужны для проектирования измерений.

Понимание использования данных в общем смысле нужно для включения всех необходимых признаков. Например, признак Единица измерения является атрибутом признака Товар. Если пользователям необходимо анализировать данные по Единице измерения, то этот признак стоит включить наравне с Товаром в измерение.

Куб

Куб - это комбинация таблицы фактов, измерений и признаков. В кубе можно выбрать признаки и факты, на основании которых будет сформирован отчет.

Признаки, которые не были выбраны для просмотра, будут игнорированы, а факты агрегированы.

SQL код при запуске отчета будет выглядеть примерно так:

SELECT выбранные признаки, агрегатная функция (факт)

FROM таблицы фактов, измерений, признаков

GROUP BY выбранные признаки

Пример моделирования куба.

Схема снежинка
Схема снежинка
Делитесь своим мнением о качестве материала в комментариях.
Предлагайте новые темы для статей.