Процесс mds. Что за «птица» залетела в Mac. Или история о «нехороших процессах» в OS X Yosemite. Ручной ввод данных в Master Data Services

25.03.2024 BSoD

If your Mac is suddenly running sluggish and you launched Activity Monitor, you may notice a process named ‘mds’ cranking away at 30% and even up to 90% CPU utilization. If you see this, don’t worry, it’s not abnormal behavior and your Mac isn’t crashing, it’s just indexing it’s built in search engine.

What is MDS in Mac OS?

mds stands for “metadata server” and the mds process is part of Spotlight, the amazingly powerful and very useful search feature built directly into the foundation of Mac OS X. You access Spotlight by hitting Command+Spacebar.

An easy way to identify that mds and Spotlight is indexing is to look at the Spotlight icon in the upper right corner of your menubar, when Spotlight is indexing the magnifying glass will have a dot in the center like so:

You can then click on the Spotlight icon and you’ll see your main hard drive being indexed, with a progress bar and estimated time until completion:

Is the mds process related to mdworker?

Yes. Usually you will see the mds process in conjunction with , which is another part of Spotlight and it’s indexing engine.

How long does mds & Spotlight take to finish indexing?

How long it takes to update the Spotlight index depends on a few variables, but mostly the size of your hard drive, the amount of data being indexed, major changes to the filesystem, and the time since last indexing. Just let the indexing complete, it generally takes between 15 and 45 minutes to complete.

If Spotlight isn’t working, you can check out these which will get you situated again. If you don’t ever use the search feature or just don’t like it, you can also and all of its indexing.

Related

Related articles:

  • No related posts

33 Comments

    I did not purchase a Mac so that it would tell me when I can work. I mistakenly believed that my Mac would work for me.

    Do not tell me that I am not as smart as Apple and that everything they do is “for my own benefit.”

    I found Time Machine Editor that lets me control when Time Machine runs.

    I need something similar for Spotlight.

    • Can’t help U with Spotlight scheduler, but I did learn that, what with the seemingly global effort to strip icons & buttons & such down to absolute minimum of overhead (presumably for WiFi and TeethOfBlue) by removing animations and 3D effects, there is a new, non-animated “Backup In Progress” telltale–an itty-bitty 2ND triangle, at the 8:00 position on the clock, just below (obviously) the tiny triangle at 9:00. I had found that the animation was useful (clock hands/triangle going around, clockwise) to cue me into when backup was giving me a performance whack. The movement, of course, would catch your eye–whereas with the new, non-animated (static?) menubar icon, you only have a split 2nd to see the 2nd triangle “move”–from off to on.

      Unrelated, sort of: Can’t figure out how to reduce the # of flashes “on mouse up”–time was we could select 3, 2, 1 or none. I found that 1 flash was just fine, but two and three flashes were an annoyance.

    […] or by hitting the “-” minus button in the lower left. Removing items will trigger the mds and mdworker processes to run again, and when finished the once excluded files will be searchable […]

    […] an upgrade from 10.6, 10.7, or 10.8, this is usually because of Spotlight and the mdworker & mds process combination, which irons itself out over the course of an hour or so. If waiting it out […]

    If you are using a using any P2P programs you may want to prevent Spotlight from searching your”incoming” directory. I discovered Spotlight was trying to index the partial files and was killing my performance. Once I added the directory to the list under System Preferences > Spotlight > Privacy my utilization went back down to normal.

    It’s a bit much to segue from a computer annoyance to a sweeping prediction of where Apple is going.

    If mds is going nuts evebn after reboot I would figure it is corruption somewhere. Perhaps reset the index to start from zero: http://support.apple.com/kb/HT2409?viewlocale=en_US&locale=en_US I am very sensitive to processes wasting power on my macbook (no laptoasters, thank you) and rarely have had a problem with mds or spotlight. The UI could use work though, like a lot of Apple stuff right now.

    This is only 1 example of what MDS does. On my machine its running at 63% with a secondary mdworker running at 115% and my spotlight is not indicating anything of a rebuild.

    This is a major pain in the butt. This happens randomly almost everyday. Spotlight is a bloated piece of junk software that appears to be thrown together by a group of people being rushed. Is not clean, its not smooth, Its not even smart enough to ignore the contents of a program and lists pieces of graphic art for the UI’s and app note files that any normal day to day user would NEVER search for.

    Apple is falling apart, loosing its shine, as sloppy programmers, Ideas and programming are poorly implemented and handed out to Users.

    Thank you for writing this really nice, simple explanation of mds. It’s been running at 75% on my mac and I didn’t know if it was some process that was hanging that I should kill. I wish you could schedule it without needing to know Terminal language.

    And I agree that Spotlight is wonderful and more people should know about it, and so a little praise about it is a good thing. Too bad Bugsman didn’t agree. I’m glad we know his opinion and can change the world to fit his preferences.

    I drifted to Alfred from Spotlight, though, because it displays results with big text, in the middle of the screen. I like that!

    I just started an initial time machine backup (on a new drive) and I noticed the mds and mdworker processes hitting the CPU in a big way.

    Does this mean that spotlight is now also indexing the backed-up files ?

    […] in Mac OS X Lion can be done with the help of the Terminal. The following command unloads the Spotlight mds agent from launchd, preventing the daemon from running or indexing any drives […]

    • My sys is hanging up for up to 30-60 seconds. AND I see that a root user process called mds is running using 99.8% CPU. AND there are 12 processes of mdworker among 2 users are using NO CPU%.

      This is supposed to be file indexing, that usually takes 45 minutes has been running for over 3 DAYS!!

      EVEN tho I have restarted computer twice during that 3 days.

      AND my Spotlight icon DOES NOT have a dot in the center.

      Can I force quit this process? Anychance it’s a virus masking as mds? I ran a MacKeeper scan just now and no files found.

      Should I do a disk utility repair disk permission?

      • MacKeeper is causing your problem, uninstall MacKeeper. Do not install MacKeeper again, it does not help anything.

        Then reboot your Mac and LET IT SIT for several hours to complete the indexing.

        How do you think it’s going to index if you keep restarting it and turning it off?

  1. my mds and mdworker is completely hogging my system and it has been going on for several week. I am suspecting that this is not a correct behavior. Does anyone know how to fix this permanently?

    My mds process is not hogging to the extent that you are describing but it is using a constant 254MB of virtual memory which is the top user on a periminant basis. Does that sound right? Is is a problem?

    Great article I have never noticed spotlight icon with a dot in the middle meaning that indexing is going on. Can you schedule it to happen when you decide not when the mac decides? “

    sudo ln -s /dev/null /System/Library/Frameworks/CoreServices.framework/Frameworks/Metadata.framework/Support/mds

    (For the sake of future Internet searchers finding this page: Just Kidding! Also -f flag left off intentionally. Whew!)

    The most important question, however, is “how do you shut down that stupid mds process that is taking up 2GB of memory?” Pertinent if you’re doing computing with your mac, and that silly program is at the top of your “top -o rsize” I just saw it there, found this helpful post, and decided to experiment. I did this command: “sudo killall mds” and it went away. Nothing else seems to have crashed, so I hesitantly recommend this as a possible one-time solution, with caution of course. :)

    Wait, never mind. It started up again. Anyone know how to disable it?

    […] do MDS and MDWorker have to do with Spotlight? The MDS process and mdworker processes usually run concurrently on your Mac when Spotlight is indexing your Mac. […]

    Contrary to BugsMan, I liked the short article. Thanks OS X Daily for posting these short tips and hints! I didn’t know (or had forgotten) what the dot in the center of the magnifying glass means. Now I know.

    BugsMan, maybe you find some tips below your level — you have after all “used Macs from the day they were launched” as you write — then just ignore those helpful hints and be happy that we are others that benefit from them, and be happy you already are in the know.

    And which particular Apple employee (Marketing Dept) wrote this?

    “What is MDS in Mac OS?

    “mds stands for “metadata server” and the mds process is part of Spotlight, the amazingly powerful and very useful search feature built directly into the foundation of Mac OS X. You access Spotlight by hitting Command+Spacebar.”

    I subscribe to this RSS feed because I have used Macs from the day they were launched; not to be bombasted with “the amazingly powerful …” hyperboles.

    • I wish I was an Apple employee!

      Seriously though, I’ve had enough people ask me about “my Mac is running slow randomly” and “what the heck is mds and mdserver?” that I felt it justified writing an explanation. We have a pretty diverse readership here from complete novice to expert and we try to accommodate that. You’re more than welcome to email us some topics, suggestions, or even your own tips to [email protected]

      I find Spotlight pretty handy and I use it constantly, so I tend to talk it up a bit, it’s not meant to convey any other message or agenda.

      • spotlight is driving me crazy. I want to disable it and I can’t. No matter what key that I hit, spotlight pops up. Pleeze help me.

          • Windows also stresses the HD a lot!

            With a PC he would get 15 problems more

      • “Spotlight, the amazingly powerful and very useful search feature built directly into the foundation of Mac OS X”

        Spotlight is a dysfunctional abomination that destroys your computer, economy and eventually your life.
        It only works in one mode. DISABLED!
        The brain farts at Apple do not understand how important it is NOT to cripple the customers home and workplace with a program that runs so wildly amok that i will pose a fire risk to your home.
        If they would just run the s#”T in nice mode, then you could forgive the sad unintelligent logic for not doing anything else than stealing CPU cycles.
        But the stupid process absolutely has to own you. WTF!

Некоторое время назад к нам начали обращаться с вопросами о том, как заставить вентиляторы MacBook работать чуть тише. Иногда пользователи жаловались на то, что система явно начинала жадно использовать процессорные мощности, а вслед за этим начинали сильнее крутиться кулеры, дабы охладить сам процессор. Почему так происходило – загадка. Да и далеко не у всех возникала такая проблема. Однако, потерзав немного поисковики, можно было понять суть проблемы, а главное – решить ее. Если у вас, казалось бы, без причины крутятся вентиляторы в вашем MacBook, возможно, эта статья вам поможет.

Итак, первое, что нужно было понять – почему начинает греться процессор, а потом начинают крутиться вентиляторы. Самый простой способ это узнать – заглянуть в Мониторинг системы. Именно там, отсортировав процессы, можно было вычленить два из них: MDS и mds_stores, что потребляли CPU больше обычного. Оба эти процесса отвечают за работу Spotlight. Что ж, значит нужно отключить Spotlight полностью, дабы узнать, действительно ли из-за него могут возникать наши проблемы. Для этого нужно ввести в Терминале следующую команду:

sudo mdutil -a -i on

И правда, после этой несложной манипуляции вентиляторы сбавляли обороты и начинали вращения со своей обычной скоростью.

Но тут мы встречаемся с другой проблемой: запуск приложений. Основные мои программы, которые я использую наиболее часто, помещены в Док – так их запускать гораздо быстрее и удобнее. Но те, которые используются чуть реже, я запускаю непосредственно из Spotlight. Думаю, так делают многие: простая комбинация клавиш Control + Space и открывается строчка поиска Spotlight, в которой достаточно ввести пару букв названия нужного приложения и нажать Enter для подтверждения его запуска. Такое нехитрое действие экономит время и избавляет от поиска необходимого приложения в Launchpad. Однако при выключенном Spotlight все удобство сводится к нулю.

Что ж, тогда в запасе есть и другой вариант, который поможет отключить базу данных Spotlight и заставить заново переиндексировать все данные. Сделать это также просто, достаточно в Терминале ввести следующую команду:

sudo rm -rf /.Spotlight-V100/*

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

Тем не менее, этот способ также может не принести должного результата. Поэтому перейдем к следующему. Он чуть сложнее, чем операция по вставке в Терминал одной команды, но эффект может оказаться крайне положительным. Чтобы Spotlight «не сходил с ума», можно добавить в него исключения для тех папок, которые он не будет индексировать. Для этого откройте Системные Настройки и перейдите в меню настроек Spotlight. В открывшемся окне выберите вкладку Конфиденциальность и добавьте туда те папки, которые Spotlight не будет индексировать. Особенно полезно будет добавить папки с часто меняющимся содержимым (например, папка Загрузки) и папки с онлайн-бэкапами (к примеру, папка Dropbox).

Как правило, исключив подобные папки, проблема перестает проявляться: процессы не потребляют большее количество CPU, а вентиляторы, соответственно, не запускаются, чтобы охладить его.

А ВЫ сталкивались с подобными проблемами? Возможно, это решение помогло вам? Делитесь своим опытом в комментариях!

«Введение Предварительные условия Требования Используемые компоненты Условные обозначения Буферизация сообщения Буферный реестр Процесс MDS Процессы клиента MDS Получите статистику измерения Водяные...»

Введение

Предварительные условия

Требования

Используемые компоненты

Условные обозначения

Буферизация сообщения

Буферный реестр

Процесс MDS

Процессы клиента MDS

Получите статистику измерения

Водяные знаки

Примечания обновления

Примечания обслуживания

Дополнительные сведения

Введение

Этот документ описывает, как можно измерить реестр размещения буферов Message

delivery service (MDS) для удовлетворения всех потребностей в Cisco Intelligent Contact Management (ICM) / Среда предприятия Контактного центра ip (IPCC). Этот документ также предоставляет примечания обновления и обслуживания.

Примечание: Этот документ не применяется к ICM 7.0, потому что было изменено средство управления памятью.

Предварительные условия Требования

Предприятие ICM/IPCC Cisco q Используемые компоненты Сведения, содержащиеся в данном документе, касаются следующих версий программного обеспечения и оборудования:

Версия 4.6.

2, 5.x и 6 ICM Enterprise Cisco. x q Версия 4.6.

2, 5.x и 6 Cisco IPCC Enterprise. x q Сведения, представленные в этом документе, были получены от устройств, работающих в специальной лабораторной среде. Все устройства, описанные в этом документе, были запущены с чистой (стандартной) конфигурацией. В рабочей сети необходимо изучить потенциальное воздействие всех команд до их использования.



Условные обозначения Дополнительные сведения об условных обозначениях см. в документе Условные обозначения технических терминов Cisco.

Буферизация сообщения Один Процесс MDS работает на каждой стороне Маршрутизатора ICM Cisco и Периферийного шлюза (PG). Process start Node Manager (NM) Процесс MDS. Процесс MDS предоставляет функцию Переключения сообщений для клиентов на ее стороне системы.

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

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

Процесс MDS внедряет схему управления буферами. Когда сообщение находится в очереди, увеличениях номера полного буфера. Когда клиент читает сообщение, сообщение оставляет очередь и буферные уменьшения номера. Размер очереди составляет 90% доступных буферов в буферном пуле. Верхний порог, который можно настроить, задает максимальное число буферов для выделения сообщениям очереди. Если сообщение, которое присоединяется к очереди, заставляет буферы превышать уровень верхнего порога, Процесс MDS объявляет сбой и останавливается.

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

Буферный реестр Процесс MDS Для Процесса MDS вот путь навигации для максимального реестра выделенного буфера в

Cisco ICM Version 4.6.2:

Например, рисунок 1 отображает ключ реестра для BufferLimit и BufferMaxFree для Процесса MDS на PG1A в версии 5.x и 6 ICM/IPCC Cisco. x.

Рисунок 1? Реестр процесса MDS для BufferLimit и BufferMaxFree Процессы клиента MDS Для клиентов MDS вот путь навигации для максимального реестра выделенного буфера в

Cisco ICM Version 4.6.2:

Вот путь навигации для максимального реестра выделенного буфера в Cisco ICM Version

Например, рисунок 2 отображает ключ реестра для BufferLimit и BufferMaxFree для процесса pgag на PG1A в версии 5.x и 6 ICM/IPCC Cisco. x.

Рис. 2? Реестр процесса клиента MDS для BufferLimit и BufferMaxFree Получите статистику измерения Можно использовать команду dumplog с / аргументом/bin для получения статистики буфера.

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

Вот пример команды dumplog, которую можно выполнить для сбора двух часов данных MDS:

C:\icm\lab60\ra\logfilesdumplog mds /bin /hr 2

Вот частичные выходные данные команды dumplog:

Водяные знаки Первая часть статистики представляет отметку для размещения буферов.

Рис. 3? Статистика буферного пула

Вот являются значения и область некоторых сроков этим отчётом использование:

Выделенные буфера Max представляют количество буферов в использовании (см.

q розовый прямоугольник на рисунке 3).

(Маленький) Freelist Max представляет буферы в использовании, которые выделены от q Маленького Freelist (см. зеленый прямоугольник на рисунке 3).

Freelist Max (Среда) представляет буферы в использовании, которые выделены от q Среднего Freelist (см. голубой прямоугольник на рисунке 3).

(Большой) Freelist Max представляет буферы в использовании, которые выделены от q Большого Freelist (см. черный прямоугольник на рисунке 3).

Этот отчёт представляет изображение размещения буферов в течение прошлого часа.

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

Два Требования к буферу MDS:

–  –  –

Для версии ICM 4.6.2 вот путь навигации для максимального реестра выделенного буфера:

Events from September 20, 2005:11:51:06 ra-mds MDS Process is reporting periodic overall metering statistics. *** Buffer Pool Statistics *** Current / High / Max Allocated Buffers = 374 / 397 / 65536 Current / High / Max Freelist (Small) = 344 / 345 / 400 Current / High / Max Freelist (Medium) = 10 / 10 / 10 Current / High / Max Freelist (Large) = 5 / 5 / 5 Buffer Allocs Small / Medium / Large / Total = 18938158 / 1043172 / 4749 / 19986079 Allocs from Freelist Small / Medium / Large / Total = 18937799 / 1042064 / 4742 / 19984605 Buffer Frees Small / Medium / Large / Total = 22322177 / 1060637 / 5161 / 23387975 Frees to Freelist Small / Medium / Large / Total = 18938143 / 1042074 / 4747 / 19984964 Dups = 3401911 *** Synchronizer Statistics *** Total messages ordered = 4292869 MDS duplicates = 308 DMP duplicates = 0 Local low priority input msgs / bytes = 1119811 / 107490676 Current input queue msgs / bytes = 0 / 0 Highest input queue msgs / bytes = 12 / 3136 Local high priority input msgs / bytes = 848853 / 24508284 Current input queue msgs / bytes = 0 / 0 Highest input queue msgs / bytes = 2 / 148 Local medium priority input msgs / bytes = 61373 / 3017131 Current input queue msgs / bytes = 0 / 0 Highest input queue msgs / bytes = 7 / 11480 Remote low priority input msgs / bytes = 131595 / 9598544 Current input queue msgs / bytes = 0 / 0 Highest input queue msgs / bytes = 15 / 2472 Remote high priority input msgs / bytes = 6236914 / 65565092 Current input queue msgs / bytes = 0 / 0 Highest input queue msgs / bytes = 8 / 228 Remote medium priority input msgs / bytes = 318 / 52698 Current input queue msgs / bytes =0/0 Highest input queue msgs / bytes = 3 / 7476 Remote low priority output msgs / bytes = 1118701 / 107385640 Current output queue msgs / bytes = 0 / 0 Highest output queue msgs / bytes = 8 / 3136 Remote high priority output msgs / bytes = 4301262 / 93354648 Current output queue msgs / bytes = 0 / 0 Highest output queue msgs / bytes = 7 / 204 Remote medium priority output msgs / bytes = 61289 / 3012988 Current output queue msgs / bytes = 0 / 0 Highest output queue msgs / bytes = 5 / 7476 Current local low priority ordering queue msgs / bytes = 0 / 0 Highest msgs / bytes = 16 / 3168 Current local high priority ordering queue msgs / bytes = 0 / 0 Highest msgs / bytes = 0 / 0 Current local medium priority ordering queue msgs / bytes = 0 / 0 Highest msgs / bytes = 7 / 11524 Current remote low priority ordering queue msgs / bytes = 0 / 0 Highest msgs / bytes = 0 / 0 Current remote high priority ordering queue msgs / bytes = 0 / 0 Highest msgs / bytes = 0 / 0 Current remote medium priority ordering queue msgs / bytes = 0 / 0 Highest msgs / bytes = 0 / 0 Current low priority timed delivery queue msgs / bytes = 0 / 0 Highest msgs / bytes = 336 / 32736 Current high priority timed delivery queue msgs / bytes = 0 / 0 Highest msgs / bytes = 0 / 0 Current medium priority timed delivery queue msgs / bytes = 0 / 0 Highest msgs / bytes = 32 / 24416 Clock rate fast / slow / normal = 0 / 0 / 0 Output waits / notifies = 2641679 / 2642109 *** State Transfer Statistics *** Attempts / Successful completions = 11 / 11 Bytes received / transmitted = 383710 / 118572711:51:06 ra-mds MDS Process is reporting periodic per-client summary meters.

*** Client 128 Statistics *** Connects / Disconnects = 0 / 0 Messages / Bytes received from client = 0 / 0 Messages / Bytes sent to client = 0 / 0 Current output queue msgs / bytes = 0 / 0 Highest msgs / bytes = 0 / 0....11:51:06 ra-mds MDS Process is reporting periodic per-client summary meters. *** Client 70 Statistics *** Connects / Disconnects = 0 / 0 Messages / Bytes received from client = 0 / 0 Messages / Bytes sent to client = 0 / 0 Current output queue msgs / bytes = 0 / 0 Highest msgs / bytes = 0 / 0..

Вот ключи:

BufferLimitBufferLimit определяет максимальный выделенный буфер (см. стрелку на q рисунке 1 и рисунке 2).

BufferMaxFreeBufferMaxFree представляет выделенный freelist максимума (см. стрелку B q на рисунке 1 и рисунке 2).

Наиболее важная информация в статистике измерения является значением Высоких Выделенных буферов (см. рисунок 3). Цель должна поддержать значение между 65% и 75% Максимальных Выделенных буферов. В течение любого времени в течение выбранного периода, если номер становится выше, чем 75%, необходимо удвоить значение в BufferLimit.

Примечание: Значение всегда является питанием два.

Сообщение об ошибках размещения буферов

Когда буферный пул пуст, выходы процесса. Файл журнала отображает это сообщение:

Events from September 20, 2005:11:51:06 ra-mds MDS Process is reporting periodic overall metering statistics. *** Buffer Pool Statistics *** Current / High / Max Allocated Buffers = 374 / 397 / 65536 Current / High / Max Freelist (Small) = 344 / 345 / 400 Current / High / Max Freelist (Medium) = 10 / 10 / 10 Current / High / Max Freelist (Large) = 5 / 5 / 5 Buffer Allocs Small / Medium / Large / Total = 18938158 / 1043172 / 4749 / 19986079 Allocs from Freelist Small / Medium / Large / Total = 18937799 / 1042064 / 4742 / 19984605 Buffer Frees Small / Medium / Large / Total = 22322177 / 1060637 / 5161 / 23387975 Frees to Freelist Small / Medium / Large / Total = 18938143 / 1042074 / 4747 / 19984964 Dups = 3401911 *** Synchronizer Statistics *** Total messages ordered = 4292869 MDS duplicates = 308 DMP duplicates = 0 Local low priority input msgs / bytes = 1119811 / 107490676 Current input queue msgs / bytes = 0 / 0 Highest input queue msgs / bytes = 12 / 3136 Local high priority input msgs / bytes = 848853 / 24508284 Current input queue msgs / bytes = 0 / 0 Highest input queue msgs / bytes = 2 / 148 Local medium priority input msgs / bytes = 61373 / 3017131 Current input queue msgs / bytes = 0 / 0 Highest input queue msgs / bytes = 7 / 11480 Remote low priority input msgs / bytes = 131595 / 9598544 Current input queue msgs / bytes = 0 / 0 Highest input queue msgs / bytes = 15 / 2472 Remote high priority input msgs / bytes = 6236914 / 65565092 Current input queue msgs / bytes = 0 / 0 Highest input queue msgs / bytes = 8 / 228 Remote medium priority input msgs / bytes = 318 / 52698 Current input queue msgs / bytes =0/0 Highest input queue msgs / bytes = 3 / 7476 Remote low priority output msgs / bytes = 1118701 / 107385640 Current output queue msgs / bytes = 0 / 0 Highest output queue msgs / bytes = 8 / 3136 Remote high priority output msgs / bytes = 4301262 / 93354648 Current output queue msgs / bytes = 0 / 0 Highest output queue msgs / bytes = 7 / 204 Remote medium priority output msgs / bytes = 61289 / 3012988 Current output queue msgs / bytes = 0 / 0 Highest output queue msgs / bytes = 5 / 7476 Current local low priority ordering queue msgs / bytes = 0 / 0 Highest msgs / bytes = 16 / 3168 Current local high priority ordering queue msgs / bytes = 0 / 0 Highest msgs / bytes = 0 / 0 Current local medium priority ordering queue msgs / bytes = 0 / 0 Highest msgs / bytes = 7 / 11524 Current remote low priority ordering queue msgs / bytes = 0 / 0 Highest msgs / bytes = 0 / 0 Current remote high priority ordering queue msgs / bytes = 0 / 0 Highest msgs / bytes = 0 / 0 Current remote medium priority ordering queue msgs / bytes = 0 / 0 Highest msgs / bytes = 0 / 0 Current low priority timed delivery queue msgs / bytes = 0 / 0 Highest msgs / bytes = 336 / 32736 Current high priority timed delivery queue msgs / bytes = 0 / 0 Highest msgs / bytes = 0 / 0 Current medium priority timed delivery queue msgs / bytes = 0 / 0 Highest msgs / bytes = 32 / 24416 Clock rate fast / slow / normal = 0 / 0 / 0 Output waits / notifies = 2641679 / 2642109 *** State Transfer Statistics *** Attempts / Successful completions = 11 / 11 Bytes received / transmitted = 383710 / 118572711:51:06 ra-mds MDS Process is reporting periodic per-client summary meters.

*** Client 128 Statistics *** Connects / Disconnects = 0 / 0 Messages / Bytes received from client = 0 / 0 Messages / Bytes sent to client = 0 / 0 Current output queue msgs / bytes = 0 / 0 Highest msgs / bytes = 0 / 0....11:51:06 ra-mds MDS Process is reporting periodic per-client summary meters. *** Client 70 Statistics *** Connects / Disconnects = 0 / 0 Messages / Bytes received from client = 0 / 0 Messages / Bytes sent to client = 0 / 0 Current output queue msgs / bytes = 0 / 0 Highest msgs / bytes = 0 / 0..

Примечание: xxxx представляет количество буферов. Например, 1024, 2048, 4096 и т.д.

Используйте Служебную программу Dumplog для просмотра файла журнала.

Исчерпанный буферный пул: Пример 1 Этот журнал предоставляет пример процесса lgr MDS, который исчерпал буфер (см. стрелку на рисунке 4).

Рис. 4? Dumplog процесса LGR MDS Разверните текущий BufferLimit для решения проблемы. Однако необходимо тогда контролировать процесс, чтобы гарантировать, что не возвращается ошибка.

Исчерпанный буферный пул: Случай 2 В некоторых случаях сообщение об ошибках появляется, но расширение текущего BufferLimit не решает проблему. Это сообщение об ошибках является просто признаком.

Например, серия журналов сохранены, прежде чем Процесс MDS останавливается. Эти журналы представляют отчет с количеством буферов, выделенных среди клиентов MDS.

Обычно, этот номер достаточно для вас для сужения на некоторых проблемах в клиентах, которые не касаются размещения буферов.

Рис. 5? Dumplog Процесса MDS Пример на рисунке 5 указывает, что существует 4085 сообщений, помещенных в очередь для процесса Open peripheral controller (OPC), и у всех других клиентов нет выделенных буферов. Данный пример демонстрирует, что процесс OPC является причиной проблемы, а не максимальным размером размещения буферов.

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

Перед выполнением обновления от 4.6.2 до 5.0 или 6.0 Cisco рекомендует вам удвоить BufferLimit и параметры настройки BufferMaxFree (см. рисунок 1). Когда вы обновляете от 5.0 до 6.0, вы не должны удваивать параметры настройки BufferLimit при удвоении параметров настройки, когда вы обновили от 4.6.2 до 5.0. Если вы не уверены в том, увеличили ли вы значение BufferLimit во время предыдущего обновления, проверьте, что статистические данные использования буфера, выделенные в, Получают Статистику Измерения, чтобы определить, необходимо ли увеличить буферы.

Примечание: Утечка памяти не является беспокойством, потому что буферы, заданные BufferLimit (кроме тех в списках свободной памяти), не предварительно выделены. Кроме того, буферы освобождены к системной куче в конечном счете. Однако очень большой BufferLimit (по сравнению с ОЗУ доступной системы) может замаскировать базовую перегрузку связи и замедлить всю систему. В некоторых ситуациях лучшее решение состоит в том, чтобы утверждать процесс, поскольку BufferLimit достигнут, и полагайтесь на дизайн отказоустойчивости системы для переключений при отказе учитывая возможные ограничения ресурса. сфере деятельности, обеспечение осознания мотивов выбора профессии педагога-психолога; формирование обобщенного образа педагога-психолога-профессионала, установки на профессиональн...» транскрипции и полимеразной цепной реакции (ОТ-ПЦР) ОТ-ГЕПАТОГЕН-С КОЛИЧЕСТВЕННЫЙ Регистрационное удостоверение № ФСР 2008/03508 ВНИМАНИЕ!...»

«НАРОДНАЯ УКРАИНСКАЯ АКАДЕМИЯ ПРОГРАММА И МЕТОДИЧЕСКИЕ РЕКОМЕНДАЦИИ ПО ПРОХОЖДЕНИЮ ОЗНАКОМИТЕЛЬНОЙ ПСИХОЛОГО-ПЕДАГОГИЧЕСКОЙ ПРАКТИКИ Для студентов I курса факультета "Социальный менеджмент" Изд...»

«1. Краткое содержание программы Программа включает сведения о порядке проведения вступительного экзамена в аспирантуру по направлению подготовки 44.06.01 Образование и педагогические науки. Направленность "Теория и методика обучения и воспитания (иностранный язык)" Настоящая программа соответствует требованиям, предъявляемым к выпускникам...»

«Дети группы риска и работа с ними в условиях дошкольного учреждения Неполная семья это не только семья разведнных родителей, но и семья, потерявшая кормильца, семья матери – одиночки, а также женщины, которая решилась взять на воспитание...»
Материалы этого сайта размещены для ознакомления, все права принадлежат их авторам.
Если Вы не согласны с тем, что Ваш материал размещён на этом сайте, пожалуйста, напишите нам , мы в течении 1-2 рабочих дней удалим его.

(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, например, остались без внимания

Последнее обновление: 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 можно интегрировать в любую систему организации незаметно для пользователей.