Ответственен ли программист программы базы данных за резервное копирование базы данных? - PullRequest
7 голосов
/ 07 февраля 2009

Представьте, что вы продаете приложение, которое хранит свои данные в базе данных Microsoft Sql Server. Некоторые клиенты - крупные компании с существующими установками Sql и обслуживающим их персоналом. Другие клиенты - это небольшие компании, которые устанавливают версию SQLEXPRESS с помощью программы установки.

База данных скоро будет содержать много важных данных и нуждается в резервном копировании. Чья это ответственность?

Должно ли приложение содержать пользовательский интерфейс для резервного копирования базы данных и предупреждать, когда резервное копирование не было запущено?

Или приложение должно просто включить инструкции по резервному копированию в свою документацию?

Или это проблема для клиентов, а не для программистов?

Ответы [ 7 ]

12 голосов
/ 07 февраля 2009

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

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

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

10 голосов
/ 07 февраля 2009

Если вы создаете программное обеспечение, устанавливающее SQLExpress, вам следует предоставить функцию резервного копирования. По умолчанию SQLExpress не поставляется вместе с Management Studio, и я бы посчитал, что это большая проблема с удобством установки Management Studio как части вашего приложения (или попросить клиента сделать это).

Команда BACKUP DATABASE просто выполнить из вашего приложения. На самом деле нет никаких оснований , а не предоставлять эту функциональность.

Что касается клиентов, у которых есть ИТ-персонал, они могут самостоятельно обрабатывать резервные копии, используя существующий процесс.

Все побеждают.

10 голосов
/ 07 февраля 2009

Это ответственность клиента. Тем не менее, ...

Я полагаю, у вас есть три варианта:

  1. Укажите, что база данных должна быть зарезервирована.
  2. Дайте рекомендации по резервному копированию данных.
  3. Предложите свои услуги для поддержки процедур резервного копирования.

Можно использовать один или все три из них. Все зависит от того, что устраивает покупателя и продавца.

4 голосов
/ 07 февраля 2009

Резервные копии

Из моего опыта многое зависит от того, как база данных установлена ​​и упакована вместе с приложением. Если вы продаете приложение клиенту со скрытыми или абстрагированными подробностями реализации уровня базы данных, то типичное ожидание клиента состоит в том, что решение для резервного копирования предоставляется как часть программного обеспечения. Это ожидание существует по разным причинам.

Мне кажется, что ИТ-отдел, поддерживающий приложение, не может быть уверен в том, как должно происходить резервное копирование базы данных для приложения. Иногда дамп БД с некоторыми поставщиками может вызвать проблемы с блокировкой, которые прерывают нормальную работу приложения. Я уверен, что вы можете представить другие жалобы, которые могут возникнуть у ИТ-отдела по поводу приложения, связывающего БД.

Что касается установок, которые подключаются к существующей БД, я думаю, вполне разумно ожидать, что администраторы БД для этих баз данных будут выполнять резервное копирование. Однако очень важно, чтобы вы - провайдер приложений документировали, что необходимо сохранить. Существуют ли последовательности и индексы, для которых необходимо сохранить их точный порядок? Существуют ли терабайты данных, которые могут не иметь значения для вашего клиента в случае их утери? Как насчет состояния приложения во время резервного копирования (как упомянуто выше)? Нужно ли закрывать приложение?

Восстановление

Более проблематичным является восстановление. Что делать, если требуется частичное восстановление данных? Как это может повредить ваше хранилище данных? Сохраняет ли ваше приложение данные где-либо еще (файлы, сеть), которые могут быть переведены в ненадежное / поврежденное состояние в результате архивации архива?

В любом случае, длинная история - когда я клиент, я чувствую себя намного лучше, зная, что поставщик приложений контролирует процесс резервного копирования / восстановления и обеспечивает поддержку. На самом деле, это было требование крупного клиента моего текущего проекта. Они были более чем способны управлять базой данных, скорее они хотели, чтобы мы взяли на себя ответственность за свои собственные данные и гарантировали, что процесс будет безупречен.

В итоге ваш пробег может варьироваться в зависимости от реализации, требований и отраслевых ожиданий вашего конкретного приложения.

3 голосов
/ 07 февраля 2009

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

Предоставление инструкций по резервному копированию поможет убедиться, что они знают, что им нужно делать, и знают, что это их обязанность. Хорошие инструкции также (надеюсь) уменьшат объем поддержки, которая им потребуется :) Большинство нетехнических пользователей, которых я знаю в наши дни, по крайней мере, знают, что им нужно создавать резервные копии важных документов на компакт-дисках, с некоторыми инструкциями, которые они должны иметь в состоянии сделать резервную копию их база данных самостоятельно.

Я думаю, что графический интерфейс для создания резервных копий необходим только в особых случаях, когда пользователи вообще не будут технически опытными, безопасность данных важна, и пользователи не будут иметь доступа (или хотят тратить деньги на) ИТ-персонала.

2 голосов
/ 10 февраля 2009

Если вы предоставляете SQL Server Express, важно обсудить требование резервного копирования с вашими клиентами (конечно, только если это возможно).

Некоторые люди здесь предложили, чтобы вы позволили ИТ-специалистам справиться с проблемой. Это, конечно, совершенно справедливо, однако у него есть внутренняя проблема, заключающаяся в том, что большое количество ИТ-специалистов не имеют представления об администраторе базы данных и еще меньше знают, как реализовать хорошую стратегию резервного копирования.

Тщательно обдумайте нужды ваших индивидуальных клиентов и, возможно, добавьте автоматическое резервное копирование в качестве дополнительного средства или бесплатно, если вы чувствуете себя щедрым. После всего этого SQL Express многие клиенты не ожидают, что им придется что-либо знать о резервных копиях базы данных.

2 голосов
/ 08 февраля 2009

Запуск приложения из резервной копии решает проблему «Как вернуть данные, которые я случайно удалил?», Но это не решает проблему поломки жесткого диска. Ваше приложение не будет гарантировать, что резервная копия отправляется на ленту и что лента должным образом хранится вне сайта. Станьте частью лучшего решения, которое заставит их взять на себя некоторую ответственность за свои данные. Не вводите их в ложное чувство безопасности, потому что они получили окно с сообщением о том, что резервное копирование завершено.

...