Немного о ТМ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. Поиск зависимых объектов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