Процесс mds. Master Data Services для управления НСИ. Доработка многомерной модели данных

25.03.2024 Ошибки 

Последнее обновление: 28.04.2014

SQL Server Master Data Services – это компонент продукта SQL Server, предназначенный для управления нормативно-справочной информацией (НСИ).

Проблемы с НСИ

Проблемы с нормативно-справочной информацией организаций связаны с наличием в этих организациях большого количества систем, в каждой из которых отдельно могут редактироваться общие для этих систем справочники организации.

Рис. 1. Системы организации и хранилище данных

Можно выделить две основных причины проблем при работе с нормативно-справочной информацией.

Первая состоит в том, что нет единого авторитетного источника нормативно-справочной информации, наблюдаются несоответствия справочников в различных системах организации, а некоторые элементы справочников управляются одновременно несколькими сотрудниками без какого-либо согласованного процесса.

Например, если клиент сменил место жительства, информация о нем в справочнике клиентов может оперативно обновляться в одной системе, а в остальных – с задержкой по времени.

Другой пример, наименования одного и того же продукта в различных филиалах могут отличаться.

Вторая причина связана с тем, что в организациях нет систем, позволяющих сотрудникам совместно и в соответствии с утвержденным регламентом управлять мета-данными. Нет функций управления измерениями и атрибутами. Нет возможности управления мета-информацией через Интернет с использованием веб-браузера.

В результате полученных несоответствий справочников возникают ошибки при работе в системах и ошибки в отчетах организации.

Процесс управления иерархиями; изменения в BI-решение

База данных Master Data Services используется для хранения нормативно-справочной информации.

Процесс управления иерархиями построен следующим образом.

Рис. 2. Управление метаданными

  1. Администратор системы перед началом ее использования определяет модели, сущности, атрибуты и иерархии.
  2. При необходимости элементы сущностей, атрибуты и иерархии могут быть созданы на основании данных из существующих систем организации. Загрузку можно осуществить, например, с использованием пакета интеграции SQL Server Integration Services.
  3. Пользователи, подключенные к Интернету или интранету, могут вносить изменения в справочники, на которые у них есть права доступа.
  4. В результате созданные измерения загружаются в хранилище данных и используются для формирования аналитических кубов. Загрузка измерений, как правило, производится с использованием Сервисов интеграции SQL Server.
  5. Созданные в системе справочники также могут загружаться в другие системы организации.

Таким образом, сервисы мета-данных SQL Server вносят изменение в структуру BI-решения. Управление измерениями производится в Master Data Services, соответственно, измерения грузятся в хранилище данных из этой системы. Показатели, как и ранее, загружаются в хранилище данных из соответствующих источников данных организации.

История Microsoft SQL Server Master Data Services

В июне 2007 года компания Microsoft приобрела вендора MDM под названием Stratature.

Затем в приобретенное решение команда разработки Microsoft:

  • добавила веб-сервис Windows Communication Foundation;
  • оптимизировала код и структуру базы данных;
  • добавила функцию размещения моделей;
  • улучшила систему безопасности;
  • добавила API, покрывающий все функции MDS и поддерживающий как блоковые, так и ориентированные на сообщения функции;
  • переписала пользовательский интерфейс, который сейчас реализован через MDS API (вместо того, чтобы работать напрямую через базу данных и хранимые процедуры).

В августе 2009 года компонент Master Data Services включен в состав SQL Server 2008 R2 в составе CTP2.

Предназначение MDS

Предназначение Master Data Services – приведение в соответствие справочников в системах организации благодаря созданию авторитетного источника – шины мета-данных .

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

  • интерфейс управления через веб-браузер и надстройка MDS для Excel позволяют вовлечь необходимых сотрудников в процесс управления сущностями и иерархиями;
  • программный интерфейс (MDS API) позволяет настроить управление мета-данными из внешних систем;
  • функции управления версиями, нотификации и бизнес-правила позволяют наиболее простым способом настроить гибкий процесс обеспечения корректности мета-данных;
  • функция размещения модели позволяет экспортировать созданную модель из системы разработки и опубликовать ее в эксплуатируемой системе MDS.

В результате использования функций управления атрибутами и иерархиями в организации обеспечивается наличие качественных и непротиворечивых мета-данных, построенных в виде, требуемом для экспорта в соответствующие системы организации.

Базовые понятия MDS

Базовые понятия, которыми оперирует Master Data Services, приведены на рис. 4.

Рис. 4. Базовые понятия, которыми оперирует Master Data Services

Модель измерения (Dimension Model) – содержит в себе сущности, атрибуты, элементы сущностей и различные варианты иерархий для экспорта в соответствующие системы.

Сущность (Entity) является контейнером набора элементов. Примером сущности для ритейла является продаваемый «Продукт».

Элемент (Member) – это лист, консолидированный элемент или элемент коллекции. Примеры элементов для сущности «Продукт»: велосипеды, горные велосипеды, модель горного велосипеда…

Атрибут – это характеристика элемента. Например, все элементы модели «Продукт» имеют атрибут «Цвет», а конкретный велосипед может иметь значение атрибута – синий. Атрибуты могут быть основаны на определенной ранее сущности (domain based) , произвольными (free- form) , в виде файла (file) . Можно настраивать отображение атрибутов на разных закладках с именами (attribute groups ).

Иерархия (Hierarchy) – это структура, представляющая элементы сущности с помощью консолидированных элементов и уровней для обеспечения удобства анализа данных. Иерархию могут формировать сущности, сформированные по уровням (например, категория продуктов, подкатегория продуктов, модель продукта). Иерархию также можно построить на основании связей типа «родитель-потомок» (или Parent-child).

Примеры моделей :

  • Модель структуры данных для управления персоналом (статья в разработке)

Создание модели

Для работы с MDS необходимо сначала создать соответствующие модели, затем создаться сущности, определить необходимые атрибуты для сущностей, определить структуру измерений и так далее. Эти действия производятся администратором или редактором соответствующей модели в административной части веб-приложения «Master Data Manager».

Альтернативный вариант, появившийся в SQL Server 2012 — создание модели с помощью надстройки MDS для Excel. В этом случае необходимые справочники (сущности) можно предварительно подготовить на рабочих листах обычного файла Excel в виде таблиц, а потом с помощью надстройки импортировать эту информацию в MDS. При этом можно использовать возможность автоматического создания справочников на основании имеющихся записей в колонках таблиц.

Импорт

После того, как модель, сущности и структура иерархий созданы, элементы измерений, значения атрибутов и иерархии можно сформировать на основании данных из источников данных. Для SQL Server 2008 R2 этот процесс изображен на рис. 5.

Рис. 5. Импорт данных из источников данных в базу MDS

Сначала данные из источника необходимо загрузить в промежуточную область базы MDS. Преобразование данных из источника к виду таблиц промежуточной области можно осуществить с использованием скрипта T-SQL или пакета SQL Server Integration Services. Когда записи из источника загружены в промежуточную область, из интерфейса Master Data Manager необходимо запустить команду загрузки в определенную модель определенной версии.

Как правило, импорт данных из источника нужно делать для первоначального заполнения справочников.

Замечание. В случае использования SQL Server 2012 для каждой сущности создается отдельная таблица соответствующей структуры, что значительно облегчает настройку интеграционных пакетов и ускоряет загрузку данных.

Редактирование иерархий

После того, как импорт осуществлен, пользователи могут редактировать загруженные в систему элементы и менять вид иерархий (рис. 6).

Рис. 6. Изменение структуры иерархий

Демонстрация: Импорт мета-информации, редактирование справочника и иерархии

Управление версиями и задание бизнес-правил

Рассмотрим объекты MDS, позволяющие настраивать сложный процесс управления мета-информацией, основанный на событиях.

Одним из этих объектов являются версии моделей , которые содержат в себе определенную версию всех объектов модели (элементов, значений атрибутов, элементов иерархий, коллекций). Другим объектом являются бизнес-правила , которые применяются ко всем открытым версиям.

Процесс управления версиями изображен на рис. 7.

Рис. 7. Процесс управления версиями

Сначала администратор копирует версию, чтобы открыть ее для изменений. Пользователи начинают вносить изменения в открытую версию. Затем, когда необходимые изменения внесены, администратор закрывает версию. После этого изменения в версию могут вносить только администратор и пользователи с правами изменения модели. Перед утверждением модели администратор должен добиться выполнения всех бизнес-правил. Когда модель полностью готова для использования в подписанных системах организации, администратор утверждает версию, после чего ее уже нельзя менять, но можно копировать. Затем при необходимости весь цикл может повториться.

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

Для версии можно осуществлять ревизию осуществленных с ней транзакций (операций) и анализировать соответствие версии требованиям бизнес-правил .

Бизнес-правила и нотификации

Бизнес-правила позволяют проверить корректность той или иной версии модели, задать значения по умолчанию, разослать нотификации, если требуется внесение корректировок в мета-информацию.

Бизнес-правила содержат критерий оценки – логическое условие проверки. Если это условие не выполняется, система инициирует выполнение соответствующего действия.

Действия могут быть четырех типов.

  1. «Default value»задают значение того или иного атрибута по умолчанию (при создании элемента справочника).
  2. «Change value» — устанавливают определенное значение по результатам проверки.
  3. «Validation» — в случае невыполнения условия рассылают сообщение адресатам, имеющим права на элемент, для которого задано бизнес-правило.
  4. «External action» — запускают бизнес -процесс SharePoint .

Бизнес-правила применяются после добавления, удаления, перемещения в иерархии элементов справочников, в случае инициации поверки определенного пользователем набора элементов, в случае проверки версии в целом.

Интерфейс создания бизнес-правила в веб-приложении Master Data Manager приведен на рис. 8.

Рис. 8. Создание бизнес-правила

Процесс управления

В результате совместного использования версий и бизнес-правил можно выстроить сложный процесс управления мета-данными, основанный на событиях . Пример процесcа приведен на рис. 9.

Рис. 9. Пример процесса управления мета-данными

Процесс управления мета-данными для конкретного элемента может состоять из следующих шагов.

  1. Сначала элементы создаются путем импорта из внешних систем, либо пользователи создают новые элементы.
  2. Затем в результате проверок задаются значения по умолчанию, а также рассылаются нотификации пользователям, которые ответственны за создание и обеспечение корректности значений тех или иных атрибутов.
  3. После того, как требуемые значения атрибутов заполнены в результате выполнения соответствующего бизнес-правила, соответствующему сотруднику высылается запрос на утверждение элемента.
  4. После выполнения всех бизнес-правил элемент можно загружать во внешнюю систему с использованием пакета интеграции.

Все изменения элементов справочников и перемещения элементов в иерархиях отражаются в журнале транзакций, который можно также посмотреть в интерфейсе Master Data Manager (рис. 10).

Рис. 10. Просмотр журнала изменений мета-данных

Демонстрация: создание бизнес-правила, изменение статуса версии, просмотр журнала

Для экспорта мета-данных из базы MDS во внешние системы необходимо создать так называемую подписку, в результате чего в базе данных MDS будет создано представление (или View) SQL Server, выдающее в результате выполнения соответствующий список элементов. Далее экспорт данных из этого представления можно производить стандартным способом с использованием SQL Server Integrations Services.

Рис. 11. Экспорт мета-данных из базы MDS во внешние системы

Демонстрация: Создание подписки для экспорта мета-данных во внешнюю систему

Безопасность

Для предоставления доступа к веб-приложению «Master Data Manager» в нем необходимо добавить существующие группы или пользователей, которые могут быть из домена Active Directory. В программе можно создавать доменные группы и добавлять к ним пользователей. Затем в веб-приложении «Master Data Manager» можно задать права для групп и пользователей.

Когда пользователь открывает «Master Data Manager» в веб-браузере, он автоматически входит под своей учетной записью в Active Directory.

Права можно раздавать на следующие объекты:

  • функции системы , такие как управление версиями, управление безопасностью, функции интеграции, администрирование и формирование отчетов.
  • конкретные объекты модели , такие как иерархии и сущности.
  • конкретные элементы .

Классы для веб-сервисов

В MDS также реализован программный интерфейс, позволяющий управлять всеми объектами решения. Ниже приведены некоторые методы интерфейса IService:

  • Annotations Delete/Update
  • BusinessRules Clone/Create/Delete/Get/PaletteSet/Publish/Update
  • EntityMembers Copy/Create/Delete/Get/Merge/Update
  • ExportView Create/Delete/ListGet/Update
  • HierarchyMembers Get
  • Metadata Clone/Create/Delete/Get/Update
  • ModelMembers BulkDelete/BulkMerge/BulkUpdate/Get
  • SecurityPrivileges Clone/Create/Delete/Get
  • Staging Clear/Get/Process
  • Validation Get/Process
  • Version Copy

Видно, что интерфейс позволяет управлять всеми объектами системы, такими как комментарии к записям, бизнес-правила, сущности, подписки, иерархии, модели, элементы модели, права доступа, промежуточная область и версии. Таким образом, функции MDS можно интегрировать в любую систему организации незаметно для пользователей.

– это встроенная поисковая система, которая позволяет найти почти всё, что Вы используете под своей учётной записью. Для этого индексирует все носители, подключённые к Вашему Маку. В некоторых случаях в меню постоянно отображается строка прогресса, указывающая на то, что система индексирует жёсткий диск. В этом случае в окне Activity Monitor можно найти процессы «mds» и «md-worker», которые используют большое количество ресурсов CPU.

может повторно индексировать жёсткий диск после крупных обновлений системы, восстановления из резервной копии или после критических ошибок, таких как kernel panic или зависаний, устранённых принудительной перезагрузкой. Это стандартные случаи, при которых индексация должна запускаться и, поскольку это довольно длительный процесс, может занять несколько часов. Однако, если Вы обнаружите повышенную активность процессов «mds» и «md-worker» и постоянно проводящуюся индексацию, то стоит уделить этой проблеме внимание.

Для начала попробуйте очистить индексы вручную. Есть два способа это сделать.

Список конфиденциальности Spotlight.

Выберите Spotlight в Системных настройках и откройте вкладку Конфиденциальность. Дальше перетащите все свои носители в список и сразу удалите их из него. Это вынудит систему удалить индексацию носителей и затем создать её, после удаления этих носителей из списка.

Терминал

Для существует несколько команд в Терминале , которые можно использовать для удаления и повторного проведения индексации вашей системы. Чтобы это сделать, откройте Терминал и последовательно введите три команды:

mdutil -Ea
mdutil -ai off
mdutil -ai on

Первая команда удалит индексацию всех томов в системе, вторая – отключит функцию индексации, а третья – включит её обратно. Подождите пока процесс завершится и проверьте, осталась ли проблема.

Следует учесть, что индексация диска – процесс длительный и может занять несколько часов, и определить решена ли проблема до завершения процесса нельзя.

Если описанные выше способы не дали положительного результата, то стоит проверить жёсткий диск. Ошибки файловой системы могут вызвать проблемы с доступом к данным и их обработкой, что, в свою очередь, может заставить Spotlight постоянно проводить индексацию. Проверьте, есть ли у Вас полная резервная копия Вашей системы (если нет, то обязательно создайте её), а затем используйте Дисковую утилиту для проверки и исправления дисков.

  1. Запустите Дисковую утилиту .
  2. С зажатой клавишей ⌘Command выберите все подключенные к вашему компьютеру диски.
  3. Во вкладке Первая помощь нажмите Проверить диск

Если в процессе проверки будут выявлены ошибки, нажмите Исправить диск. Если же ошибка возникла на загрузочном разделе, то исправить её стоит, загрузившись из раздела восстановления. Чтобы загрузиться из раздела восстановления, выключите компьютер, а затем включите его, зажав сочетание клавиш ⌘Command + R.

Традиционное спасибо Кристоферу Кесслеру за оригинальную .

Похожих постов не обнаружено

When your Mac is running very slowly and there is no obvious cause, the problem could be because of mdworker and mds processes in OS X. Here is the solution you need to reclaim your Mac’s speed.

This is a worked example of the sort of thing than can go wrong with your Mac and how to solve the problem. An hour ago My Mac stopped working, but now it is back to normal. Want to know how I did it? read on. (Affiliate links in this article.)

The problem was that the Mac was running slowly. It wasn’t bad, but it was a bit annoying watching the spinning beach ball where the mouse should be.

Then it almost stopped completely. The Mac was barely usable and switching from one window to another took 30 seconds. Click a menu and it would not appear until 20 seconds later. Click a button and nothing would happen for 20 or 30 seconds. It was like swimming through through treacle.

It was almost, but not quite impossible to use the Mac. It just took forever to do anything, no matter how simple. When this happens, you need to run Activity Monitor in the Applications/Utilities folder.

It took some time to quit a few apps, close a couple of windows, and get Activity Monitor open because the Mac had almost stopped responding, but eventually it opened.

Issues with mdworker and mds process

The problem could be seen on the Memory tab and mdworker was using 2.23 GB of memory, 1.72 GB of swap file was used, there was 2.33 GB of compressed memory, and the memory pressure chart was completely red.

A red memory pressure chart means there is no memory left to do anything and the Mac gets really bogged down swapping memory out to disk, compressing it, and juggling it around.

The mdworker process is used by Spotlight and _spotlight can be seen in in the User column in Activity Monitor. In addition to the 2.23 GB at the top, further down were several more mdworker processes using 37 - 45 MB. Also there are mds processes that are also related to mdworker and these were also using memory.

It was all way too much for a 4 GB MacBook Pro.

The problem may have been exacerbated by plugging in two USB disks and a USB flash memory stick. Spotlight just went crazy trying to index everything and the Mac ground to a halt.

Stop Spotlight

The solution, although not a perfect one, is to turn off Spotlight because Spotlight runs the mdworker process to index the contents of disk drives.

Go to System Preferences and open Spotlight . Select the Privacy tab. Click the plus button at the bottom and add each of your disk drives and partitions.

This tells Spotlight not to index any of the disk drives or partitions. It causes mdworker to stop what it is doing and to discard any indexing that was taking place and the index it had already created.

Check Activity Monitor

Now mdworker is no longer using the huge amount of memory it required previously. There an mds process, but that’s only 61.5 MB. The memory pressure chart has turned green indicating that there are no longer any memory problems, the swap file and compressed memory usage is a fraction of what it was.

Adding all the disks to the Privacy tab does not stop Spotlight completely because there are many different components, including web searches, dictionary definitions and so on. What you won’t see are any files or apps in the search results. When Spotlight indexing is stopped, you can’t search for files. Open Finder and if it is set to show all your files by default, it will be empty. It seems that the results come from Spotlight, which is disabled.

Now that the Spotlight file index no longer exists, you may find that removing the disks, or at least the internal boot disk, from the Privacy tab in Spotlight System Preferences causes mdworker to act normally again.

Spotlight will index the disk contents once again and rebuild a brand new index. This will impact performance of the Mac a bit, but it should never be so bad you can’t use it, as was the case with my MacBook. When Spotlight has finished indexing the disk, mdworker will quieten down and Spotlight searches will work again.

Alternatively, you could leave Spotlight disabled with all the disks on the privacy tab and use some other search tool.

(MDS) в MS SQL Server 2012. До недавнего времени я был знаком с этим продуктом, входящим в состав MS SQL Server 2012 (Business Intelligence and Enterprise editions), только в теории и ждал удачного случая, чтобы проверить его на практике, и вот такой случай представился.

Вводные данные

Мой клиент использует BI-решение на базе Microsoft SQL Server 2012 Business Intelligence Edition. Центром этой BI-системы является хранилище данных (Data Warehouse), которое наполняется с помощью SSIS-пакетов из транзакционных систем (OLTP). Хранилище данных, в свою очередь, служит источником для многомерной модели данных (Multidimensional Data Model). На основе многомерной модели данных аналитики заказчика формируют отчетность в Excel, используя сводные таблицы (Pivot Tables). Поскольку источников данных много, и пользователи транзакционных систем управляют справочниками хаотично, заказчик обозначил потребность в решении, которое позволяло бы создать в хранилище данных иерархии для некоторых измерений, которые были бы удобны для целей аналитического анализа. Так, например, информация об организационной структуре компании, хранящаяся в измерении «Подразделения» (таблица dbo.dimDivisions), импортируемая из OLTP-систем, удобна для оперативных отчетов, формируемых в OLTP-системах, но не подходит для целей анализа в BI-системе.

Требования бизнеса

Формальные требования бизнес-заказчика можно кратко описать следующим образом:
  • Разработать инструмент, позволяющий управлять данными о подразделениях компании для целей аналитической отчетности.
  • Использовать новые данные о подразделения в существующем BI-решений.
  • Изменения не должны повлиять на работу OLTP-систем.

Предварительная оценка и выбор решения

На основании имеющихся вводных данных и бизнес-требований заказчику было предложено следующее решение:
  • Добавить в хранилище данных дополнительное измерение для хранения данных об орг. структуре для целей аналитической отчетности.
  • Обеспечить связь между записями нового измерения и измерения «Сотрудники».
  • Изменить многомерную модель данных с учетом изменения структуры хранилища данных.
  • Выполнить настройку Master Data Services. Под настройкой понимается создание возможности ввода и редактирования данных о сотрудниках и подразделениях вручную, а так же настройка, необходимая для импорта/экспорта данных в/из MSD.
  • Обеспечить автоматический импорт данных о новых сотрудниках из хранилища данных в Master Data Services.
  • Обеспечить автоматический экспорт данных о подразделениях и принадлежности сотрудников к подразделениям сотрудниках из Master Data Services в хранилище данных.

Реализация решения

Доработка хранилища данных
Итак, поехали по-порядку. Сначала создадим в хранилище данных новое измерение «Произвольные подразделения» (dbo.dimDerivedDivisions) и свяжем его с измерением «Сотрудники» (dbo.dimEmploees). SQL-скрипт для этой задачи выглядит следующим образом:

Создадим новое измерение "Произвольные подразделения" CREATE TABLE dbo.dimDerivedDivisions (id int NOT NULL primary key identity(1, 1), parentId int NULL, sourceCode int NOT NULL, sourceParentCode int NULL, name nvarchar(100) NOT NULL DEFAULT ("N/A"), lineageDate datetime DEFAULT GETDATE(), lineageSource nvarchar(255) NOT NULL DEFAULT ("")); --Определим внешний ключ для parentId, ссылающийся на dbo.dimDerivedDivisions(id) для обеспечения иерархии родитель-потомок ALTER TABLE dbo.dimDerivedDivisions ADD CONSTRAINT fk_dbo_dimDerivedDivisions_dbo_dimDerivedDivisions FOREIGN KEY (parentId) REFERENCES dbo.dimDerivedDivisions(id); --В новое измерение добавим значение по умолчанию, на которое будут ссылаться не распределенные сотрудники SET IDENTITY_INSERT dbo.dimDerivedDivisions ON; INSERT INTO dbo.dimDerivedDivisions (id, parentId, sourceCode, sourceParentCode, name, lineageDate, lineageSource) SELECT 0, NULL, 0, NULL, "N/A", GETDATE(), "Запись введена вручную" WHERE NOT EXISTS (SELECT id FROM dbo.dimDerivedDivisions WHERE id = 0); SET IDENTITY_INSERT dbo.dimDerivedDivisions OFF; --Добавим новую колонку в измерение "Сотрудники" ALTER TABLE dbo.dimEmployees ADD derivedDivisionId int NOT NULL DEFAULT(0); --Определим внешний ключ, ссылающийся на dbo.dimDerivedDivisions(id) ALTER TABLE dbo.dimEmployees ADD CONSTRAINT fk_dbo_dimEmployees_dbo_dimDerivedDivisions FOREIGN KEY (derivedDivisionId) REFERENCES dbo.dimDerivedDivisions(id);

Доработка многомерной модели данных
Теперь добавим новое измерение в многомерную модель данных. Для этого откроем проект многомерной модели данных в SQL Server Data Tools и добавим новую таблицу dbo.dimDerivedDivisions в Data Source View. Результат выглядит следующим образом:

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

Настройка Master Data Services
Теперь все структуры данных для подготовки аналитической отчетности в разрезе нового измерения «Произвольные измерения» готовы, приступаем к самому главному - к настройке Master Data Services. Для этого в браузере переходим по ссылке, которую дал нам SQL Server Administrator, и попадаем в web-интерфейс MDS, который выглядит следующим образом:

Я не буду описывать здесь установку Master Data Services, так как это рутинная задача подробно описана на msdn.microsoft.com . Сосредоточимся лучше на реальной практике использования MDS.

Итак, первое, что нам необходимо сделать - это создать модель. Моделью в MDS называется логический контейнер, который содержит в себе сущности определенной бизнес-области. В нашем случае уместно создать модель «Сотрудники», содержащую сущности «Сотрудники» и «Подразделения». Для создания модели перейдем в web-интерфейсе Master Data Services в Administrative Tasks по ссылке System Administration. В открывшемся окне введем название модели Employees и нажмем кнопку Save model:

При установленном флажке Create entity with same name as model автоматически вместе с моделью будет создана одноименная сущность Employees. Далее создадим еще одну сущность «Подразделения» (Divisions), для этого выберем модель Employees и перейдем в меню Manage - Entities:

Нажмем на кнопку Add entity:

В открывшемся диалоге заполним параметры новой сущности и нажмем кнопку Save entity. Обратите внимание, что при создании сущности «Подразделения» был установлен флажок Enable explicit hierarchies and collections (это означает, что для сущности появится возможность создания иерархии), и ниже укажем название иерархии Divisions. Явная иерархия (Explicit Hierarchy) - это иерархия, члены которой могут быть организованы любым образом, т.е. на каждом уровне иерархии может быть любое любое количество членов и следующих уровней вложенности:

После того, как сущности созданы, необходимо настроить атрибуты сущностей. Для сущности «Сотрудники» (Employees) добавим атрибут «Подразделение» (Division). Выберем сущность Employees и нажмем кнопку Edit selected entity:

В открывшейся форме редактирования сущности нажмем на кнопку Add leaf attribute для того, чтобы добавить атрибут «Подразделение» конечного элемента сущности «Сотрудники»:

В открывшейся форме добавления атрибута, заполним наименование атрибута и установим переключатель типа атрибута в положение Domain-based. Это означает, что значения данного атрибута будут принадлежать определенной сущности, и ниже укажем какой именно, в нашем случае это сущность «Подразделения» (Divisions). В конце нажимаем кнопку Save attribute:

Ручной ввод данных в Master Data Services
Итак, модель «Сотрудники» (Employees) и сущности «Сотрудники» (Employees) и «Подразделения» (Divisions) готовы, теперь необходимо наполнить их данными. Сущность «Подразделения» (Divisions) пользователи будут заполнять вручную. Для демонстрации этого процесса перейдем на главную страницу web-интерфейса Master Data Services, в подразделе Information Worker Tasks выберем модель Employees и перейдем по ссылке Explorer:

Выберем иерархию «Подразделения» (Divisions):

Выберем тип элементов, которыми мы хотим управлять. Сначала создадим несколько групповых элементов (Consolidated Member):

Нажмем кнопку Add, введем наименование подразделения-группы «Отдел продаж» и нажмем кнопку OK:

Аналогично добавим другие подразделения и, таким образом, создадим структуру подразделений, изображенную на следующем рисунке:

Обратите внимание, жирным шрифтом выделены подразделения-группы, а нежирным - конечные элементы. На одном уровне иерархии могут быть как те, так и другие типы элементов.

Импорт данных в Master Data Services
Теперь необходимо импортировать данные о сотрудниках в Master Data Servises из существующего хранилища данных (для дальнейшего сопоставления сотрудников и подразделений, и экспорта этих данных обратно в хранилище). Для загрузки данных в MDS в SQL базе данных, обеспечивающей работу Master Data Servises, существуют специальные промежуточные таблицы (Staging Tables), в которые мы можем вставить данные SQL-запросом или создать специальный SSIS-пакет, который будет импортировать новые записи о сотрудниках из хранилища данных во временные таблицы для их дальнейшей обработки в Master Data Servises. Откроем SSMS и найдем временные таблицы в базе данных Master Data Servises. Вот они:

В качестве примера импортируем произвольные 10 записей о сотрудниках из хранилища данных в промежуточную таблицу базы данных Master Data Services. Для этого выполним следующий SQL-запрос:

INSERT INTO . (, , , , ) SELECT TOP 10 1, 0, N"Employees_Leaf_Batch00001", E.id, E.name FROM .. E;

Вернемся в web-интерфейс Master Data Services и на главной странице перейдем по ссылке Intergation Management:

В открывшемся окне видим пакет Employees_Leaf_Batch00001, который был только что создан SQL-запросом. Запустим его, нажав на кнопку Start Batches:

После отработки пакета увидим вот такую информацию о статусе, времени начала и окончания выполнения, ошибках:

Управление данными в Master Data Services
Теперь давайте перейдем в режим управления данными и посмотрим, как загрузились записи о сотрудниках из промежуточной таблицы. Для этого перейдем на главную страницу web-интерфейса Master Data Services, в подразделе Information Worker Tasks выберем модель Employees и перейдем по ссылке Explorer. В открывшемся окне видим, что новые данные о сотрудниках были добавлены в Master Data Services и находятся в состоянии Waiting to be validated:

Обратите внимание, что данные о подразделении (Division) у сотрудников не заполнены. Нам необходимо для каждого сотрудника выбрать подразделение, в котором он работает и нажать на кнопку ОК:

Экспорт данных из Master Data Services
После того как данные о подразделениях и принадлежности сотрудников к подразделениям введены, необходимо импортировать их обратно в хранилище данных. Для этого необходимо создать специальные представления (Subscription Views) в MDS. Перейдем на главную страницу web-интерфейса Master Data Services, в подразделе Administrative Tasks перейдем по ссылке Intergation Management:

В открывшемся окне перейдем в меню Create Views и нажмем кнопку Add subscription view:

Заполним параметры представления для сущности «Подразделения» (Divisions) и нажмем кнопку Save:

Аналогичным образом создадим представление для сущности «Сотрудники» (Employees):

Теперь давайте разберемся, что же это за представления и как можно их использовать. На самом деле все довольно просто, представления в MDS есть ни что иное, как привычные нам представления (Views) в SQL базе данных. Откроем SSMS, и убедимся в этом:

И последнее, что остается сделать для решения поставленной задачи - это разработать SQL-скрипт или пакет SSIS, который экспортирует информацию из представлений MDS в хранилище данных.

Выводы

На реализацию данного решения было потрачено около восьми человеко-часов, что, как мне кажется, вполне адекватное время для такой задачи. В описанном решении я не использовал все возможности Master Data Services, например, остались без внимания

Убил некоторое время на изучение поведения утилиты индексации Spotlight в Mac OS X Lion.

Но сначала немного о проблеме. Spotlight индексирует все подряд (кроме явно запрещенного), что создает нагрузку на процессор и диск. Стал уже классическим вопрос о том, что ценнее – заряд батареи ноутбука и ресурс перезаписи SSD или несомненное удобство Spotlight.

Сразу скажу, что сам я мог бы обойтись и без Spotlight (старая школа научила меня вручную систематизировать все свои данные) и существует способ просто отключить внутренний поиск по компьютеру, но это было бы слишком просто. Кроме того, индексом Spotlight пользуюсь не только я, но и некоторые программы, установленные на компьютере. И чем дальше, тем больше таких программ, поэтому… пойдем по трудному пути.

Для OS X Snow Leopard в Сети предлагается много разных решений по оптимизации работы процессов MDS /mdworker, но не все они подходят для Lion.

Spotlight в Lion выполнен с явными отличиями, как мне удалось заметить. Соответственно, и рекомендации по приструнению Spotlight должны иметь отличия.

Мне удалось успокоить процессы mdworker двумя следующими пассами (остальные, как мне показалось, заметного влияния не оказали):

1. Перестройка Spotlight индекса. Это поможет тем, кто “Льва” накатывал поверх “Лепёрда”. Способов вызвать полную переиндексацию я знаю два, но рекомендую ту, что предлагает сам Apple: открываете “системные настройки” -> Spotlight, затем закладку “конфиденциальность” и в список “секретных материалов” вносите ваш встроенный жесткий диск (или все, если их несколько). Через несколько секунд можно нажать “минус”, чтобы откатить произведенное действие. Результатом будет полная перестройка индекса вашего диска. Процесс это не быстрый. Сигналом о том, что процесс начался – точка, появившаяся в центре пиктограммы Spotlight (верхний правый угол экрана). Если нажать мышью на пиктограмму в этот момент, вам Spotlight еще и прогресс покажет, и оставшееся время индексации.

На SSD у меня ~70Gb данных переиндексировались за ~15 минут. На HDD это может занять пару часов, будьте терпеливы. Лучше при этом ноут не трогать, чтобы все закончилось скорее.

Поговаривают, этот способ конвертации данных в новый формат “Льва” заметно быстрее, нежели ждать постепенной перестройки старого индекса Spotlight в новый.

2. К сожалению, п.1 может не оказать желаемого результата и mdworker продолжить насилие над компьютером. В этом случае посмотрите внимательно на другие накопительные ресурсы, подключенные к вашему компьютеру. Это могут быть внешние дисковые накопители, Time Capsule, сетевые диски и другие компьютеры. Скорее всего, в них и дело.

У меня дома есть центральный сервер, к которому все домашние компьютеры подключаются по проводам или wifi. Так вот. Мне удалось застать mdworker за работой по индексации данных на подключенных сетевых ресурсах этого сервера. А данных там о-го-го.

Тогда я произвел следующие действия: подключил к макбуку все сетевые ресурсы и физические внешние диски, открыл настройки Spotlight и добавил в “конфиденциальность” весь этот технопарк. Через несколько минут работа mdworker-ов сдулась. А этих процессов у меня одновременно пахало по несколько штук.

При отключении сетевого ресурса, его наименование исчезает из вкладки “конфиденциальность”. Но пусть вас это не пугает, при новом подключении ресурс вновь появится на прежнем месте. Да и могло ли быть иначе, когда речь идет о конфиденциальности?

Так я победил любознательность Spotlight.

Проблема решена, но исключительно на уровне моего опыта. Не факт, что он подойдет и вам, но чем лев не шутит, попробуйте…