c # — Резервное копирование и архивирование базы данных ADO и Microsoft SQL

Я работаю над реинжинирингом / обновлением инструмента. Связь с базой данных осуществляется на C ++ (неуправляемый ADO) и подключается к SQL Server 2005.

У меня было несколько запросов относительно методов архивирования и резервного копирования / восстановления.

  1. Обычно архивирование отличается от резервного копирования / восстановления. Может ли кто-нибудь предоставить какую-либо ссылку, которая объясняет мне, что. В настоящее время решение использует инструмент bcp для архивирования. Я вижу большую зависимость от имен таблиц в коде. Какие вещи я должен учитывать при выборе дизайна (учитывая, что я должен сделать резервную копию / архивирование одним нажатием кнопки, размер базы данных не более 100 МБ)

  2. Поможет ли перенос всего сообщения в .net? учитывая множество инструментов ORM. также вся логика бизнеса и пользовательский интерфейс в C #

  3. Какой лучший способ проверки архивных данных?

PS: вопрос может быть слишком высокого уровня, но я не получил надлежащей ссылки, чтобы понять это. Будет действительно полезно, если кто-то может ответить. Я могу предоставить более подробную информацию!

Заранее спасибо!

0

Решение

Я бы сказал, что при размере 100 МБ вам не следует тратить слишком много времени на архивирование, а просто использовать традиционные стратегии резервного копирования. Размер вашей базы данных настолько мал, что архивирование будет довольно сложной операцией с очень небольшим выигрышем, так как процесс архивирования будет уместен только в случае огромных баз данных.

Вообще говоря, резервное копирование в терминах базы данных — это способ обеспечить возможность восстановления в случае аварии (случайного удаления данных, сбоя сервера и т. Д.). Архивирование в основном означает, что вы разбиваете свои данные.

Возможная цель архивирования — сохранить определенные данные для запросов, но без возможности их изменения. При работе с базами данных большого объема это отличный способ повысить производительность, поскольку данные только для чтения могут быть проиндексированы гораздо плотнее, чем «горячие» данные. Это также позволяет вам перемещать данные только для чтения в изолированный раздел RAID, который оптимизирован для операций чтения и не должен беспокоиться о типичном вводе-выводе СУБД. Кроме того, удаление неактивных данных из обычной базы данных означает, что размер данных, содержащихся в ваших таблицах, уменьшится, что должно повысить производительность всей системы.

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

Используя SQL Server, вы можете архивировать свои данные, используя разделение стратегии. Обычно это включает в себя определение критериев, на основании которых вы будете разбивать данные. Примером этого может быть дата (то есть данные старше 3 лет будут перемещены в архивную часть базы данных). В случае огромных систем также может иметь смысл разделить данные на основе географических критериев (т. Е. Америка на одном сервере, Европа на другом).

Чтобы ответить на ваши вопросы:

1) См. Объяснение, написанное выше
2) Это действительно зависит от цели обновления. Перемещение на .NET позволит получить код для управления, но насколько это важно для бизнеса?
3) Если вы решили разделить, проверка его работоспособности может включать отправку запроса в исходную базу данных для данных, которые содержат оба значения до и после порогового значения, которое вы будете использовать для разделения, затем разделение данных и повторную выдачу запроса впоследствии, чтобы проверить это все еще возвращает тот же набор записей. Если вы настраиваете систему для использования автоматическое раздвижное окно, Вы также можете следить за системой, чтобы гарантировать, что данные будут автоматически перемещаться в раздел архива.

Опять же, если 100 МБ — это не опечатка, я думаю, что ваша база данных слишком мала, чтобы извлечь выгоду из архивирования. Если ваша цель — ускорить процесс, поместите систему на сервер, который может загрузить всю базу данных в ОЗУ, или используйте SSD-диски.

Если вам необходимо создать архив данных по юридическим или административным причинам, рассмотрите горизонтальное разбиение таблицы. Это довольно простой процесс, который в основном обрабатывается SQL Server автоматически.

Надеюсь, что это помогает вам!

1

Другие решения

Других решений пока нет …