В этой статье:
Загрузка данных в файловый кеш
Изменение и сохранение данных при использовании файлового кеша
Консоль управления файловым кешем
Логирование выполняемых действий
Расширенные способы и режимы обработки данных
При использовании файлового кеша в «Форсайт. Аналитическая платформа» необходимый набор данных хранится на жёстком диске, и информация по мере необходимости (в зависимости от запросов пользователей) фрагментами подгружается в оперативную память.
Файловый кеш поддерживает многопоточную многопользовательскую работу, оптимизируя расчёты распараллеливанием нагрузки по процессорам, обеспечивая корректность данных при множественных обращениях к одному кешу. При многопользовательской работе экземпляр кешированных данных в памяти находится только один, а доступ к нему разделяется на уровне сессий пользователей.
Для получения подробной информации о работе с файловым кешем в Fore обратитесь к статье «Работа с файловым кешем в Fore».
Загрузка данных в файловый кеш возможна при использовании консоли управления кешированием данных многомерных кубов.
Все необходимые данные заранее загружаются (кешируются) из базы данных в файлы на жестком диске (файловый кеш).
При формировании кеша данные куба можно сохранить:
полностью;
частично, по определенной отметке в кубе.
Выбор варианта загрузки данных в файловый кеш зависит от решаемых задач и структуры источников данных.
Частичное формирование кеша рекомендуется применять, например:
для параметрических кубов, у которых значение параметра ограничивает набор данных куба;
для раздельного хранения «горячих» и «холодных» данных. Горячие данные - это оперативные данные, к которым требуется постоянный и быстрый доступ. Холодные данные - данные, к которым периодически обращаются. Частично кешированные данные - горячие данные - будут оперативно извлекаться из кеша, а остальные данные - холодные данные - будут извлекаться обычными SQL-запросами, что позволит сократить объём кешируемых данных.
В большинстве случаев при работе с относительно небольшими кубами более оптимальным вариантом будет создание кеша по полной отметке.
Фрагменты данных по мере необходимости подгружаются из файлового кеша в оперативную память, при достижении установленного лимита памяти более свежие выборки замещают неиспользуемые. Система гарантирует, что независимо от объёма кешированных данных объём занятой файловым кешем оперативной памяти не превысит указанный лимит. Слишком сильное ограничение объёма предоставляемой оперативной памяти может повлечь снижение производительности, особенно во время операции кеширования данных, но при этом работоспособность системы всё равно будет обеспечена.
При сохранении изменённых данных в прокешированный куб средствами «Форсайт. Аналитическая платформа» данные обновляются в файловом кеше. По умолчанию в то же время автоматически обновляются данные в таблицах базы данных.
При необходимости возможно настроить работу системы таким образом, чтобы изменённые данные прокешированного куба сохранялись только в файловый кеш без обновления данные в таблицах базы данных. Для включения такого сохранения необходимо задать параметр SaveInCache со значением true для конкретного куба или для сервера.
В результате такой настройки кеш будет работать с максимальной производительностью на чтение и на запись, для синхронизации данных с таблицами в базе данных при необходимости можно выгрузить данные с помощью консоли.
Если данные в исходной таблице, на которой построен прокешированный куб, изменились извне системы, например, прямым пополнением через SQL, то можно явно обновить кеш через вызов IInMemManager.UpdateBySelection, вызываемый из Fore-модуля, либо через планировщик. При этом указывается отметка, в рамках которой будет производиться обновление данных. Например, можно обновить данные за последний день, указав соответствующий элемент календарного измерения.
При сохранении данных в файловый кеш автоматически происходит инкрементальный пересчёт хранимых агрегатов и свёрток, связанных с прокешированным кубом. При этом обновляется только та часть агрегатов, которая зависит от изменённых ячеек. При обращении к хранимым агрегатам из отчётов всегда выводятся актуальные данные.
Файловый кеш поддерживает агрегацию данных для кубов с иерархическими измерениями. Агрегация должна быть настроена на странице «Агрегация» мастера стандартного куба.
Для задания режима расчета агрегатов с использованием файлового кеша, необходимо настроить значение параметра AggrType для конкретного куба или для сервера.
В файловом кеше имеется несколько способов расчёта иерархической агрегации:
Агрегация по запросу. Для включения агрегации задайте параметр AggrType со значением request. При кешировании в файловый кеш сохранятся только исходные данные без агрегатов. Система будет рассчитывать агрегаты по запросу при каждом обращении. Файловый кеш использует производительные параллельные алгоритмы расчёта агрегации, но в случае кеширования таким способом больших объёмов данных возможны заметные задержки при обращении в агрегатам, так как они будут рассчитываться в момент обращения;
Полная хранимая агрегация. Для включения агрегации задайте параметр AggrType со значением full. Способ используется по умолчанию. Система полностью вычисляет агрегаты при кешировании куба, хранит в файловом кеше и актуализирует все агрегатные данные по иерархии куба. При открытии отчёта не возникает задержек на вычисления агрегатов, так как они уже в готовом виде берутся из кеша. При изменении данных исходного куба пересчитывается только необходимый фрагмент данных куба, что обеспечивает высокую скорость актуализации кеша агрегатов. Необходимо учитывать, что при больших объёмах исходных данных или большом количестве измерений, будет использоваться большой объём занимаемой дисковой памяти и начальный расчёт полного объёма агрегатов займёт длительное время, так как объём агрегатов растёт по декартовому произведению от количества элементов измерений куба;
Частично-хранимая агрегация. Система может вычислять и хранить часть агрегатов при кешировании куба, а остальные считать по запросу при каждом обращении. Это позволяет регулировать степень хранения агрегатов, выбирая оптимальную схему хранения и обработки агрегированных данных.
Для настройки хранимых уровней агрегатов задайте значение параметра StoredLevels.
Ниже представлены схемы расчёта частично-хранимой агрегации для различных значений параметра. На схемах представлено два иерархических измерения. Уровни измерений обозначены цветами:
. Уровень 0. Листьевые элементы;
. Уровень 1;
. Уровень 2;
. Уровень 3. Корневой элемент.
Условные обозначения для данных:
. Исходные данные;
. Хранимые агрегаты;
. Хранимые полуагрегаты;
. Динамически рассчитываемые агрегаты;
. Динамически рассчитываемые полуагрегаты;
Если требуется сохранять агрегаты в первом, третьем и далее уровнях иерархических измерений куба, считая от листьевых элементов, а рассчитывать по запросу агрегаты второго, четвертого и далее уровней, задайте параметру StoredLevels значение 1;1, либо задайте параметру AggrType значение levels:

Если требуется сохранять агрегаты в первом, втором, четвертом, пятом и далее уровнях иерархических измерений куба, считая от листьевых элементов, а рассчитывать по запросу агрегаты третьего, шестого и далее уровней, задайте параметру StoredLevels значение 2;1:

Если требуется дополнительно хранить значения «полуагрегатных» точек, у которых часть агрегируемых измерений относится к сохраняемым уровням иерархии, а часть – листьевые элементы, то задайте параметр AggrType со значением levels_semi либо, дополнительно к параметру StoredLevels, задайте параметр StoredSemiAggrs со значением true:

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

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

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

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

На странице будут отображена таблица записей кеша «Активированные записи кеша», которые в текущий момент загружены в файловой системе и количество используемой оперативной памяти.
Доступные операции:
Восстановление
из резервной копии
При работе с консолью управления кешем данных осуществляется логирование действий, которые выполняет пользователь. При первом открытии консоли внутри расширения «Кеш кубов» в папке «Служебные объекты» будут созданы таблицы для хранения лога. Запуск консоли должен осуществляться пользователем, который является администратором репозитория.
Создаются следующие таблицы:
Журнал экземпляра кеша (CACHE_ITEM_TABLE). Содержит информацию о кубах, их вариантах отображения и набор значений параметров, для которых созданы экземпляры кеша;
Журнал прогрева экземпляра кеша (CACHE_WARMING_TABLE). Содержит информацию о списке записей кеша, отметку, которая использовалась при создании записей;
Журнал загрузки данных в кеш (CACHE_LOG_TABLE). Содержит полную информацию о загрузках данных в кеш:
даты и время фиксации записей в журнал;
статус загрузки;
информацию о потоках, количество загруженных точек с данными;
информацию, позволяющую идентифицировать пользователя, который выполнял загрузку.
Примечание. Для корректного создания таблиц, в которых хранится лог работы с кешем, репозиторий должен быть создан на базе СУБД PostgreSQL, и в репозитории должна быть настроена база данных по умолчанию.
По умолчанию доступ к таблицам будет у всех пользователей репозитория. При необходимости администратор должен настроить права доступа в соответствии с требованиями разрабатываемой системы.
При использовании файлового кеша на MOLAP-сервере появляется возможность использования различных способов обработки данных и аналитических средств:
Позволяет выполнять запросы, рассчитывающие элементы отметки измерений, по которым в кешированной матрице имеются данные, но которые ещё не отображены. Задачей ассоциативного анализа является определение связей между измерениями для эффективного выбора записей из большого объема данных. Ассоциативный анализ используется в информационных панелях и регламентных отчётах. Для включения ассоциативного анализа задайте параметр AllowAssoc со значением true для конкретного куба или для сервера. Если ассоциативный анализ не включен параметром, но выполняется запрос для его применения, то необходимые данные будут построены перед обработкой запроса, с некоторой задержкой по времени.
Примечание. Ассоциативный анализ может выдавать данные ячеек, которые были удалены в кубе. Для учёта удаления ячеек нужно задать параметр AllowAssoc со значением full для конкретного куба или для сервера. При таких настройках вычисление может производиться медленнее.
Позволяет агрегировать данные с помощью специальных отметок. Отметки задаются в специальном атрибуте справочника. Данным атрибутом справочника могут задаваться следующие динамические операции при агрегации дочернего уровня в вышестоящий:
+ - значения добавляются в агрегат;
- - значения вычитаются из агрегата;
~ – значения не учитываются в агрегате;
F[число] – значения умножаются на заданный весовой коэффициент, который является положительным числом. Например, задание F1.5 приведёт к увеличению значения в полтора раза;
N – пропуск обработки всего уровня.
В настройках куба необходимо указать, какой атрибут справочника будет использоваться для определения операций. Динамическая агрегация задаётся параметром DynAggrAttr для конкретного куба или для сервера.
Позволяет часть данных извлекать из файлового кеша по отметке, а остальные данные из SQL-источника. Для каждого обращения к кубу анализируется отметка открытия, если она попадает в прокешированные данные, то используются только данные кеша, если не попадает, то отметка достраивается и запрашивается из базы данных, а данные размещаются во временной таблице. Для включения частичного кеш ограничьте отметку куба в консоли управления кешированием данных многомерных кубов для конкретного куба.
Возможно использование частичного кеша для ограничения куба по параметрам – построить частичный кеш по отметке, соответствующей заданным параметрам куба. В этом случае можно отключить дозапрос данных из SQL-источника, для этого задайте параметр PartialRestricted со значением true для конкретного куба или для сервера.
Позволяет кешировать данные в кубе не сразу, а дополнять по отметке по мере обращения к ним. Кеш куба изначально создаётся пустым. Для каждого обращения к кубу анализируется отметка открытия, если она попадает в прокешированные данные, то используются только данные кеша, если не попадает, то отметка достраивается и запрашивается из базы данных. Данные, запрошенные из базы данных, сохраняются в кеш.
Для включения аддитивного кеша задайте параметр AdditiveCache со значением force для конкретного куба или для сервера. Для кубов с управляющими измерениями и альтернативных иерархий аддитивный кеш включен по умолчанию.
Позволяют хранить агрегированные данные, которые получаются при агрегации фиксированных измерений и при исключении измерений в источнике. Хранимые свёртки обеспечивают ускоренную работу на больших объёмах данных инструментов отчётности.
Информационные панели и другие инструменты отчетности с целью оптимизации при работе в колоночных СУБД могут исключать измерения, применяя при этом для ROLAP функции группировки на уровне SQL. При файловом кешировании источника данных возникает необходимость поддержки такого режима в MOLAP. Поддержка исключения измерений реализована построением и применением хранимых свёрток над прокешированной матрицей исходных данных.
По исключаемым измерениям определяется полная отметка, после чего размерность матрицы понижается, и производится перерасчёт соответствующих значений. При повторном запросе на исключение измерений хранимые свёртки будут быстро переиспользоваться без пересчёта. Если на таком кубе описана иерархическая агрегация, то она будет считаться «на лету» поверх посчитанной свёртки.
Для включения и настройки хранимых свёрток задайте параметр ConvType со значением simple для построения свёрток по переданной отметке или extend для построения свёртки по полной отметке нефиксированных измерений для конкретного куба или для сервера. Для ускорения работы свёрток включите колоночное представление данных, для этого задайте параметр Columnar со значением true. Данные хранимых свёрток относятся к переменному кешу.
Существует возможность применения комбинированного режима ROLAP и MOLAP, когда данные источника не кешируются, а хранятся в быстрой СУБД колоночной архитектуры. Извлечение данных из такого источника производится быстро, в особенности при исключении ряда измерений, а для применения агрегации по уровням иерархии измерений применяется быстрая параллельная агрегация подсистемы MOLAP.
Для использования MOLAP-агрегации задайте параметр InMemAggr со значением:
идентификаторов отдельных кубов или all для всех кубов для сервера;
true для куба.
В этом случае после извлечения данных из ROLAP к ним будет применена MOLAP-агрегация. Кеширование данных куба в этом случае не должно производиться.
Механизм разделяемого кеша обеспечивает совместную кластерную работу InMemory MOLAP-серверов на общих данных. Для включения совместного доступа задайте параметр SharedAccess со значением true для сервера. В результате файлы кеша во всех использующих процессах открываются в разделяемом режиме. При этом используются блокировки и специальная файловая сигнализация для того, чтобы изменённые в одном процессе данные были своевременно актуализированы другими процессами, использующих эти данные.
Для реализации совместной работы нескольких InMemory MOLAP-серверов с общими данными следует:
Организовать общий файловый ресурс, размещённый на сетевом диске по протоколу NFS.
Предоставить InMemory MOLAP-серверам полный доступ к нему.
Указать соответствующий удалённый ресурс в качестве значения параметра DataDir для сервера.
Файловый кеш поддерживает различные объекты продукта «Форсайт. Аналитическая платформа».
В файловом кеше поддерживаются представления-кубы и виртуальные кубы, которые построены над кешированным стандартным кубом. При этом не производится повторного кеширования либо какого-то запоминания данных – все преобразования, в частности по сокращению числа измерений или фиксации отметки, производятся алгоритмически над прокешированными многомерными данными. Таким же способом поддерживаются цепочки из представлений-кубов или виртуальных кубов: в качестве источника может выступать не только кешированный стандартный куб, но и другой представление-куб или виртуальный куб.
Применение к кубу альтернативной иерархии требует перевычисления агрегатов, основываясь на тех же исходных данных. Если исходные данные куба были прокешированы в файловом кеше, и задан один из хранимых способов расчёта агрегации, то первое применение альтернативной иерархии вызовет построение хранимых агрегатов, что займёт время, а последующие будут его использовать без лишних задержек. Заранее рассчитать агрегаты по альтернативным иерархиям возможно, например, путём создания и открытия экспресс-отчётов на соответствующих данных. Следует учесть, что для использования альтернативных иерархий по умолчанию система будет использовать аддитивный кеш. Это связано с тем, что альтернативная иерархия может содержать элементы измерений, которых нет в основном представлении куба, и для дозапроса данных по этим элементам требуется режим аддитивного кеша.
В файловом кеше реализована поддержка дублей элементов измерений, когда в иерархии присутствуют два элемента справочника с одним и тем же ключом, включенные в различные уровни иерархии.
Для включения поддержки дублей задайте параметр DimDupes со значением true значение для конкретного куба или для сервера.
При включении поддержки дублей значения элементов справочника будут «размножены» по ссылкам на них в альтернативной иерархии и будут участвовать в вычислениях. Без поддержки дублей данные дублирующегося элемента попадут только в первый элемент альтернативной иерархии.
Дубли ячеек физически хранятся в кеше один раз, а «размножение» их значений по координатным дублям происходит виртуально, без физического копирования данных.
Непривязанным измерением в кубе считается такое, которое не связано с чем-то при настройке куба, и для данных оно делает декартово произведение со всеми точками. То есть, при использовании всё выглядит так, что точки в кубе реально размножаются во столько раз, сколько элементов в непривязанном измерении или их декартовом произведении. При файловом кешировании такого куба реализована специальная схема виртуализации непривязанного измерения: в самом кеше хранится сокращённый набор «настоящих» измерений, а фантомные координаты достраиваются на ходу. Таким образом, кешируется только необходимый минимум данных, а остальные вычисляются на их основе при обращении.
При работе с файловым кешем имеются следующие ограничения:
не поддерживаются единицы измерения, заданные на кубе;
не поддерживается агрегация измерения фактов;
не поддерживается альтернативная иерархия на основе атрибутов справочника;
в информационных панелях при исключении измерений, должна задаваться одинаковая функция агрегации по всем измерениям;
не производится кеширование истории изменений, вложений и комментариев. Работа с этой функциональностью производится через дополнительные запросы к SQL-источнику, данные доступны только при обращениях через BI-сервер;
не поддерживается использование хранимых свёрток на основе частичного или аддитивного кеша, а также поверх не полностью кешированных агрегатов.
Ограничения ассоциативного анализа:
необходимо использовать полностью хранимую агрегацию при работе с ассоциативным анализом;
источником данных для ассоциативного анализа является стандартный куб.
См. также: