15
Проектирование приложений в IBM Cognos TM1 Кудрявцев Юрий, [email protected]

Проектирование приложений в IBM Cognos TM1 · • Несколько TM1 серверов на одном физическом ... • TM1 Operations Guide

Embed Size (px)

Citation preview

Проектирование приложений в IBM Cognos TM1

Кудрявцев Юрий, [email protected]

Немного о ТМ1

• Клиент-серверная архитектура• In-Memory OLAP engine

Features• Скорость расчетов• Тонкий клиент• Аттрибуты измерений и сложные вычисления• SandBox – любое количество версий для каждого пользователя

Основные объекты ТМ1

• Измерение• Куб• Правило

• Связано с кубом, описывает вычисления в кубе• Описывает связи между кубами• Запускается каждый раз, когда изменяются данные

• TurboIntegrator процесс• Выполняемый по требованию (или расписанию) набор задач• Можно делать все то, что можно в Правилах• Загружать\выгружать данные• Управление TM1 сервером

Делать все вычисления в системе на правилах?

• Работает быстро• Нет сложностей в проектировании• Просто в разработке и тестировании – «ввел цифру, увидел

результат»

Еще о правилах

• Пусть у нас есть простая модель• Баланс зависит от БДДС• БДДС – от плана продаж• План продаж – от прайс-листа

• Если мы меняем цифру в прайс-листе – пересчитываются все кубы, которые связаны правилами (cube dependency).

• Пусть вычисление баланса при изменении прайс-листа – всего 2 секунды

• А если «мы» -- 500 региональных менеджеров по продажам?

Добро пожаловать в мир блокировок

Блокировки

• Гранулированность – объект (куб, view, измерение)• Типы блокировок

• На чтение (R) – чтение блокирует запись• На будущую запись (IX) – блокировка перед записью – ждем

окончания всех чтений• На запись (W) – во время записи ни одна нить не может

обращаться к объекту• Основной инструмент -- TM1Top• Выводы:

• Сложные вычисления в правилах => много зависимых объектов => медленнее вычисления в целом и модель «останавливается» уже при нескольких пользователях

• Сложность в проектировании масштабируемых моделей

Что делать?

• Писать более «быстрые» правила• Работа с разреженностью кубов – Feeders

• Разделять модель на независимые блоки• Вводной с минимумом вычислений - Input • Вычисления - Calculation • Отчеты – Output

• «Дробить» кубы (например по регионам) – могут все равно блокироваться отчеты

• Связь между блоками – TI процессы• Сложно выбирать «границы» блоков и «осмысленные» процессы

Правила и процессы

• Правила и процессы – код• Соглашения о наименовании объектов• Комментарии в коде• Система контроля версий кода + автоматическое сохранение

• Резервное копирование• Возможность посмотреть «как было»

• Тестирование• Функциональное – все вычисляется согласно ТЗ• Нагрузочное – и при этом работает для 100 пользователей

Выбор оборудования

• Поскольку запись (и значительная часть вычислений) происходит в одну нить

• Несколько серверов (осторожнее с репликацией)• Важна скорость процессоров, а не их количество• Несколько TM1 серверов на одном физическом сервере

• Скорость и объем ОП• Проверяйте на полностью заполненной модели• При вводе данных объем занимаемой памяти растет• Зависит от количества одновременно работающих

пользователей• Лог транзакций TM1

• При массивных операциях (удаление данных кубов, импорт) – I\O нагрузка

• Быстрые диски для лог файлов• Специальные bulk load команды в TI при импорте

Нагрузочное тестирование

• Эмулируем работу пользователя, задавая:• Кубы, которые он читает• Кубы, в которые он пишет• Количество таких пользователей

• Заполняем несколько таких «профилей» (15 региональных бренд-менеджеров и 5 аналитиков) и запускаем одновременно

• Запускаем TM1Top и смотрим на блокировки

Как анализировать модель в TM1

Документация:Слишком много чтобы поддерживать, слишком мало чтобы

понять?

Типичные вопросы:• Примерная схема модели, взаимосвязи между объектами• Как обновляется этот куб\измерение• Что делает тот или иной процесс

TM1MN. Общая схема модели.

TM1MN. Поиск зависимых объектовSourceType Source TargetType Target LinkType Link Details

pro plan_load_budget_to_report_cube dim plan_exchange_rates pro Vplan_exchange_rate_SSN pro plan_load_budget_to_report_cube cub plan_Report pro CellPut

cub plan_ExchangeRate cub plan_Report DBDB line 5,9,13,17,21,40,44,48,52,56

cub plan_ExchangeRate cub plan_BudgetPlanLineItem DB DB line 6,11,16,21,26

pro plan_set_language pro plan_set_language pro

Calculated ATTR for Attribute vFromAttr Calculated AttrPut attribute vAttr

pro mover cub plan_BudgetPlan pro CellPut

dim plan_business_unit cub plan_BudgetPlan AttrAttribute currency from stmt line 11, 15, 19, 23, 27, 31

dim plan_business_unit cub plan_Report Attr

Attribute currency from stmt line 5, 9, 13, 17, 21, 40, 44, 48, 52, 56

dim plan_business_unit cub plan_BudgetPlanLineItem AttrAttribute currency from stmt line 6, 11, 16, 21, 26

Список литературы

• TM1 Operations Guide• Подборка материалов на olapforums• Bihints• IBM Knowledge Base