В этой статье:
Загрузка данных в глобальный кэш
Загрузка кэшированных данных в оперативную память
Сохранение данных при использовании глобального кэша
Консоль управления глобальным кэшем
Потребление памяти и производительность
Сценарии использования глобального кэша
Многомерные кубы и справочники хранят данные в плоских реляционных структурах. При работе с многомерными кубами производится запрос выборки данных из реляционных структур, далее результаты выборок необходимо загружать и отстраивать в многомерные структуры. При больших объемах данных, фрагментации индексной информации реляционных структур, большом количестве условий в выборах на выполнение запроса, загрузки и отстройки в многомерных структурах может потребоваться много времени. Для ускорения работы в «Форсайт. Аналитическая платформа» реализована возможность работы с кэшем данных справочников, стандартных кубов, а также построенных на них представлений-кубов и виртуальных кубов. При использовании кэша заранее загруженная и отстроенная многомерная структура сохраняется в СУБД и при первом обращении к объекту загружается в оперативную память.
Поддерживается два режима работы с кэшем:
Сессионный или персональный кэш. При использовании сессионного кэша для каждой сессии пользователя в оперативной памяти сервера приложения выделяется отдельное место для хранения. Этот режим подходит, когда в рамках одного сеанса с «Форсайт. Аналитическая платформа» пользователь много раз обращается к одним и тем же данным. Например, если справочник территорий используется во всех кубах, то после первого обращения он загрузится в оперативную память BI-сервера и SQL-запросов к базе данных больше не будут генерироваться. Использование сессионного кэша приводит к увеличению потребления оперативной памяти, так как для каждого пользователя в оперативную память загружается свой экземпляр кэшированного справочника. Количество требуемой оперативной памяти будет прямо пропорционально количеству активных сессий BI-сервера;
Кросс-сессионный или общий кэш. При использовании кросс-сессионного кэша в рамках одного узла BI-сервера формируется одна общая матрица с данными или общий справочник сразу для всех активных сессий. Изменения данных, сделанные одним пользователем, сразу будут видны другим. Этот режим подходит для чтения данных, но без сложной ролевой модели, которая разграничивает доступ пользователей к отдельным фрагментам данных.
Для кэширования данных справочников и кубов можно использовать оба режима.
Для использования кэширования данных кубов и справочников глобальным кэшем сохраните объекты в многомерном виде в СУБД.
Доступность настройки кэширования данных кубов и справочников в зависимости от режима кэширования в веб-приложении в ОС Linux и в ОС Windows:
Режим кэширования | Куб | Справочник |
Сессионный | ||
Кросс-сессионный |
Доступность настройки кэширования данных кубов и справочников в зависимости от режима кэширования в настольном приложении в ОС Windows:
Режим кэширования | Куб | Справочник |
Сессионный | ||
Кросс-сессионный |
Условные обозначения:
- настройка доступна;
- настройка недоступна.
Примечание. Работа с настроенным и созданным кэшем доступна для кубов и справочников любого типа приложений и используемой ОС.
Для использования сессионного кэширования кубов в настольном приложении для ОС Windows:
Укажите значение global для строкового параметра CacheType в разделе InMem в файле settings.xml или в настройках системного реестра ОС Windows.
Примечание. Если раздел InMem или строковый параметр CacheType отсутствуют, то их необходимо создать вручную. Раздел InMem должен быть заполнен на всех клиентских компьютерах.
Выберите куб, данные которого необходимо закэшировать, в навигаторе объектов.
Включите кэширование для выбранного объекта с помощью флажка «Кэшируемый объект» на вкладке «Кэш» в свойствах объекта.
Выберите базу данных, в которой будет создана специальная структура хранения, в раскрывающемся списке. Если в текущем репозитории задана база данных по умолчанию, то она будет подставлена в раскрывающемся списке. При смене базы данных кэш будет удалён, а в выбранной базе будет создана новая пустая специальная структура хранения.
Нажмите кнопку «Обновить кэш», чтобы отстроенный многомерный объект сохранился в базе данных. Учитывайте, что для кубов в базе данных сохраняются все данные куба. Чтобы сохранить кэш для кубов по определенной отметке нужно использовать «Консоль управления глобальным кэшем». Особенности работы с кэшем:
если объект параметрический, то кэш необходимо создать для всех необходимых наборов значений параметра. Диалог задания параметра будет показан при нажатии кнопки «Обновить кэш»;
если создаются ярлыки для стандартных кубов, то для ярлыка может быть создан и настроен отдельный кэш. Если для ярлыка отсутствует кэш, то используется кэш исходного куба.
Для использования сессионного кэширования справочников в настольном приложении для ОС Windows:
Укажите значение global для строкового параметра CacheType в разделе InMem в файле settings.xml или в настройках системного реестра ОС Windows.
Примечание. Если раздел InMem или строковый параметр CacheType отсутствуют, то их необходимо создать вручную. Раздел InMem должен быть заполнен на всех клиентских компьютерах.
Выберите справочник, данные которого необходимо закэшировать, в навигаторе объектов.
Включите кэширование для выбранного объекта с помощью флажка «Кэшируемый объект» на вкладке «Кэш» в свойствах объекта.
Выберите базу данных, в которой будет создана специальная структура хранения, в раскрывающемся списке. Если в текущем репозитории задана база данных по умолчанию, то она будет подставлена в раскрывающемся списке. При смене базы данных кэш будет удалён, а в выбранной базе будет создана новая пустая специальная структура хранения.
Нажмите кнопку «Обновить кэш», чтобы отстроенный объект сохранился в базе данных. Учитывайте, что для справочников в базе данных сохраняются все элементы. Особенности работы с кэшем:
если объект параметрический, то кэш необходимо создать для всех необходимых наборов значений параметра. Диалог задания параметра будет показан при нажатии кнопки «Обновить кэш».
В результате выполнения действий справочник или куб можно использовать в режиме сессионного кэша, когда при первом обращении к объекту он будет загружен в оперативную память и при последующих обращениях к объекту в рамках текущей сессии дополнительных запросов к СУБД не будет.
Для использования кросс-сессионного кэша:
Укажите значение global для строкового параметра CacheType в разделе InMem в файле settings.xml или в настройках системного реестра ОС Windows или ОС Linux.
Примечание. Если раздел InMem или строковый параметр CacheType отсутствуют, то их необходимо создать вручную. Раздел InMem должен быть заполнен на всех клиентских компьютерах, если используется настольное приложение, или на BI-сервере, если используется веб-приложение.
Настройте дополнительно:
для кубов используйте «Консоль управления кэшем данных». Консоль доступна в настольном приложении и в веб-приложении;
для справочников укажите значение 1 для целочисленного параметра Cache в разделе Dimensions в файле settings.xml или в настройках системного реестра.
Примечание. Если раздел Dimensions или целочисленный параметр Cache отсутствуют, то их необходимо создать вручную. Раздел Dimensions должен быть заполнен на всех клиентских компьютерах, если используется настольное приложение, или на BI-сервере, если используется веб-приложение.
В результате выполнения дополнительных настроек справочник можно использовать в режиме кросс-сессионного кэша, когда при первом обращении к объекту он будет загружен в оперативную память и при последующих обращениях к объекту в рамках любой активной сессии для текущего узла BI-сервера дополнительных запросов к СУБД не будет.
Загрузка данных в глобальный кэш возможна с использованием различных вариантов:
на вкладке «Кэш» в свойствах объекта настольного приложения. В этом случае в кэш сохраняются все данные куба или справочника, либо данные для конкретного набора параметров, если объект параметрический;
при использовании консоли управления глобальным кэшем в веб-приложении и настольном приложении. При данном способе формирования кэша данные можно разделить не только параметрами, но и сформировать кэш по определенной отметке в кубе. Сохранение в кэш всех данных здесь так же доступно.
Примечание. После задания или изменения настроек в файле settings.xml или в настройках системного реестра перезапустите настольное приложение или BI-сервер.
Выбор варианта загрузки данных в глобальный кэш зависит от решаемых задач и структуры источников данных.
Загрузка кэшированного объекта в оперативную память происходит при первом обращении к этому объекту. Затем в зависимости от настроек данные объекта будут доступны только текущему пользователю при использовании сессионного режима или всем пользователям при использовании кросс-сессионного режима. Все дальнейшие обращения будут происходить к объекту в оперативной памяти, дополнительных запросов к СУБД не будет.
При использовании полного кэша для куба при обращении к данным по любому срезу в оперативную память загружается сразу весь кэш, что может быть медленнее, чем работа без кэша, если отметка, по которой необходимо получить данные, небольшая. Так же в этом случае потребление памяти будет выше, чем без кэша, так как в оперативной памяти будут лежать сразу все данные куба.
Если работа с данными не предполагает использования полного объема данных, то в этом случае можно разбивать данные параметрами для сохранения в кэш по частям или задать отметку при формировании кэша.
Если кэш был сохранен для разных значений параметров, то загрузка кэша в оперативную память может выполняться для каждого параметра параллельно разными пользователями.
Примечание. Для кубов и справочников с параметрами доступен только кэш по параметрам.
Если были изменены данные, загруженные в оперативную память, и сохранены в источник, то они будут видны пользователям до тех пор, пока кэш лежит в оперативной памяти. Если кэш был выгружен из оперативной памяти и загружен снова, то изменённые данные видны не будут.
Так как глобальный кэш хранится отдельно от данных кубов и справочников, то и при изменении данных в исходных объектах, в кэш они не загружаются автоматически.
Для обновления данных в кэше нажмите кнопку «Обновить кэш» в свойствах объекта или заново «прогрейте» кэш, используя мастер «прогрева» кэша консоли управления глобальным кэшем. Учитывайте особенности сохранения данных для полного кэша и для кэша по параметрам в многопользовательском режиме:
Полный кэш. Все одновременно изменяемые в разных сессиях записи выстраиваются «в очередь» и будут записываться в общую матрицу последовательно. Это регулирует диспетчер управления потоками данных в кэше. Такая реализация связана с тем, что матрица имеет сложную внутреннюю систему многомерной индексации данных и параллельно для нескольких новых значений формировать ее невозможно;
Кэш по параметрам. Каждой комбинации значений параметров в оперативной памяти создается отдельная локальная матрица. Запись значений в локальные матрицы выполняется параллельно, каждый поток в свою матрицу. Используйте данный вариант сохранения при одновременном выполнении высоконагруженных расчетов или загрузки данных по разным сценариям. Сохранение данных для всех сценариев выполняется одновременно, каждый из них идет в своем потоке в свою локальную матрицу. Разные локальные матрицы можно объединить в виртуальном кубе за счет виртуализации данных и использовать инструменты отчетности для визуализации общего результата и сравнения матриц между собой.
Для запуска консоли:
в веб-приложении выполните команду «Кэширование кубов» на боковой панели навигатора объектов. После чего на отдельной вкладке браузера будет открыта страница с адресом в формате:
http://<IP-адрес или DNS-имя сервера>/fp10.x/app/cache.html#repo=<идентификатор репозитория>
в настольном приложении откройте на просмотр отчёт с идентификатором RO_CACHE_UTIL.
Примечание. Для работы с консолью управления глобальным кэшем в репозитории должно быть установлено расширение «Кэш кубов».
Доступные настройки:
Для создания кэша данных и выбора объекта кэширования нажмите кнопку «Настроить» в области мастера создания кэша на стартовой странице консоли.
После выполнения действия будет открыта вкладка «Модель кэша»:
Задайте настройки:
Создание и редактирование записей кэша
Для наполнения записи кэша данными нажмите кнопку «Настроить» в области мастера «прогрева» кэша на стартовой странице консоли.
После выполнения действия будет открыта вкладка «Прогрев кэша»:
Задайте настройки:
Настройка метода прогрева кэша
Для просмотра записей, загруженных в память BI-сервера, нажмите кнопку «Настроить» в области мастера мониторинга памяти на стартовой странице консоли.
На странице будет отображён список записей кэша, которые в текущий момент загружены в память. Для очистки матрицы с данными у какой-либо записи кэша выделите её и нажмите кнопку «Очистить». Сама запись при этом остаётся загруженной, но количество точек для неё будет равно нулю.
Перед тем как принимать решение об использовании кэширования для данных ознакомтесь со значениями скорости работы и потреблением памяти. Представленные значения показателей зависят от аппаратного обеспечения, нагрузки на сервере СУБД и прочих условий.
Потребление памяти зависит от:
для справочников: количества элементов, количества и типа данных атрибутов;
для кубов: количества измерений, количества фактов и типа данных.
Усреднённые показатели потребления памяти и производительности справочников:
Количество элементов справочника, млн. |
Количество и тип данных пользовательских атрибутов |
Первое открытие без кэша, с. |
Первое открытие с кэшем, с. |
Второе открытие с «прогретым» кэшем, с. |
Память, MБ |
1 |
- |
5,93 |
1,81 |
0 |
273,2 |
1 |
3 целых, 2 строковых |
6,49 |
2 |
0 |
320,5 |
1 |
5 целых, 5 строковых |
6,59 |
2,05 |
0 |
355,6 |
3 |
- |
16,95 |
5,15 |
0 |
849 |
3 | 3 целых, 2 строковых |
17,99 |
5,7 |
0 |
952,5 |
3 | 5 целых, 5 строковых |
18,43 |
6,31 |
0 |
1055,2 |
Усреднённые показатели потребления памяти и производительности кубов с вещественным типом данных:
Количество записей, млн. |
Количество измерений |
Количество фактов |
Первое открытие без кэша, с. |
Первое открытие с кэшем, с. |
Второе открытие с прогретым кэшем, с. |
Память, ГБ |
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)», «Аналитические панели», «Отчёты», «Интерактивные формы ввода данных» недоступна следующая функциональность:
См. также: