Секции — режимы хранения и обработка секций

Применимо к: SQL Server Analysis Services Azure Analysis Services Fabric/Power BI Premium

Режим хранения секции определяет производительность выполнения запросов и обработки, требования к хранилищу и месту хранения секции, а также ее родительскую группу мер и куб. Кроме того, режим хранения влияет на выбор обработки.

Секция может использовать один из трех основных режимов хранения:

  • Многомерный OLAP (MOLAP)

  • Реляционный OLAP (ROLAP)

  • Гибридный OLAP (HOLAP)

Microsoft SQL Server SQL Server Analysis Services поддерживает все три основных режима хранения. Также поддерживается упреждающее кэширование, позволяющее совмещать характеристики хранилищ ROLAP и MOLAP для незамедлительного доступа к данным и высокой производительности запросов. Дополнительные сведения см. в разделе Упреждающее кэширование (секции).

MOLAP

Режим хранения MOLAP приводит к тому, что агрегаты секции и копии его исходных данных хранятся в многомерной структуре в SQL Server Analysis Services при обработке секции. В целях повышения производительности запросов структура MOLAP значительно оптимизирована. Хранилище может находиться на компьютере, где определен раздел, или на другом компьютере под управлением SQL Server Analysis Services. Учитывая тот факт, что многомерные структуры содержат копию исходных данных, запрос может быть выполнен без обращения к секции исходных данных. При использовании статистической обработки время выполнения запроса может значительно возрасти. Данные в структуре секции MOLAP соответствуют последней обработке секции.

Так как исходные данные изменяются, для включения этих изменений и обеспечения доступа к ним пользователей объекты в хранилище MOLAP должны периодически обрабатываться. Обработка полностью или частично обновляет данные в структуре MOLAP. Время между обработками представляет собой период задержки, в течение которого объекты OLAP могут не соответствовать исходным данным. Можно полностью или частично обновить объекты в хранилище MOLAP, не переводя секцию или куб в режим вне сети. Однако в некоторых случаях это может оказаться необходимым при обработке определенных структурных изменений объектов OLAP. Можно свести к минимуму время простоя, требуемое для обновления хранилища MOLAP, с помощью обновления и обработки кубов на промежуточном сервере, а также использования синхронизации баз данных для копирования обработанных объектов на производственный сервер. Также для сокращения задержки и максимизации доступности можно использовать упреждающее кэширование, сохраняя при этом высокую производительность хранилища MOLAP. Дополнительные сведения см. в разделах Упреждающее кэширование (секции),Синхронизация баз данных служб Analysis Services и Обработка многомерной модели (службы Analysis Services).

ROLAP

В режиме хранения ROLAP агрегаты секции хранятся в индексированных представлениях реляционной базы данных, которая определена в источнике данных секции. В отличие от режима хранения MOLAP, ROLAP не приводит к хранению копии исходных данных в SQL Server Analysis Services папках данных. Напротив, если получить результаты из кэша запросов невозможно, для ответов на запросы выполняется доступ к индексированным представлениям в источнике данных. Как правило, в режиме ROLAP запрос выполняется дольше, чем в режимах хранения MOLAP или HOLAP. И время обработки в режиме ROLAP обычно тоже больше. Однако режим ROLAP дает пользователям возможность просматривать данные в режиме реального времени и сохранять пространство хранилища при работе с большими наборами данных, которые запрашиваются редко, например архивные данные.

Примечание

При использовании ROLAP SQL Server Analysis Services могут возвращать неверные сведения, связанные с неизвестным элементом, если соединение объединено с предложением GROUP BY. SQL Server Analysis Services устраняет ошибки целостности реляционной связи, а не возвращает неизвестное значение члена.

Если секция использует режим хранения ROLAP и ее исходные данные хранятся в SQL Server компоненте Компонент Database Engine, SQL Server Analysis Services пытается создать индексированные представления, содержащие агрегаты секции. Если SQL Server Analysis Services не удается создать индексированные представления, таблицы агрегирования не создаются. Хотя SQL Server Analysis Services обрабатывает требования к сеансам для создания индексированных представлений в SQL Server компоненте Database Engine, секции ROLAP и таблицы в его схеме должны соответствовать следующим условиям, чтобы SQL Server Analysis Services создавать индексированные представления для агрегатов:

  • Секция не может содержать меры, использующие агрегатные функции Min или Max .

  • Все таблицы в схеме секции ROLAP должны использоваться только один раз. Например, схема не может содержать [dbo].[address] AS "Customer Address" и [dbo].[address] AS "SalesRep Address".

  • Все таблицы должны быть таблицами, а не представлениями.

  • Все имена таблиц в схеме секции должны содержать имя владельца, например [dbo].[customer].

  • Все таблицы в схеме секции должны принадлежать одному владельцу. Например, не допускается, чтоб предложение FROM одновременно ссылалось на таблицы [tk].[customer], [john].[store] и [dave].[sales_fact_2004].

  • Исходные столбцы мер секции не должны быть NULLABLE.

  • Все таблицы, используемые в представлении, должны быть созданы с использованием следующих параметров со значением ON:

    • ANSI_NULLS

    • QUOTED_IDENTIFIER

  • Общий размер ключа индекса в SQL Server компонент Database Engine не может превышать 900 байт. SQL Server компонент Компонент Database Engine будет утверждать это условие на основе ключевых столбцов фиксированной длины при обработке инструкции CREATE INDEX. Однако если в ключе индекса есть столбцы переменной длины, SQL Server компонент Компонент Database Engine также будет утверждать это условие при каждом обновлении базовых таблиц. Так как различные агрегаты имеют различные определения представлений, то обработка в режиме ROLAP с использованием индексированных представлений может быть удачной или нет, в зависимости от статистической схемы.

  • Сеанс, создающий индексированные представления, должен иметь следующие параметры ON: ARITHABORT, CONCAT_NULL_YEILDS_NULL, QUOTED_IDENTIFIER, ANSI_NULLS, ANSI_PADDING и ANSI_WARNING. Этот параметр можно задать в SQL Server Management Studio.

  • Сеанс, создав индексированные представления, должен иметь значение OFF: NUMERIC_ROUNDABORT. Этот параметр можно задать в SQL Server Management Studio.

HOLAP

Режим хранения HOLAP объединяет атрибуты режимов MOLAP и ROLAP. Как и MOLAP, HOLAP приводит к тому, что агрегаты секции хранятся в многомерной структуре в экземпляре SQL Server SQL Server Analysis Services. В режиме HOLAP копия исходных данных не хранится. Для запросов, которые производят доступ только к сводным данным в агрегатах секции, режим HOLAP полностью эквивалентен режиму MOLAP. Запросы, которые обращаются к исходным данным, например, если требуется выполнить детализацию до ячейки атомарного куба, для которой нет статистических данных, должны извлекать данные из реляционной базы данных и выполняться не так быстро, как если бы исходные данные хранились в структуре MOLAP. В режиме хранения HOLAP пользователи, как правило, ощущают весомые различия во времени обработки запроса в зависимости от того, откуда разрешаются запросы: из кэша или из агрегатов источника данных.

Секции с режимом хранения HOLAP меньше аналогичных секций MOLAP, потому что в них не содержится источник данных, а для запросов со сводными данными они имеют меньшее время отклика, чем в секциях ROLAP. Режим хранения HOLAP, как правило, подходит для секций в кубах, требующих малого времени ответа на запросы сводных данных из большого количества исходных данных. Однако если пользователи создают запросы к данным конечного уровня, например вычисление средних значений, более предпочтительно использовать режим MOLAP.

См. также:

Упреждающее кэширование (секции)
Синхронизация баз данных служб Analysis Services
Секции (службы Analysis Services — многомерные данные)