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