В этой статье:

Загрузка данных в файловый кеш

Изменение и сохранение данных при использовании файлового кеша

Агрегация данных

Переменный кеш

Консоль управления файловым кешем

Логирование выполняемых действий

Расширенные способы и режимы обработки данных

Особенности поддержки различных инструментов платформы

Ограничения работы с файловым кешем

Работа с файловым кешем

При использовании файлового кеша в «Форсайт. Аналитическая платформа» необходимый набор данных хранится на жёстком диске, и информация по мере необходимости (в зависимости от запросов пользователей) фрагментами подгружается в оперативную память.

Файловый кеш поддерживает многопоточную многопользовательскую работу, оптимизируя расчёты распараллеливанием нагрузки по процессорам, обеспечивая корректность данных при множественных обращениях к одному кешу. При многопользовательской работе экземпляр кешированных данных в памяти находится только один, а доступ к нему разделяется на уровне сессий пользователей.

Для получения подробной информации о работе с файловым кешем в Fore обратитесь к статье «Работа с файловым кешем в Fore».

Загрузка данных в файловый кеш

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

Все необходимые данные заранее загружаются (кешируются) из базы данных в файлы на жестком диске (файловый кеш).

При формировании кеша данные куба можно сохранить:

Выбор варианта загрузки данных в файловый кеш зависит от решаемых задач и структуры источников данных.

Частичное формирование кеша рекомендуется применять, например:

В большинстве случаев при работе с относительно небольшими кубами более оптимальным вариантом будет создание кеша по полной отметке.

Фрагменты данных по мере необходимости подгружаются из файлового кеша в оперативную память, при достижении установленного лимита памяти более свежие выборки замещают неиспользуемые. Система гарантирует, что независимо от объёма кешированных данных объём занятой файловым кешем оперативной памяти не превысит указанный лимит. Слишком сильное ограничение объёма предоставляемой оперативной памяти может повлечь снижение производительности, особенно во время операции кеширования данных, но при этом работоспособность системы всё равно будет обеспечена.

Изменение и сохранение данных при использовании файлового кеша

При сохранении изменённых данных в прокешированный куб средствами «Форсайт. Аналитическая платформа» данные обновляются в файловом кеше. По умолчанию в то же время автоматически обновляются данные в таблицах базы данных.

При необходимости возможно настроить работу системы таким образом, чтобы изменённые данные прокешированного куба сохранялись только в файловый кеш без обновления данные в таблицах базы данных. Для включения такого сохранения необходимо задать параметр SaveInCache со значением true для конкретного куба или для сервера.

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

Если данные в исходной таблице, на которой построен прокешированный куб, изменились извне системы, например, прямым пополнением через SQL, то можно явно обновить кеш через вызов IInMemManager.UpdateBySelection, вызываемый из Fore-модуля, либо через планировщик. При этом указывается отметка, в рамках которой будет производиться обновление данных. Например, можно обновить данные за последний день, указав соответствующий элемент календарного измерения.

При сохранении данных в файловый кеш автоматически происходит инкрементальный пересчёт хранимых агрегатов и свёрток, связанных с прокешированным кубом. При этом обновляется только та часть агрегатов, которая зависит от изменённых ячеек. При обращении к хранимым агрегатам из отчётов всегда выводятся актуальные данные.

Агрегация данных

Файловый кеш поддерживает агрегацию данных для кубов с иерархическими измерениями. Агрегация должна быть настроена на странице «Агрегация» мастера стандартного куба.

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

В файловом кеше имеется несколько способов расчёта иерархической агрегации:

Для настройки хранимых уровней агрегатов задайте значение параметра StoredLevels.

Ниже представлены схемы расчёта частично-хранимой агрегации для различных значений параметра. На схемах представлено два иерархических измерения. Уровни измерений обозначены цветами:

Условные обозначения для данных:

Если требуется сохранять агрегаты в первом, третьем и далее уровнях иерархических измерений куба, считая от листьевых элементов, а рассчитывать по запросу агрегаты второго, четвертого и далее уровней, задайте параметру StoredLevels значение 1;1, либо задайте параметру AggrType значение levels:

Если требуется сохранять агрегаты в первом, втором, четвертом, пятом и далее уровнях иерархических измерений куба, считая от листьевых элементов, а рассчитывать по запросу агрегаты третьего, шестого и далее уровней, задайте параметру StoredLevels значение 2;1:

Если требуется дополнительно хранить значения «полуагрегатных» точек, у которых часть агрегируемых измерений относится к сохраняемым уровням иерархии, а часть – листьевые элементы, то задайте параметр AggrType со значением levels_semi либо, дополнительно к параметру StoredLevels, задайте параметр StoredSemiAggrs со значением true:

Агрегаты сохраняются в кеш только на пересечении хранимых уровней всех измерений.

Частично-хранимые режимы агрегации будут работать только в условиях следующих ограничений:

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

Физически рассчитанные и хранимые в файловом кеше агрегаты сохраняются не в исходной матрице, а в отдельных файлах данных, которые совмещаются с исходными в результате выполнения запроса. Различные варианты агрегаций хранятся в отдельных блоках файлов и при открытии куба, например, с агрегацией по основному справочнику, будут браться хранимые агрегаты из одного блока, а при открытии с агрегацией по альтернативной иерархии этого справочника – из другого без дополнительных вычислений.

Переменный кеш

Если в кубе настроена агрегация по отмеченным элементам, то значения агрегатов зависят от заданной при агрегации отметки, и поэтому их невозможно рассчитать заранее для всего куба – только для каждого отдельного обращения. Если настроен режим хранимой агрегации, то для каждой новой заданной отметки будет рассчитана хранимая агрегация, записана в файловый кеш и переиспользована при последующих обращениях.

То же самое относится и к вычислению свёрток - они также вычисляются для отметки на фиксированных измерениях. Эта часть кеша по отметке является переменной и может изменяться системой при вычислении агрегатов.

При интенсивном использовании инструментов отчётности объём переменной части кеша может стать слишком большим. Для ограничения размера диска, который занят переменными кешами, используйте параметр CacheLimitMb. Он позволяет задать максимально допустимый объём переменной части кеша, и при его превышении система удаляет самые редкоиспользуемые по дате последнего обращения из кешей по отметке.

Консоль управления файловым кешем

Для запуска консоли выполните команду  «Кеширование кубов» на боковой панели навигатора объектов. После чего на отдельной вкладке браузера будет открыта страница с адресом в формате:

http://<IP-адрес или DNS-имя сервера>/fp10.x/app/cache.html#repo=<идентификатор репозитория>

Примечание. Для работы с консолью управления файловым кешем в репозитории должно быть установлено расширение «Кеш кубов».

Доступны мастера:

Для начала работы с мастером нажмите кнопку «Настроить» в области на стартовой странице консоли. После выполнения действия будет открыта страница соответствующего мастера.

Мастер настройки кеша данных

Мастер настройки кеша данных предназначен для выбора куба для кеширования, настройки для него параметров файлового кеша и настройки записей кеша.

Для начала работы с мастером настройки кеша данных нажмите кнопку «Настроить» в области мастера на стартовой странице консоли. После выполнения действия будет открыта страница «Модель кеша»:

Доступны операции:

Просмотр системных настроек файлового кеша

Выбор куба для кеширования

Редактирование настроек кеширования куба

Добавление записи кеша

Редактирование записи кеша

Удаление записи кеша

Очистка кеша куба

Мастер формирования кеша

Мастер формирования кеша данных предназначен для загрузки данных в кеш.

Для начала работы с мастером формирования кеша данных нажмите кнопку «Настроить» в области мастера на стартовой странице консоли. После выполнения действия будет открыта страница «Формирование кеша»:

Доступны операции:

Выбор куба для кеширования

Запуск кеширования

Мастер мониторинга и резервного копирования файлового кеша

Мастер мониторинга и резервного копирования файлового кеша предназначен для отслеживания всех записей кеша, очистки и загрузки данных кеша в СУБД.

Для начала работы с мастером мониторинга и резервного копирования файлового кеша нажмите кнопку «Настроить» в области мастера на стартовой странице консоли. После выполнения действия будет открыта страница «Мониторинг и резервное копирование»:

На странице будут отображена таблица записей кеша «Активированные записи кеша», которые в текущий момент загружены в файловой системе и количество используемой оперативной памяти.

Доступные операции:

Очистка кеша

Выгрузка в СУБД

Создание резервной копии

Восстановление из резервной копии

Логирование выполняемых действий

При работе с консолью управления кешем данных осуществляется логирование действий, которые выполняет пользователь. При первом открытии консоли внутри расширения «Кеш кубов» в папке «Служебные объекты» будут созданы таблицы для хранения лога. Запуск консоли должен осуществляться пользователем, который является администратором репозитория.

Создаются следующие таблицы:

Примечание. Для корректного создания таблиц, в которых хранится лог работы с кешем, репозиторий должен быть создан на базе СУБД PostgreSQL, и в репозитории должна быть настроена база данных по умолчанию.

По умолчанию доступ к таблицам будет у всех пользователей репозитория. При необходимости администратор должен настроить права доступа в соответствии с требованиями разрабатываемой системы.

Расширенные способы и режимы обработки данных

При использовании файлового кеша на MOLAP-сервере появляется возможность использования различных способов обработки данных и аналитических средств:

Ассоциативный анализ измерений

Позволяет выполнять запросы, рассчитывающие элементы отметки измерений, по которым в кешированной матрице имеются данные, но которые ещё не отображены. Задачей ассоциативного анализа является определение связей между измерениями для эффективного выбора записей из большого объема данных. Ассоциативный анализ используется в информационных панелях и регламентных отчётах. Для включения ассоциативного анализа задайте параметр AllowAssoc со значением true для конкретного куба или для сервера. Если ассоциативный анализ не включен параметром, но выполняется запрос для его применения, то необходимые данные будут построены перед обработкой запроса, с некоторой задержкой по времени.

Примечание. Ассоциативный анализ может выдавать данные ячеек, которые были удалены в кубе. Для учёта удаления ячеек нужно задать параметр AllowAssoc со значением full для конкретного куба или для сервера. При таких настройках вычисление может производиться медленнее.

Динамическая агрегация

Позволяет агрегировать данные с помощью специальных отметок. Отметки задаются в специальном атрибуте справочника. Данным атрибутом справочника могут задаваться следующие динамические операции при агрегации дочернего уровня в вышестоящий:

В настройках куба необходимо указать, какой атрибут справочника будет использоваться для определения операций. Динамическая агрегация задаётся параметром DynAggrAttr для конкретного куба или для сервера.

Частичный кеш

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

Возможно использование частичного кеша для ограничения куба по параметрам – построить частичный кеш по отметке, соответствующей заданным параметрам куба. В этом случае можно отключить дозапрос данных из SQL-источника, для этого задайте параметр PartialRestricted со значением true для конкретного куба или для сервера.

Аддитивный кеш

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

Для включения аддитивного кеша задайте параметр AdditiveCache со значением force для конкретного куба или для сервера. Для кубов с управляющими измерениями и альтернативных иерархий аддитивный кеш включен по умолчанию.

Хранимые свёртки

Позволяют хранить агрегированные данные, которые получаются при агрегации фиксированных измерений и при исключении измерений в источнике. Хранимые свёртки обеспечивают ускоренную работу на больших объёмах данных инструментов отчётности.

Информационные панели и другие инструменты отчетности с целью оптимизации при работе в колоночных СУБД могут исключать измерения, применяя при этом для ROLAP функции группировки на уровне SQL. При файловом кешировании источника данных возникает необходимость поддержки такого режима в MOLAP. Поддержка исключения измерений реализована построением и применением хранимых свёрток над прокешированной матрицей исходных данных.

По исключаемым измерениям определяется полная отметка, после чего размерность матрицы понижается, и производится перерасчёт соответствующих значений. При повторном запросе на исключение измерений хранимые свёртки будут быстро переиспользоваться без пересчёта. Если на таком кубе описана иерархическая агрегация, то она будет считаться «на лету» поверх посчитанной свёртки.

Для включения и настройки хранимых свёрток задайте параметр ConvType со значением simple для построения свёрток по переданной отметке или extend для построения свёртки по полной отметке нефиксированных измерений для конкретного куба или для сервера. Для ускорения работы свёрток включите колоночное представление данных, для этого задайте параметр Columnar со значением true. Данные хранимых свёрток относятся к переменному кешу.

Быстрая агрегация данных ROLAP

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

Для использования MOLAP-агрегации задайте параметр InMemAggr со значением:

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

Совместный доступ

Механизм разделяемого кеша обеспечивает совместную кластерную работу InMemory MOLAP-серверов на общих данных. Для включения совместного доступа задайте параметр SharedAccess со значением true для сервера. В результате файлы кеша во всех использующих процессах открываются в разделяемом режиме. При этом используются блокировки и специальная файловая сигнализация для того, чтобы изменённые в одном процессе данные были своевременно актуализированы другими процессами, использующих эти данные.

Для реализации совместной работы нескольких InMemory MOLAP-серверов с общими данными следует:

  1. Организовать общий файловый ресурс, размещённый на сетевом диске по протоколу NFS.

  2. Предоставить InMemory MOLAP-серверам полный доступ к нему.

  3. Указать соответствующий удалённый ресурс в качестве значения параметра DataDir для сервера.

Особенности поддержки различных инструментов платформы

Файловый кеш поддерживает различные объекты продукта «Форсайт. Аналитическая платформа».

Представление-куб и виртуальный куб

В файловом кеше поддерживаются представления-кубы и виртуальные кубы, которые построены над кешированным стандартным кубом. При этом не производится повторного кеширования либо какого-то запоминания данных – все преобразования, в частности по сокращению числа измерений или фиксации отметки, производятся алгоритмически над прокешированными многомерными данными. Таким же способом поддерживаются цепочки из представлений-кубов или виртуальных кубов: в качестве источника может выступать не только кешированный стандартный куб, но и другой представление-куб или виртуальный куб.

Альтернативные иерархии

Применение к кубу альтернативной иерархии требует перевычисления агрегатов, основываясь на тех же исходных данных. Если исходные данные куба были прокешированы в файловом кеше, и задан один из хранимых способов расчёта агрегации, то первое применение альтернативной иерархии вызовет построение хранимых агрегатов, что займёт время, а последующие будут его использовать без лишних задержек. Заранее рассчитать агрегаты по альтернативным иерархиям возможно, например, путём создания и открытия экспресс-отчётов на соответствующих данных. Следует учесть, что для использования альтернативных иерархий по умолчанию система будет использовать аддитивный кеш. Это связано с тем, что альтернативная иерархия может содержать элементы измерений, которых нет в основном представлении куба, и для дозапроса данных по этим элементам требуется режим аддитивного кеша.

Дубли в альтернативных иерархиях

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

Для включения поддержки дублей задайте параметр DimDupes со значением true значение для конкретного куба или для сервера.

При включении поддержки дублей значения элементов справочника будут «размножены» по ссылкам на них в альтернативной иерархии и будут участвовать в вычислениях. Без поддержки дублей данные дублирующегося элемента попадут только в первый элемент альтернативной иерархии.

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

Кубы с непривязанными измерениями

Непривязанным измерением в кубе считается такое, которое не связано с чем-то при настройке куба, и для данных оно делает декартово произведение со всеми точками. То есть, при использовании всё выглядит так, что точки в кубе реально размножаются во столько раз, сколько элементов в непривязанном измерении или их декартовом произведении. При файловом кешировании такого куба реализована специальная схема виртуализации непривязанного измерения: в самом кеше хранится сокращённый набор «настоящих» измерений, а фантомные координаты достраиваются на ходу. Таким образом, кешируется только необходимый минимум данных, а остальные вычисляются на их основе при обращении.

Ограничения работы с файловым кешем

При работе с файловым кешем имеются следующие ограничения:

Ограничения ассоциативного анализа:

См. также:

Доступ к данным по технологии InMemory MOLAP