В нашем приложении используется большая база данных продуктов, которая обновляется раз в день. Обновления требуют много времени и ресурсов. Вот почему мы обновляем резервную копию базы данных продукта и переключаемся на нее после завершения обновления.
Единственный способ переключаться между базами данных прямо сейчас - это неправильно использовать наш балансировщик нагрузки. Приложение всегда использует один и тот же IP-адрес для доступа к серверу базы данных. Балансировщик нагрузки решает, как разрешается этот IP-адрес: после обновлений он использует IP-адрес обновленного сервера.
Это ужасный взлом. Есть ли хороший способ переключаться между базами данных?





Несколько разных вариантов:
1) Измените базу данных, к которой подключается ваше приложение. Переключайтесь между ними.
2) Выполняйте обработку и обновления в промежуточной БД, а затем реплицируйте только изменения в свою действующую БД.
Похоже, вы только читаете из базы данных. В этом случае ознакомьтесь с возможностями создания моментальных снимков SQL Server 2005. У вас может быть моментальный снимок базы данных, доступный только для чтения, и выполнять запросы к нему, как к обычной базе данных.
Вместо того, чтобы указывать на действующую базу данных, укажите на фиксированное имя снимка, например ReadOnlyCopy. Выполняйте обычные загрузки в действующей базе данных, а когда загрузки завершены, отбросьте моментальный снимок и возьмите другой. Процесс создания снимка выполняется довольно быстро.
У этого есть и другие преимущества:
Вот хорошая статья из Simple Talk, объясняющая концепции снимков 2005 года:
http://www.simple-talk.com/sql/database-administration/sql-server-2005-snapshots/
Это зависит от нагрузки ввода-вывода во время создания снимка. На такой стадии, как ваша, когда вы контролируете ежедневные нагрузки и делаете снимок только после завершения загрузки, это должно произойти менее чем за секунду.
Кстати, я должен был добавить, что вы тоже можете протестировать это с помощью Developer Edition. У Dev есть эта функция, но, конечно, вы не можете использовать ее в продакшене.
Чтобы получить необходимую корпоративную версию, мне пришлось бы поспорить с клиентом. Это все еще интересная концепция. У вас есть опыт, что означает «быстрый процесс создания снимков»? Для моего приложения хватит пары секунд.