В этой статье:
Загрузка данных в глобальный кеш
Загрузка кешированных данных в оперативную память
Сохранение данных при использовании глобального кеша
Консоль управления глобальным кешем
Потребление памяти и производительность
Сценарии использования глобального кеша
Многомерные кубы и справочники хранят данные в плоских реляционных структурах. При работе с многомерными кубами производится запрос выборки данных из реляционных структур, далее результаты выборок необходимо загружать и отстраивать в многомерные структуры. При больших объемах данных, фрагментации индексной информации реляционных структур, большом количестве условий в выборах на выполнение запроса, загрузки и отстройки в многомерных структурах может потребоваться много времени. Для ускорения работы в «Форсайт. Аналитическая платформа» реализована возможность работы с кешем данных справочников, стандартных кубов, а также построенных на них представлений-кубов и виртуальных кубов. При использовании кеша заранее загруженная и отстроенная многомерная структура сохраняется в СУБД и при первом обращении к объекту загружается в оперативную память.
Сохраненные в специальном формате данные загружаются в оперативную память, при этом трансформация в матрицу не требуется, так как данные уже хранятся в многомерном виде. Достаточно одного запроса, чтобы получить всю матрицу целиком и разместить её в оперативной памяти BI-сервера. В качестве источника хранения многомерных данных могут выступать специализированные многомерные базы данных, специальные файлы или специальные структуры данных в реляционных СУБД.
Поддерживается два режима работы с кешем:
Сессионный или персональный кеш. При использовании сессионного кеша для каждой сессии пользователя в оперативной памяти сервера приложения выделяется отдельное место для хранения. Этот режим подходит, когда в рамках одного сеанса с «Форсайт. Аналитическая платформа» пользователь много раз обращается к одним и тем же данным. Например, если справочник территорий используется во всех кубах, то после первого обращения он загрузится в оперативную память BI-сервера, и SQL-запросы к базе данных больше не будут генерироваться. Использование сессионного кеша приводит к увеличению потребления оперативной памяти, так как для каждого пользователя в оперативную память загружается свой экземпляр кешированного справочника. Количество требуемой оперативной памяти будет прямо пропорционально количеству активных сессий BI-сервера. Доступно только в Fore;
Кросс-сессионный или общий кеш. При использовании кросс-сессионного кеша в рамках одного узла BI-сервера формируется одна общая матрица с данными или общий справочник сразу для всех активных сессий. Изменения данных, сделанные одним пользователем, сразу будут видны другим. Этот режим подходит для чтения данных, но без сложной ролевой модели, которая разграничивает доступ пользователей к отдельным фрагментам данных.
Для кеширования данных справочников и кубов можно использовать оба режима.
Для получения подробной информации о работе с глобальным кешем в Fore обратитесь к статье «Работа с глобальным кешем в Fore».
Загрузка данных в глобальный кеш возможна при использовании консоли управления глобальным кешем. Формирования кеша данные можно разделить не только параметрами, но и сформировать кеш по определенной отметке в кубе. Сохранение в кеш всех данных здесь так же доступно.
Примечание. После задания или изменения настроек в файле settings.xml или в настройках системного реестра перезапустите BI-сервер.
Выбор варианта загрузки данных в глобальный кеш зависит от решаемых задач и структуры источников данных.
Загрузка кешированного объекта в оперативную память происходит при первом обращении к этому объекту. Затем в зависимости от настроек данные объекта будут доступны всем пользователям. Все дальнейшие обращения будут происходить к объекту в оперативной памяти, дополнительных запросов к СУБД не будет.
При использовании полного кеша для куба при обращении к данным по любому срезу в оперативную память загружается сразу весь кеш, что может быть медленнее, чем работа без кеша, если отметка, по которой необходимо получить данные, небольшая. Так же в этом случае потребление памяти будет выше, чем без кеша, так как в оперативной памяти будут лежать сразу все данные куба.
Если работа с данными не предполагает использования полного объема данных, то в этом случае можно разбивать данные параметрами для сохранения в кеш по частям или задать отметку при формировании кеша.
Если кеш был сохранен для разных значений параметров, то загрузка кеша в оперативную память может выполняться для каждого параметра параллельно разными пользователями.
Примечание. Для кубов с параметрами доступен только кеш по параметрам.
Если были изменены данные, загруженные в оперативную память, и сохранены в источник, то они будут видны пользователям до тех пор, пока кеш лежит в оперативной памяти. Если кеш был выгружен из оперативной памяти и загружен снова, то изменённые данные видны не будут.
Так как глобальный кеш хранится отдельно от данных кубов и справочников, то и при изменении данных в исходных объектах, в кеш они не загружаются автоматически.
Для обновления данных в кеше заново «прогрейте» кеш, используя мастер «прогрева» кеша консоли управления глобальным кешем. Учитывайте особенности сохранения данных для полного кеша и для кеша по параметрам в многопользовательском режиме:
Полный кеш. Все одновременно изменяемые в разных сессиях записи выстраиваются «в очередь» и будут записываться в общую матрицу последовательно. Это регулирует диспетчер управления потоками данных в кеше. Такая реализация связана с тем, что матрица имеет сложную внутреннюю систему многомерной индексации данных и параллельно для нескольких новых значений формировать ее невозможно;
Кеш по параметрам. Каждой комбинации значений параметров в оперативной памяти создается отдельная локальная матрица. Запись значений в локальные матрицы выполняется параллельно, каждый поток в свою матрицу. Используйте данный вариант сохранения при одновременном выполнении высоконагруженных расчетов или загрузки данных по разным сценариям. Сохранение данных для всех сценариев выполняется одновременно, каждый из них идет в своем потоке в свою локальную матрицу. Разные локальные матрицы можно объединить в виртуальном кубе за счет виртуализации данных и использовать инструменты отчетности для визуализации общего результата и сравнения матриц между собой.
Для запуска консоли выполните команду
«Кеширование кубов» на боковой панели
навигатора
объектов. После чего на отдельной вкладке браузера
будет открыта страница с адресом в формате:
http://<IP-адрес или DNS-имя сервера>/fp10.x/app/cache.html#repo=<идентификатор репозитория>
Примечание. Для работы с консолью управления глобальным кешем в репозитории должно быть установлено расширение «Кеш кубов».

Доступные настройки:
Для создания кеша данных и выбора объекта кеширования нажмите кнопку «Настроить» в области мастера создания кеша на стартовой странице консоли.
После выполнения действия будет открыта вкладка «Модель кеша»:

Задайте настройки:
Создание
и редактирование записей кеша
Для наполнения записи кеша данными нажмите кнопку «Настроить» в области мастера «прогрева» кеша на стартовой странице консоли.
После выполнения действия будет открыта вкладка «Прогрев кеша»:

Задайте настройки:
Настройка
метода прогрева кеша
Для просмотра записей, загруженных в память BI-сервера, нажмите кнопку «Настроить» в области мастера мониторинга памяти на стартовой странице консоли.

На странице будет отображён список записей кеша, которые в текущий момент загружены в память. Для очистки матрицы с данными у какой-либо записи кеша выделите её и нажмите кнопку «Очистить». Сама запись при этом остаётся загруженной, но количество точек для неё будет равно нулю.
Если с какой-либо записью происходит параллельная работа из прикладного кода и эта запись заблокирована на чтение/изменение, то в столбцах «Количество точек», «Дата», «Зарезервировано памяти» и «Используется памяти» будет отображен текст «Запись недоступна». Очистка такой записи будет невозможна.
Перед тем как принимать решение об использовании кеширования для данных, ознакомьтесь со значениями скорости работы и потреблением памяти. Представленные значения показателей зависят от аппаратного обеспечения, нагрузки на сервере СУБД и прочих условий.
Потребление памяти зависит от количества измерений, количества фактов и типа данных.
Усреднённые показатели потребления памяти и производительности кубов с вещественным типом данных:
Количество записей, млн. |
Количество измерений |
Количество фактов |
Первое открытие без кеша, с. |
Первое открытие с кешем, с. |
Второе открытие с прогретым кешем, с. |
Память, ГБ |
10 |
5 |
1 |
19.7 |
3.6 |
0 |
0.52 |
10 |
5 |
5 |
52.0 |
31.6 |
0 |
2.3 |
10 |
10 |
1 |
43.2 |
4.6 |
0 |
0.68 |
10 |
10 |
5 |
67.2 |
35.7 |
0.01 |
3.2 |
10 |
18 |
1 |
67 |
9 |
0.01 |
1.2 |
10 |
18 |
5 |
90.3 |
48.4 |
0.01 |
4.8 |
100 |
5 |
1 |
216.6 |
40.4 |
0.01 |
4.7 |
100 |
10 |
1 |
279.4 |
48.2 |
0.01 |
6.5 |
100 |
18 |
1 |
567.6 |
135.4 |
0.01 |
9.3 |
Также учитывайте влияние настроек и структуры кубов на количество требуемой оперативной памяти:
если после выборки данных производятся расчёты, которые приводят к увеличению количества данных, например, матричная агрегация, то количество требуемой оперативной памяти будет увеличено пропорционально количеству новых точек;
если при использовании представлений-кубов, построенных на стандартных кубах с кешем, над матрицей с кешем создается копия матрицы, учитывающая фиксацию в представлении-кубе, то необходима дополнительная оперативная память. В зависимости от структуры представления-куба, может потребоваться увеличение оперативной памяти в два раза.
Если при загрузке кеша закончилась оперативная память:
удалите из оперативной памяти неиспользуемые объекты кеша, нажав кнопку «Очистить» в мастере мониторинга памяти консоли управления глобальным кешем;
разбейте кеш на более мелкие фрагменты с помощью параметров и отметки.
Используйте глобальный кеш, если у вас реализован сценарий:
использование аналитических панелей. Используются одни и те же данные из источника, и объем этих данных небольшой, порядка десятков или сотен млн. записей, ролевая модель не используется и не требуется ввод и сохранение данных;
использование многомерных расчётов с большими объемами данных. Большой объем данных нужно получить или рассчитать за короткое время. В этом случае кеш используется как промежуточный буфер, а данные из него копируются в основное хранилище регулярно: каждую ночь, в выходные или асинхронно после финального утверждения;
использование разных выборок данных со сложными условиями фильтрации. Условия фильтрации в SQL-запросах сильно зависят от бизнес-логики и структуры куба. Чем больше исходных данных и сложнее условия в запросе, тем меньше скорость выборки. Кеш данных в продукте «Форсайт. Аналитическая платформа» имеет собственную систему двойной индексации, которая хорошо адаптирована для обработки многомерных данных. Поэтому выборка данных для больших многомерных условий в ряде случаев в кеше будет выполняться намного быстрее, чем на стороне СУБД.
Принимая решение об использовании кеширования данных в продукте «Форсайт. Аналитическая платформа», учитывайте:
объём информации в кеше будет влиять на скорость её обработки, то есть время выполнения запроса для таблицы в 1 млн. записей или в 1 млрд. записей будет разное;
не все данные в кеше нужны одновременно. Например, если используется расчёт по сценариям или обработка данных по филиалам, доступным пользователю в рамках его ролевой модели.
Для получения возможности работать с разными фрагментами данных в различные моменты времени используйте кеш по параметрам вместо полного кеша. Для использования кеша по параметрам определите один или несколько параметров для объекта и сформируйте свой фрагмент кеша для каждой комбинации параметров. «Прогрев» каждого такого фрагмента кеша управляется отдельно и любой из них всегда можно добавить или удалить из общего пула фрагментов.
При работе с консолью управления кешем данных осуществляется логирование действий, которые выполняет пользователь. При первом открытии консоли внутри расширения «Кеш кубов» в папке «Служебные объекты» будут созданы таблицы для хранения лога. Запуск консоли должен осуществляться пользователем, который является администратором репозитория.
Создаются следующие таблицы:
Журнал экземпляра кеша (CACHE_ITEM_TABLE). Содержит информацию о кубах, их вариантах отображения и набор значений параметров, для которых созданы экземпляры кеша;
Журнал прогрева экземпляра кеша (CACHE_WARMING_TABLE). Содержит информацию о списке записей кеша, отметку, которая использовалась при создании записей;
Журнал загрузки данных в кеш (CACHE_LOG_TABLE). Содержит полную информацию о загрузках данных в кеш:
Даты и время фиксации записей в журнал;
Статус загрузки;
Информацию о потоках, количество загруженных точек с данными;
Информацию, позволяющую идентифицировать пользователя, который выполнял загрузку.
Примечание. Для корректного создания таблиц, в которых хранится лог работы с кешем, репозиторий должен быть создан на базе СУБД PostgreSQL, и в репозитории должна быть настроена база данных по умолчанию.
По умолчанию доступ к таблицам будет у всех пользователей репозитория. При необходимости администратор должен настроить права доступа в соответствии с требованиями разрабатываемой системы.
Перед тем как принимать решение об использовании кеширования для данных ознакомьтесь c ограничениями:
длительное время «прогрева» матрицы данных при старте BI-сервера при кросс-сессионном режиме кеша, так как в оперативную память подгружается вся информация;
отсутствие возможности работы с кубами с настроенной функциональностью:
отсутствие поддержки изменения набора элементов измерения: удаление/добавление элементов в справочник, включение прав доступа для пользователя или перестроение параметрического справочника после применения параметров, - в кубах после сохранения кеша;
отсутствие поддержки разграничения прав доступа на элементы справочников и на данные в кубах.
При выполнении анализа данных и построении отчётов, построенных на кубах с включенным глобальным кешем, с помощью инструментов «Аналитические запросы (OLAP)», «Аналитические панели», «Отчёты», «Интерактивные формы ввода данных» недоступна следующая функциональность:
См. также: