Для кэширования данных в «Форсайт. Аналитическая платформа» может применяться механизм CubeCacheSaver. CubeCacheSaver – это подсистема, обеспечивающая загрузку данных из источников (кэширование кубов), хранение данных в оперативной памяти, быстрый доступ и высокопроизводительную обработку. Кэширование позволяет избежать необходимости каждый раз отправлять запрос на выборку данных из СУБД. Данный тип кэширования поддерживают все кубы, построенные на стандартном кубе с кэшем.
Данные кэша хранятся в специальной таблице в СУБД и при открытии куба загружаются в оперативную память. В кэш попадают значения по заданной отметке и набору значений параметров куба. При кэшировании справочников в кэш сохраняются значения атрибутов, соответствующие элементам справочника. Учитывается наличие параметров у справочника (для каждого набора параметров создаётся свой кэш), наличие периода действия элементов (справочники НСИ), права доступа разных пользователей к элементам.
Для использования кэширования данных CubeCacheSaver:
В настройках системного реестра или в файле Settings.xml в разделе InMem для строкового параметра UseInMem укажите значение false.
Примечание. Если подраздел InMem или строковый параметр UseInMem отсутствуют, то их необходимо создать вручную.
Выберите стандартный куб в навигаторе объектов.
Включите кэширование объекта с помощью флажка «Кэшируемый объект»:
на вкладке «Кэш» в свойствах объекта в настольном приложении.
в контекстном меню объекта в веб-приложении.
Из раскрывающегося списка выберите базу данных, в которой будет создана таблица кэша. Если для репозитория задана база данных по умолчанию, то она будет подставлена в раскрывающемся списке. При смене базы данных кэш будет удалён, а в выбранной базе будет создана новая пустая таблица.
После выполнения указанных действий будет использоваться кэширование данных CubeCacheSaver выбранного объекта репозитория. BI-сервер применяет кэширование данных справочников, у которых кэш был включен в настольном приложении. Для заполнения таблицы кэша данными необходимо нажать кнопку «Обновить кэш» на вкладке «Кэш». Данные в двоичном виде будут сохранены в таблицу кэша в СУБД и загружены в оперативную память. В СУБД текущее представление попадает целиком. Если у куба есть параметры, то для каждого набора параметров, кэш необходимо создавать отдельно.
При открытии куба будет следующий приоритет загрузки данных:
Оперативная память;
Таблица с кэшем в СУБД;
Источник данных в СУБД.
Если кэширование куба включено, то при нажатии кнопки «Сохранить изменения» на вкладке «Данные» изменения сохраняются в оперативную память локальной машины и в таблицу с исходными данными источника. При первом открытии куба на другом компьютере будут загружены неактуальные данные из таблицы с кэшем. Для актуализации данных перед открытием куба используйте кнопку «Обновить кэш» на вкладке «Кэш» в настольном приложении или команду «Обновить кэш» в контекстном меню объекта в веб-приложении. Кэш стандартного куба доступен для обновления по расписанию.
В текущей реализации имеются следующие ограничения и особенности при работе с кэшированными данными:
| Функциональность | Комментарии |
| Параметры | Сохранение и обновление кэша производится по тому набору значений параметров, который указан при работе с кубом. Если при открытии куба отсутствует экземпляр кэша с указанным набором значений параметров, то данные запрашиваются из источника куба. |
| Серверная агрегация | В кэш сохраняются агрегированные данные. |
| Детализация по серверной агрегации | При детализации формируется запрос к таблице с исходными данными. |
| Детализация по запросу | Запрос для детализации данных не сохраняется в кэш. При вызове детализации выполняется запрос, который указан в настройках куба. |
| Вложения | Не поддерживается. |
| Непривязанные измерения | В кэш сохраняется размноженная матрица с данными. она же загружается при открытии куба. Если изменяются данные, то необходимо обновлять кэш. |
| Выражения в привязках измерений | Выражения сохраняются и считываются из кэша. |
| Единицы измерения и показатели | Расчёт производится при сохранении или обновлении кэша. При открытии куба загружаются кэшированные данные, перерасчёт не производится. Если изменяются данные, то необходимо обновлять кэш. |
| Отношения | Расчёт производится при сохранении или обновлении кэша. При открытии куба загружаются кэшированные данные, перерасчёт не производится. Если изменяются данные, то необходимо обновлять кэш. |
| Вычисляемые факты | Расчёт производится при сохранении или обновлении кэша. При открытии куба загружаются кэшированные данные, перерасчёт не производится. Если изменяются данные, то необходимо обновлять кэш. |
| Управление параметрами | Сохранение и обновление кэша производится по тому набору значений параметров, который указан при работе с кубом. Если при открытии куба отсутствует экземпляр кэша с указанным набором значений параметров, то данные запрашиваются из источника куба. |
| Управляющие измерения | Расчёт производится при сохранении или обновлении кэша по той отметке, которая передана, либо по отметке по умолчанию для измерений. |
| Агрегация | Расчёт производится при сохранении или обновлении кэша. При открытии куба загружаются кэшированные данные, перерасчёт не производится. Если изменяются данные, то необходимо обновлять кэш. |
| Варианты отображения куба | При работе в навигаторе объектов всегда используется вариант отображения по умолчанию. Через код на Fore/Fore.NET может быть использован любой доступный для куба вариант отображения. |
| Сегменты данных | Не поддерживается. |
Кубы-представления, виртуальные кубы, загрузчик в куб, которые построены на стандартных кубах с кэшированием, также будут осуществлять свою работу с кэшированными данными. Автоматические кубы поддерживают кэширование CubeCacheSaver. Многомерный расчёт на сервере БД не поддерживает кэширование CubeCacheSaver.
При выполнении анализа данных и построении отчётов с помощью инструментов «Аналитические запросы (OLAP)», «Аналитические панели», «Отчёты», «Интерактивные формы ввода данных» недоступна следующая функциональность:
См. также: