Кэширование данных In-Memory

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

Примечание. Для справочников по умолчанию включено кэширование в базе репозитория. Изменение механизма кэширования осуществляется в файле Settings.xml или реестре. Настройки задаются на клиентских компьютерах, если используется настольное приложение, или на BI-сервере.

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

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

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

Архитектура работы механизма In-Memory выглядит следующим образом:

Архитектура механизма In-Memory включает в себя:

В настольном приложении управление кэшем отдельных объектов осуществляется на вкладке «Кэш» окна «Свойства объекта». BI-сервер будет применять кэширование данных для объектов, у которых кэш был включен в настольном приложении.

По умолчанию кэш создаётся в следующих папках:

Примечание. Пользователи, которые будут работать с кэшем, должны иметь права на чтение и запись в указанные папки.

Изменение настроек работы самого механизма кэширования осуществляется в файле Settings.xml или реестре. Настройки задаются на клиентских компьютерах, если используется настольное приложение, или на BI-сервере.

После изменения и сохранения данных, обновленные данные будут присутствовать в кэше на том компьютере, где производилась работа. Для обновления кэша на компьютерах других пользователей настольной версии «Форсайт. Аналитическая платформа» используйте кнопку «Обновить кэш» на вкладке «Кэш» окна «Свойства объекта». При это кэш очищается и создаётся заново.

Также на каждом компьютере пользователей можно настроить обновление кэша по расписанию с помощью планировщика задач. Используя настройку UpdCache в файле Settings.xml/реестре, можно перенаправить запуск процесса обновления кэша на какой-либо BI-сервер. В этом случае в кэше обновляются только изменившиеся данные, соответствующие заданной отметке.

Использование разделяемого кэша

Разделяемый кэш In-Memory позволяет работать с кэшированными данными при одновременном запуске нескольких экземпляров продукта «Форсайт. Аналитическая платформа» в настольном и веб-приложении. В веб-приложении формируется кластер из нескольких серверов, использующих производительное кэширование данных In-Memory, при совместном использовании кэша.

Для использования разделяемого кэша:

  1. Разместите кэш на файловом сервере и настройте к нему доступ.

  2. Укажите путь размещения кэша на файловом сервере с помощью свойства DataDir:

<...>
   <Key Name="InMem">
      <Key Name="UseInMem" Value="true"/>
      <Key Name="DataDir" Value="C:\ProgramData\Foresight\Foresight Analytics Platform\inmem_data\"/>
      <Key Name="MemLimitMb" Value="6000"/>
   </Key>
</...>
  1. Выполните одно из действий:

<...>
   <Key Name="InMem">
      <Key Name="UseInMem" Value="true"/>
      <Key Name="DataDir" Value="C:\ProgramData\Foresight\Foresight Analytics Platform\inmem_data\"/>
      <Key Name="MemLimitMb" Value="6000"/>
      <Key Name="SharedAccess" Value="true"/>
   </Key>
</...>

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

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

Ограничения и особенности работы

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

См. также:

Кэширование