как перенести записи из MDS в другую таблицу, а затем удалить определенные записи из MDS, не удаляя их из перенесенной таблицы

Я использую Master Data Service (версия Enterprise для SQLServer2016) для сбора данных из разных отделов, поэтому каждая группа будет иметь одну или несколько групп атрибутов с доступом для обновления. Для индикации завершения цикла атрибуту «Статус цикла» присваивается значение «Да». Из-за множества бизнес-правил и нескольких групп атрибутов производительность становится очень низкой, поэтому я думаю о следующем: 1. перенести все записи, которые завершили цикл, в таблицу, затем 2. удалить эти записи из службы основных данных, но это не удалит их из таблицы (Point_1). есть ли какая-нибудь подсказка, как это сделать? Я знаю, что у меня есть представление подписки в MDS, но не знаю, может ли это послужить моему делу? и как?


person E.IK    schedule 28.02.2018    source источник


Ответы (1)


E.IK,

1-й подход: условная оценка бизнес-правил

Вы можете добавить условие ко всем своим бизнес-правилам, чтобы оценивать только бизнес-правила.

Если статус цикла = "Нет"

Это может уменьшить влияние на производительность, которое вы видите сейчас (не уверен). Это можно сделать (на экране «Редактировать бизнес-правило»)

Условия > Сравнение значений > равно > Выбрать атрибут:="Статус цикла" > Значение атрибута/атрибут := "Нет"

Таким образом, вам не придется перемещать свои данные.

2-й подход: переместить данные в другую (физическую) таблицу

  • Этот подход повлечет за собой создание отдельной таблицы (физической таблицы БД, а не объекта, чтобы избежать накладных расходов MDS) либо в той же базе данных MDS, либо в другой БД.
  • Затем создайте SP, который будет вставлять строки со статусом цикла = «да» во вторую таблицу и помечать их как удаленные в объекте MDS.
  • Вы можете создать задание агента SQL, которое можно запланировать для запуска этого SP с любой частотой (ежедневно, еженедельно и т. д.).
  • Проблемы с этим подходом будут заключаться в том, что ваши пользователи больше не смогут легко получить доступ к этим архивным данным.

Еще один альтернативный подход...

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

person SilverTry    schedule 16.03.2018