Довольно часто Бизнесу требуется быстро, за 1-2 дня организовать многопользовательский учет каких-либо списков: например, реестр аккредитованных риск-менеджментом компаний, список клиентов для рассылки предложений и фиксации обратной связи и т.д. Что же можно предложить Бизнесу в качестве Rapid Application Development?
- Самостоятельно выполнить собственную (in house) разработку. В таком случае придется обращаться, становиться в очередь к IT, у которых заданий и заказов, как правило, на год вперед. Постановка требований к функциональности, к интерфейсу пользователей (GUI), разделению доступа; тестирование, приемка, развитие, обеспечение минимально необходимой инфраструктуры, обоснование бюджета ...
- Воспользоваться возможностями существующей в компании ERP-системой (например, вездесущей 1C) или CRM-системой (например, Oracle Siebel CRM). Снова нужно обращаться к IT. Вряд ли Бизнес-владелец системы будет рад / повышать приоритет требованиям навесить на систему дополнительные учетные подзадачи. Доработки, дополнительные лицензии, ...
- Прибегнуть к функциональности корпоративного web-портала на основе промышленного решения (например, MS SharePoint). Развернута ли подобная платформа в вашей компании? Разрешено ли Бизнесу, умеет ли Бизнес самостоятельно администрировать собственные разделы сайта? Опять же могут оказаться критичными требования к функциональности интерфейса пользователя ...
Безусловно, наиболее системным решением является вариант №2. Однако на практике выходит, что при всем богатстве возможностей выбор останавливается на ... MS Excel. Сколько этих Excel-файлов в компаниях! Какого качества учетные данные в них, насколько они систематизированы и взаимоувязаны между собой, масштабируемость, безопасность, издержки сопровождения и интеграции - все это "прелести" наколенного учета.
Приступая к очередному проекту по реинжинирингу управленческой отчетности, мне хотелось перевести учет планов продаж, справочных данных, вспомогательных коэффициентов и т.п. на промышленную платформу. В декабре 2013г. на рабочей встрече в Microsoft Rus Иван Косяков порекомендовал посмотреть в сторону Master Data Services - серверная служба из состава Microsoft SQL Server 2012 Enterprise / BI Edition. Предыдущую версию MDS в составе MS SQL Server 2008R2 я исследовал двумя годами ранее, и, надо сказать, осталось слабое впечатление. В версии 2012 появилось несколько существенных улучшений. Сразу после Новогодних праздников, за несколько дней мною было разработано и внедрено решение по учету и расчету вознаграждений компаниям-контрагентам с применением службы Master Data Services 2012.
В данной задаче пользователи вводят параметры договоров, используя web-клиент или бесплатный Excel AddIn для Master Data Services. Данные сохраняются в базе данных, в подготовленной модели, проходят проверку на соответствие определенным бизнес-правилам (checks).
Валидированные данные тотчас же доступны для использования в расчетных процедурах. Уполномоченные пользователи имеют право запускать на выполнение серверную хранимую процедуру T-SQL (для этого используется небольшой макрос в Excel-файле). Хранимая процедура выбирает необходимые факты из витрины данных, подхватывает данные из Master Data Services, расчитывает суммы вознаграждений по договорам и результаты возвращает в тот же Excel-файл, который является также и готовым отчетом.
Возможные бизнес кейсы по использованию Master Data Services
- Собственно ведение мастер данных корпоративных справочников в заранее подготовленной, согласованной модели. Заинтересованные Бизнес-пользователи, обладающие компетенцией в своей предметной области, готовы выполнять функции Data Officer в привычной для себя экосистеме - MS Excel. И такие примеры есть;
- В продолжение п.1 - сопровождение перекодировочных таблиц, таблиц сопоставления данных, например, сопоставление произвольных / сокращенных / ошибочных наименований должностей клиентов из CRM-систем к унифицированным названиям должностей;
- Ввод, учет плановых показателей с целью последующего осуществления план-фактного анализа;
- Ведение метаданных, настроечных таблиц информационных систем;
- Использование бизнес-сущностей MDS в качестве буферных серверных таблиц, в которые пользователи могут легко загружать свои данные для последующей обработки, расчетов службой IT;
- Быстрое масштабирование Excel-файлов задач класса первичного учета: хранение данных на промышленном сервере MS SQL, совместная многопользовательская работа с данными.
Чего не хватает в MS Master Data Services 2012 / 2014
Административная часть, ядро системы
- - Создание описаний (длиной 500 - 1000 символов) не только к сущностям, но и атрибутам, бизнес-правилам; отображение описаний в клиентских приложениях: web-интерфейсе и Excel AddIn for MDS;
- - Возможность создания логических папок для разнесения сущностей по категориям. В модели, насчитывающей несколько сотен сущностей, трудно ориентироваться;
- - Необходима визуализация взаимосвязей сущностей между собой (особенно полезно для больших моделей), например, в виде ER-диаграммы, желательно интерактивной - по щелчку в контекстном меню переход к просмотру, редактированию данных или редактированию структуры;
- - Возможность создания доменных атрибутов, ссылающихся на сущности из другой модели;
- - Для доменных атрибутов - возможность указания совокупности атрибутов из родительских сущностей, значения которых должны отображаться в качестве заголовка. В версии MDS 2012 для доменного атрибута в фигурных скобках отображается только наименование {Name} ключевого атрибута непосредственно "старшей" сущности. (например, в сущности "Контрагент" для доменного атрибута "География" нужно видеть и название населенного пункта, и название региона и название страны. Вариант сбора в символьном коде конкатенации вида "Ханты-Мансийск_Тюменская_Россия" - накладно, да и названия могут изменяться, что чревато для ключей;
- - Возможность создания штатными средствами представлений (viewes) с включением дополнительных атрибутов из других связанных сущностей. Этого можно достичь, создав в SQL Management Studio свое view поверх базового view, но в этом случае контроль за валидным состоянием представления придется осуществлять самостоятельно;
- - Конструктор бизнес-правил должен быть более дружественным, например, как конструктор MDX-выражений в SQL Server Analysis Services, с возможностью написания выражения полностью вручную с последующей проверкой синтаксиса;
- - Необходимо дополнить встроенные функции - строковые, числовые, дата, преобразования (T-SQL functions in the business rules), например, REPLACE(), UPPER(), LOWER(), LTRIM(), RTRIM(), SUBSTR() - через правила-хранимые процедуры - это долгое решение; также не помешало бы наличие готовых шаблонов регулярных выражений - например, допускается ввод только цифр, проверка email;
- - Для бизнес-правил возможность задания уровня (число) серьезности ошибки, эти числа дожны быть видны в представлении-подписке; тогда подписчикам можно было бы более гибко обрабатывать записи, принимать решения о том, как использовать записи;
- - Возможность маскировать, скрывать содержание текстовых/доменных полей, например, для атрибутов персональных данных, атрибута "Password" вместо паролей в таблице Excel и web GUI показывать *******;
- - Возможность уведомления по Email при добавлении, изменении, удалении записей ответственных пользователей, список должен быть настраиваемым - не только отдельному доменному пользователю, локальной или доменной группе, но и нескольким доменным пользователям (мультиселект);
- - Возможность в бизнес-правилах оперирования данными из разных записей сущности, для реализации более сложных правил проверки (наподобие триггеров), например, сумма значений элементов атрибута "Убыток по региону" не более 10 млн. рублей;
- - Возможность создания правил для цветовой раскраски ячеек таблиц в зависимости от значений атрибутов (наподобие свойств BackColor, ForeColor в SQL Server Analysis Services);
- - Возможность задания для атрибутов не только системных наименований, но и бизнес-наименований = translation (длиной <=255 символов) и их отображение в заголовках столбцов в клиентских приложениях;
- - Необходима возможность более тонкой настройки прав доступа: раздельные права только на добавление, только на редактирование, только на удаление записей;
- - Возможность просмотра прав доступа как со стороны пользователей (кому что разрешно / запрещено), так и со стороны сущностей (что кому разрешно / запрещено);
- - В списке пользователей необхоимо отслеживать (можно по нажатию специальной кнопки) доменные логины, удаленные из Active Directory;
- - Возможность создания нескольких учетных записей с полномочиями администратора системы;
- - Возможность физического удаления записей (hard delete) из конкретной сущности (таблицы базы данных) через интерфейсы web и Excel, при наличии у пользователя соответствующих полномочий;
- - В целях быстрого создания сущности: создание сущности на основе существующей сущности (клонирование) вместе с бизнес-правилами, чтобы в клонированной сущности уже добавлять/изменять атрибуты;
- - Возможность создания в интерактивном режиме пакетов распространения моделей вместе с данными. В версии MDS 2012 с помощью Wizard можно создавать только пакеты распространения, содержащие только структуры моделей, без данных. Создание пакетов распространения с включением данных модели возможно только через утилиту командной строки: C:\Program Files\Microsoft SQL Server\120\Master Data Services\Configuration\MDSModelDeploy.exe;
- - Создание пакетов распространения почему-то не подразумевает копирование-перенос описаний (Descriptions) сущностей, атрибутов;
- - Необходим функционал по сопоставлению структур моделей, возможность быстрого копирования сущностей, атрибутов, бизнес-правил, представлений подписки из одной модели в другую;
- Необходим функционал по сопоставлению, выявлению различий в данных, хранящихся в сущностях разных моделей;
- - Как показала практика, с точки зрения обеспечения производительности представления подписки необходимо материализовывать - данные нормативно-справочных сущностей приземлять в обычные таблицы, к которым предоставлять доступ подписчикам для использования данных в прикладных задачах.
Web-клиент
Необходима большая функциональность элемента управления табличной части (как в интерфейсе пользователей, так и разделе администрирования):
- - управление видимостью, размерами отдельных столбцов;
- - "заморозка" отдельных строк (как предусмотрели возможность заморозки столбцов!); при вводе данных в другие записи иногда полезно смотреть, опираться на зафиксированные записи;
- - сохранение на сервере всех персональных настроек табличной части (ширина, порядок колонок, сортировка, количества строк на странице). Функциональность современных web-интерфейсов (GUI) обеспечивает пользователям комфортную работу, например, см. Infragistics Web Grid;
- - необходимы текстовые поля для быстрых фильтров (сверху над заголовками полей), должна быть фильтрация записей в одно касание);
- - возможность прямого ввода значений для доменных атрибутов (direct code entry for the domain attribute), например, проще, быстрее ввести ИНН, чем выбор юридического лица из модального окна;
- - создание новой строки на основе имеющейся: дублирование текущей строки для последующего редактирования значений отдельных полей. Это позволяет ускорить ввод данных;
Отсутствует кнопка "Обновить" (Refresh), чтобы перезапросить данные с сервера; Замена Silverlight на HTML5 и jQuery, т.к. в рамках корпоративной интрасети не всегда разрешена установка библиотеки Silverlight.
Excel AddIn for MDS
- - В Excel AddIn for MDS версии 2012 для доменного атрибута возможен либо прямой ввод значения кода (code) либо выбор из выпадающего списка (combobox), что не комфортно при количестве элементов более 100 и возмутительно при количестве элементов свыше 500. Необходима возможность выбора значения из модального окна + быстрые фильтры. Например, быстрые фильтры - это TextBox-ы над заголовком каждого поля для поиска по вхождению;
- - Скорость извлечения данных с сервера - 50+ тыс. записей, на мой взгляд, могла бы быть выше;
- - Скорость публикации данных на сервере также могла бы быть выше;
- - При публикации данных на MDS-сервер необходимо выключать обычные Excel-штатные фильтры столбцов, так как можно получить ошибку; ошибка плавающая, не всегда воспроизводимая;
- - Были случаи, когда для доменного атрибута после успешного сохранения данных на сервере и выполнения команды "Обновить" (Refresh) либо совсем ничего не показывалось (скорее сбой, глюк внутри файла Excel), либо показываются только значения code без значений {name}. Ситуация проявлялась на разных машинах при количестве записей в "родительской" сущности ~ 24-30 тыс. записей. Случаи подтверждаются в версии 2012, 2014;
- - Как в Excel AddIn, так и в web-клиенте фильтр запроса данных с сервера некорректно интерпретирует значение даты. Так, дата 30 мая 2014г. не воспринимается ни в виде 30.05.2014, ни в виде 05.30.2014;
- - Данный плагин очищает буфер обмена данных (Clipboard), что не есть хорошо;
- - Было бы удобнее, если бы в случае ошибок применения бизнес-правил, в отдельных столбцах показывался не только статус проверки, но собственно сообщение об ошибке (сейчас сообщение об ошибке показывается только как всплывающая подсказка, примечание (ToolTipText);
- - После применения команды "Фильтр" для отбора записей с сервера таблица в листе Excel перемещается снова в первую строку так, что, если ранее выше строки заголовков были вставлены строки для бизнес-заголовков, шапки и т.п., эти строки будут потеряны (break the layout of the sheet);
- - Возможность запоминания настроенного формата ячеек: в Excel AddIn for MDS версий 2012, 2014 при обновлении данных с сервера настройки Excel-форматирования ячеек слетают (игнорируются);
- - Возможность просмотра, изменения иерархий;
- - Возможность администрирования бизнес-правил;
- - Возможность связывания в Excel двух таблиц, которые в MDS связаны по доменному атрибуту; например, на листе сущность "Регионы" и на этом же листе правее - подчиненная сущность "Города"; при перемещении по таблице "Регионы" в таблице "Города" показываются только города текущего региона;
- - Как в Excel так и в Web-клиенте показывать прямо в таблице показывать поля: - кто создал запись (логин и ФИО пользователя); - когда была создана запись (дата время); - кто последним редактировал запись (логин и ФИО пользователя); - когда было последнее изменеие записи (дата время);
- - Возможность отправки изменений на сервер в пакетном режиме по принципу всё или ничего: либо все модифицированные/ новые записи успешно сохраняются на сервере либо ни одно изменение не сохраняется (откат транзакции);
- - Excel AddIn for MDS включить в базовую инсталляцию Excel (возможно, после установки плагин может быть выключен) - внутри большой компании это избавляет от необходимости каждому пользователю оформлять заявки на установку плагина
Ресурсы по MS Master Data Services
Официальные ресурсы: Microsoft TechNet - Master Data Services 2016 MSDN - Master Data Services 2014 Блог Master Data Services Ресурс Microsoft, посвященный Master Data Services" Видео презентации Ивана Косякова, посвященные Microsoft Master Data Services: MDS в Denali Совместное использование SQL Server 2012 DQS, MDS и IS Бизнес-правила, статусы, журнал в MDS SQL Server 2008R2 Еще несколько видео роликов по Microsoft Master Data Services: Что нового в MDS 2016 Видео ролики от Microsoft по теме SQL Server 2012 Master Data Services New Features in Microsoft SQL Server 2012 Master Data Services SQL Server 2012 EIM Demo Part 3 - MDS Excel Add-In SQL Server 2012 EIM Demo Part 4 - MDS and SSIS Развитие
Ничто не стоит на месте, всё течёт и изменяется. С момента публикации данной статьи произошли некоторые изменения: 05 января 2015г. была выпущена версия 12.0.2468.0 плагина Microsoft SQL Server 2014 Master Data Services для Microsoft Excel, которая в 4 раза быстрее (4-x faster) извлекает данные с сервера MDS в таблицу Excel. Это достигается за счет:
- 4-х параллельных потоков загрузки данных (4 parallel threads of data load);
- поддержки сжатия данных;
- отказа от запросов лишних метаданных.
Также разработчики из Microsoft обещают дальнейшее развитие, улучшения Master Data Services. Уже заявлены полезные дорабтки в следующей версии MS SQL Server 2016, в частности:
- + Возможность ссылаться на сущности другой модели;
- + Возможность создания пользовательских бизнес-правил - программируемых SQL функций;
- + Возможность создания для сущности некластерного индекса по одному атрибуту или списку атрибутов (составной индекс) с целью повышения производительности запросов;
- + Возможность разделение прав доступа пользователей на добавление, редактирование, удаление записей;
- + Возможность просматривать и управлять историей изменений как по сущности, так и по элементам; если пользователь имеет право на редактирование, то сможет выполнить откат к предыдущей версии элемента;
- + Возможность использования наборов изменений: если для измененных данных сущности требуется одобрение, их можно будет сохранить как ожидающие изменения в наборе изменений и отправить на утверждение администратору;
- + Возможность получения уведомлений по электронной почте при каждом изменении состояния набора изменений сущности, который требует утверждения; + Возможность полного удаления (purge) записей в указнной сущности, помеченных как удаленные (soft-deleted) и потому не видимых в Web-интерфейсе / Excel AddIn;
- + В Web-интерфейсе появится возможность создания новой строки на основе имеющейся;
- + В Excel AddIn for MDS будет доступно администрирование бизнес-правил.
Похоже, в Microsoft команда разработки Master Data Services набрала существенные обороты по доработке продукта. Так, 27.01.2016г. через Microsoft Connect я дал обратную связь о необходимости реализации партиционирования таблиц, а 11.03.2016г. получил ответ: "Table partitioning has been implemented in SQL Server 2016 release for MDS to improve performance. You can download the latest public release and try it out.". Такой вектор и темп развития MDS очень кстати, посколько согласно Приложению 3 к Положению №483-П от 06.08.2015 Банк России выставляет серьезные требования к качеству данных, используемых банками.
Пример внедрения MS Master Data Services
Крупнейший частный универсальный Банк, ТОП-7. В Розничном Блоке введен в промышленную эксплуатацию справочник торговых точек (POS) потребительского кредитования на базе серверной службы Microsoft Master Data Services 2012. Справочник является неотъемлемой частью системы аналитической отчетности и источником данных для базовых систем Банка.
Ниже перечислены основные профиты от внедрения Microsoft MDS
- Обеспечение качества данных за счет настраиваемых бизнес-правил проверки, ссылочной целостности данных на уровне серверной службы (доменных атрибутов), а, следовательно, повышение и обеспечение качества операционной деятельности и аналитической отчетности;
- Многопользовательский режим работы как в привычной среде через бесплатную Excel-надстройку, так и через web-интерфейс;
- Легкая интеграция для потребителей данных из других подразделений (в том числе региональных), доступность данных: подписчики могут получать почти on-line (данные актуализируются в интерфейсной таблице каждый час в рабочее время);
- Масштабируемость решения: обеспечение работоспособности по мере роста объема данных;
- Надежность хранения данных: в частности, штатными средствами MSSQL выполняется автоматическое создание резервных копий базы данных MDS;
- Обеспечение безопасности данных: разграничение доступа к сущностям и атрибутам осуществляется по доменным учетным записям на уровне сервера;
Какие работы были проведены:
- Проанализированы данные бывшего Excel-справочника POS, поля формализованы в логическую 3NF структуру нового справочника, в результате чего из плоской структуры были выделены не менее 7 базовых сущностей;
- Разработана физическая структура: созданы сущности в MDS;
- Сформулирована логика проверки данных и реализована в виде правил-ограничений штатными средствами MDS;
- Парсинг, довосполнение, устранение критичных ошибок в данных, которые накопились за 7 лет эксплуатации имевшегося справочника;
- Разработаны отчеты, в том числе для обратной совместимости, для поддержки существующих технологических процессов;
- Созданы интерфейсы (views) для потребителей данных других подразделений;
- Проведено обучение сотрудников;
- Осуществлена полная миграция данных, которая выполнялась в несколько итераций; приостановка деятельности отдела по вводу новых данных была только на 1 день;
- Дана обратная связь в Microsoft: пожелания по доработке/ развитию MDS, некоторые из которых взяты в работу.
Стоимость лицензий = 0 рублей, поскольку MDS является одной из служб MS SQL Server 2012 EE, который используется в Банке. Все работы были выполнены внутренними силами бизнес-подразделения, без отрыва от основной деятельности.
Эксплуатация осуществляется на ежедневной основе, количество операторов - 11 человек (в 2017г. - уже свыше 100 человек). Общее количество нормативно-справочных таблиц для аналитической OLAP и мотивационной отчетности потребительского кредитования свыше 100, зарегистрированных активных бизнес-пользователей (data officer) ~ 60 сотрудников (в 2017г. - уже свыше 130 сотрудников), в том числе из региональных подразделений.