В «Форсайт. Аналитическая платформа» для ускорения работы реализовано кэширование данных и кэширование объектов репозитория.
Для кэширования данных в «Форсайт. Аналитическая платформа» применяется механизм In-Memory. In-Memory – это подсистема, обеспечивающая загрузку данных из источников (кэширование кубов), локальное хранение данных, быстрый многопользовательский доступ и высокопроизводительную обработку. Кэширование позволяет избежать необходимости каждый раз отправлять запрос на выборку данных из СУБД. Следующие объекты репозитория поддерживают кэширование In-Memory:
Все виды кубов, кроме вычисляемых (виртуальные и представления-кубы используют кэш источников);
Базы данных временных рядов;
Кубы ADOMD.
Для кэширования объектов различных типов разработаны различные механизмы, ускоряющие доступ к объектам и их работу. Описание принципов кэширования объектов представлено ниже.
Данные хранятся в файловом кэше. В кэш попадают значения в определённой точке и координаты, идентифицирующие привязку точки к источнику данных. Файлы, содержащие те данные, с которыми в текущий момент осуществляется работа, проецируются в память компьютера. Страничный механизм представления данных в памяти обеспечивает возможность работы в ограниченной оперативной памяти с почти не ограниченным объёмом хранимых в файлах данных. При недостатке памяти организуется постраничная загрузка/выгрузка данных.
При использовании механизма In-Memory в оперативную память загружается специальная структура с данными источника. В последующем, вся обработка данных (построение среза данных, фильтрация, агрегация, сортировка и тому подобное) выполняется непосредственно в оперативной памяти без обращения к источнику данных. Таким образом, сокращается время реакции платформы и повышается интерактивность работы пользователя. Кэш организует инкрементальную обработку данных, при которой изменение отдельных ячеек приводит к перерасчёту только связанных с ними данных, а не всего источника. При работе учитываются права доступа к данным, которыми обладает пользователь. Также учитываются сегменты данных, которые настраиваются при формировании ролевой модели для продукта «Форсайт. Бюджетирование».
Архитектура работы механизма In-Memory выглядит следующим образом:

Интерфейс взаимодействия с платформой предоставляет инструментам платформы те данные, с которыми в текущий момент осуществляется работа.
Менеджер управления сетью данных In-Memory осуществляет полное управление кэшем: формирование и работа с файлами, взаимодействие с менеджером работы с отображаемой памятью, управление структурами данных, распределение ресурсов компьютера при выполнении различных операций и другие функции.
Менеджер работы с отображаемой памятью обеспечивает максимально быструю загрузку требуемого фрагмента файла в оперативную память средствами операционной системы, поиск необходимых данных в оперативной памяти для работы с ними.
В настольном приложении управление кэшем отдельных объектов осуществляется на вкладке «Кэш» окна «Свойства объекта». BI-сервер будет применять кэширование данных для объектов, у которых кэш был включен в настольном приложении.
По умолчанию кэш создаётся в следующих папках:
Windows. «С:\Program Files\Foresight\Foresight Analytics Platform 9.2\inmem_data\».
Linux. «/var/tmp/inmem_data».
Примечание. Пользователи, которые будут работать с кэшем, должны иметь права на чтение и запись в указанные папки.
Изменение настроек работы самого механизма кэширования осуществляется в файле Settings.xml или реестре. Настройки задаются на клиентских компьютерах, если используется настольное приложение, или на BI-сервере.
После изменения и сохранения данных, обновленные данные будут присутствовать в кэше на том компьютере, где производилась работа. Для обновления кэша на компьютерах других пользователей настольной версии «Форсайт. Аналитическая платформа» используйте кнопку «Обновить кэш» на вкладке «Кэш» окна «Свойства объекта». Также на каждом компьютере пользователей можно настроить обновление кэша по расписанию с помощью планировщика задач.
В текущей реализации имеются следующие ограничения и особенности при работе кэширования данных:
Кэш не используется, если работа с базой данных временных рядов осуществляется в инструменте «Аналитические запросы (OLAP)» и включен вариант отображения «Атрибуты».
Кэш, созданный для баз данных временных рядов, не будет применяться при работе в инструменте «Анализ временных рядов».
Агрегация по фиксированным измерениям не расчитывается если:
для куба заданы сегменты;
в кубе есть вычисляемые факты.
Если в измерениях источников производятся какие-либо изменения структуры (меняется состав атрибутов, добавляются новые элементы, изменяется иерархия существующих элементов и другие изменения), то для дальнейшей корректной работы необходимо обновить кэш.
Значения по вычисляемым фактам стандартного куба не кэшируются.
Создание кэша невозможно, если куб имеет несколько источников, и одно и то же измерение привязано в одном из них и непривязано в других.
При создании кэша вычисляются агрегации для варианта отображения куба по умолчанию. По другим вариантам отображения агрегация расчитывается при первом обращении.
Работа с кэшем доступна только в рамках одного запущенного экземпляра платформы.
Ниже приведён список факторов, которые могут вызвать снижение скорости работы с кэшированными данными. В некоторых случаях снижение может быть очень значительным:
Использование агрегации по пользовательским альтернативным иерархиям.
Многократные обращения к кэшированному кубу при выставлении маленькой отметки из инструмента «Моделирование и прогнозирование».
Агрегация с использованием методов «Количество пустых» и «Количество непустых».
Использование виртуальных кубов (снижение скорости связано с необходимостью клонирования данных из кэша источника при открытии).
Фиксация измерения с агрегацией в кубе-представлении.
Агрегация по непривязанному измерению в стандартном кубе (может вызвать значительное увеличение кэша в размере).
При большом количестве связанной хранимой информации (агрегации данных, агрегации по фиксированным измерениям) сохранение данных будет происходить дольше так как производится перерасчёт всех хранимых агрегатных матриц.
Кэширование
справочников и измерений в базах данных временных рядов
Кэшировании
объектов среды разработки
Кэшировании
регламентных отчетов
Кэширование
изображений предварительного просмотра объектов
При работе BI-сервера «Форсайт. Аналитическая платформа» извлечение и хранение данных, необходимых для работы веб-приложения, осуществляется в памяти самого BI-сервера. Также систему можно расширить путем введения дополнительных (более производительных) BI-серверов, на которые будет возложена функция извлечения и кэширования данных из базы репозитория. BI-сервер с веб-приложением будет обращаться к этим BI-серверам и получать поток с необходимыми данными без дополнительного обращения к СУБД.
Для использования такой схемы необходимо в реестре или файле settings.xml заполнить раздел Service. В данном разделе указываются адреса удаленных BI-серверов и настройки репозиториев, для которых будет работать указанная схема кэширования данных.
Примечание. Указанный режим работы кэширования актуален только для тех объектов, для которых включено кэширование в репозитории.
Очистка кэша позволяет избежать использования потенциально устаревших данных.
Примечание. Очистка кэша доступна только в настольном приложении.
Для очистки кэша справочников и базы данных временных рядов выполните команду «Очистить кэш» меню «Сервис» в навигаторе объектов.
Для очистки кэша объектов среды разработки выполните команду менеджера безопасности «Репозиторий > Очистить кэш сборок».
Для очистки кэша регламентного отчета нажмите кнопку «Очистить» в окне «Кэш объекта».
Для очистки кэша данных различных объектов нажмите на кнопку «Очистить кэш» вкладки «Кэш» окна «Свойства объекта».
Для очистки кэша репозитория выполните команду «Очистить кэш» в главном меню «Сервис» навигатора объектов.
См. также: