#sql-server-2008 #database-design #distributed
#sql-server-2008 #база данных-дизайн #распределенная
Вопрос:
Мне нужно реализовать распределенную базу данных для моей системы. Чтобы мое приложение воспринимало базу данных как единую. Но фактическая база данных распределена по двум или трем серверам.
Как это настроить?
Ответ №1:
SQL Server не является распределенной системой баз данных, и поэтому вы не можете этого сделать. Однако в SQL Server есть способ заставить ваше приложение видеть базы данных с разных серверов как единую базу данных на одном сервере. Вы должны добавить связанные серверы и создать синонимы для объектов на другом сервере, чтобы получить к ним доступ так же, как вы получили бы к ним доступ, если бы они находились в одной базе данных.
Как указано в MSDN:
Синонимы могут быть созданы для следующих типов объектов: Хранимая процедура сборки (CLR), Табличная функция сборки (CLR), скалярная функция сборки (CLR), Агрегатные агрегатные функции сборки (CLR), процедура репликации-фильтра, Расширенная хранимая процедура, скалярная функция SQL, табличная функция SQL Функция, SQL Встроенная табличная функция, Хранимая процедура SQL, Представление, Таблица (определяемая пользователем)
Этот список, вероятно, покрывает все ваши потребности. Вы можете найти примеры создания синонимов для удаленных объектов в той же статье.
Как всегда, проверьте производительность вашего приложения, поскольку запросы к распределенным объектам могут быть интенсивными в сети. Например, если вы соединяете две таблицы с разных серверов, существует сетевой трафик для передачи данных с одного сервера на другой. Может быть, вы хотите рассмотреть репликацию / доставку журналов / триггеры или что-то в этом роде, чтобы сохранить точные копии удаленного объекта в вашей основной базе данных.
Пожалуйста, обратите внимание, что синонимы добавлены в SQL Server 2005, а ссылки, которые я предоставил здесь, относятся к SQL Server 2008 R2.
Комментарии:
1. спасибо за ваш ответ.. но делает ли добавление сервера ссылок мою систему распределенной базой данных?
2. SQL Server не распознает «распределенную базу данных» как концепцию, если вы представляете ее как несколько экземпляров SQL Server на разных серверах, каждый из которых имеет часть одной и той же базы данных. Это невозможно в SQL Server. Цитата: «Мне нужно реализовать распределенную базу данных для моей системы. Чтобы мое приложение воспринимало базу данных как единую. Но фактическая база данных распределена по двум или трем серверам. » Первое предложение: нет. Второе предложение: Да, со связанными серверами. Третье предложение: нет, вы не можете — связанные серверы являются «каналом» для доступа к другой базе данных с другого сервера.
3. И какая распределенная база данных вам нужна?
4. спасибо за вашу помощь .. я пробовал с репликацией. связано ли это с распределенной базой данных? я видел sql-запрос с командой BEGIN DISTRIBUTED TRANSACTION . так разве это не означает, что sql может обрабатывать распределенную базу данных? В моей системе доступ к базе данных осуществляется многими приложениями. как для чтения, так и для записи. поэтому я боюсь, что есть вероятность взаимоблокировки или, возможно, приложения не будут получать обновленные данные. для оптимизации я искал эту распределенную концепцию