Время архивировать - SQL Server - PullRequest
0 голосов
/ 13 октября 2011

Я изучаю варианты архивации для нашего приложения базы данных (очень нормализованная схема) и буду признателен экспертам за отзывы. Мы используем Sql Server 2005, но если что-то работает только в 2008 R2, это может быть вариантом для нас.

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

Архивирование должно быть в основном нажатием кнопки в приложении (т. Е. Не фактическим администратором базы данных на сервере базы данных).

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

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

Я читал о секционировании таблиц / индексов, и, хотя это интересно, это звучит, наверное, МНОГО работы, учитывая, сколько хранимых процедур, представлений, индексов и т. Д. Мы используем.

1 Ответ

1 голос
/ 13 октября 2011

Какова ваша мотивация для архивирования?

Вы упоминаете, что хотите «удалить старые данные», но, поскольку вам нужно, чтобы они были постоянно доступны, это не имеет никакого смысла.

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

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