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

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