Мы разрабатываем процесс для архивирования набора записей на основе различных критериев, таких как дата, статус и т. Д. *
Упрощенный набор таблиц: Claim, ClaimDetails, StatusHistory
(отслеживает изменения в статусе заявки), Comments
& Files
Среда: SQL Server 2005, ASP.Net MVC (.NET Framework v3.5 SP1)
Claim
является основным объектом и имеет дочерние строки в упомянутых подстолях. У некоторых есть детали, а другие используются для отслеживания изменений. В конечном итоге, основываясь на некоторых критериях, Claim
становится «готовым к архивированию», как описано выше. Простыми словами, архивированные Claims
будут идентифицироваться из базы данных и обрабатываться по-разному в веб-приложении.
Вот самая простая версия: (вид сверху)
- Создайте скрипт, который помечает
Claim
«заархивированный» в БД.
- Архивная строка и ее дочерние строки могут храниться в одной и той же таблице (установить флаг) или перемещаться в другую таблицу, которая будет репликой исходной.
- В веб-приложении мы позволим пользователю фильтровать
Claims
на основе статуса архива.
- Возможно, в будущем потребуется «разархивировать»
Claim
.
Что мне нужно знать?
Нам нужно сделать это максимально простым и легким, а также гибким для адаптации будущих изменений - пожалуйста, предложите подход.
Является ли своевременный сценарий SQL лучшим вариантом для этого сценария?
Стоит ли использовать отдельные таблицы или просто добавить флаг "Archived" к каждой таблице?
Для оценки эффективности выбранного подхода - какая разница, если мы планируем иметь около 10 000 Claims
, а что, если это будет 1 миллион. Вкратце, пожалуйста, укажите подход для легких и тяжелых нагрузок.
Мы храним файлы, загруженные физически на нашем сервере - я думаю, что это может остаться без изменений.
Примечание: Заявка может содержать любое количество дочерних записей во всех упомянутых таблицах, поэтому она получает n-кратное число.
Существует ли стандартная структура или шаблон, к которому я должен обратиться, чтобы узнать о процессе архивирования. Любая типовая ссылка на статью или инструмент поможет мне узнать больше.