Я изучаю варианты архивации для нашего приложения базы данных (очень нормализованная схема) и буду признателен экспертам за отзывы. Мы используем Sql Server 2005, но если что-то работает только в 2008 R2, это может быть вариантом для нас.
Основная причина архивации - удаление старых данных на ежегодной основе. Критерии определения того, какие объекты могут быть заархивированы, не будут простыми (т. Е. Не только фильтрация по дате, но и множество других соображений).
Архивирование должно быть в основном нажатием кнопки в приложении (т. Е. Не фактическим администратором базы данных на сервере базы данных).
Данные должны быть извлечены, но, возможно, по специальному запросу. Возможно, объект и все связанные с ним части можно найти и вернуть в текущую базу данных? (Опять же, через интерфейс приложения.)
Другим важным требованием является сохранение целостности связанных данных. Если заархивированный объект связан с неархивированным объектом, я хочу убедиться, что неархивированный объект не может быть удален через интерфейс. В настоящее время у нас есть много проверок, чтобы гарантировать, что вы не можете удалить элементы, если они используются, и я не решаюсь изменить все эти проверки, чтобы присоединиться к таблице _archive или использовать новое представление. Есть ли другой способ?
Я читал о секционировании таблиц / индексов, и, хотя это интересно, это звучит, наверное, МНОГО работы, учитывая, сколько хранимых процедур, представлений, индексов и т. Д. Мы используем.