У нас есть несколько серверов MSSQL 2005, содержащих разрозненные хранилища информации. Мы хотим, чтобы наши разработчики баз данных имели возможность объединяться в эти разрозненные хранилища наиболее прозрачным и эффективным способом. Базы данных различаются по размеру, но в среднем составляют десятки миллионов строк и часто обновляются. Серверы физически расположены рядом.
Я хочу иметь возможность создать своего рода «единую логическую базу данных» из множества различных экземпляров сервера.
Связанные серверы - очевидный выбор, но меня беспокоит производительность и тесная привязка запроса к конкретному серверу. Я слишком волнуюсь? Есть ли у вас опыт поддержки этого решения?
Другие варианты, которые я рассматриваю, - это использование репликации, пакетов SSIS, брокера служб или физическое подключение дополнительных баз данных к одной из наших более крупных машин.
Кроме того, мне интересно, есть ли другие поставщики, которые предлагают решение этой проблемы?
От SQL Server не существует решения, которое допускало бы «прозрачный» доступ к данным. Для выполнения запросов на многих серверах требуются распределенные запросы (т. Е. Связанные серверы), и наличие решения, развернутого с жестко закодированными запросами к связанным серверам во многих экземплярах, быстро сработает по причинам доступности и удобства обслуживания. Удивительно, насколько на самом деле являются мобильные базы данных: имена серверов меняются, происходит аварийное переключение, базы данных перемещаются из соображений балансировки нагрузки. Учитывая тесную взаимосвязь DQ, это не работает.
Другие крупные развертывания подошли к этому, перейдя на SOA и полагаясь на обмен сообщениями, см. MySpace использует SQL Server Service Broker для защиты целостности 1 петабайта данных. Это подразумевает серьезный сдвиг парадигмы в программировании и подходе к решению, существующие приложения, использующие запросы T-SQL, не будут волшебным образом прозрачно работать на «ферме» серверов.
Ваше решение будет заключаться в интеграции сервисный брокер в ваше приложение. похоже, вас может заинтересовать Пример интеграции данных в реальном времени. Вы также можете создать представления, которые охватывают экземпляры sql server. в зависимости от типа объединений, которые вы пытаетесь выполнить, и от того, где вы хотите запускать запросы (распределенные или централизованные), один из этих подходов (или оба) должен делать то, что вам нужно
Я не знаю ничего похожего на то, что вы описываете для SQL Server, ни от Microsoft, ни от сторонних производителей. Связанные серверы позволят вам создавать межсерверные запросы, но они совсем не прозрачны. Я думаю, что самое близкое, что вы могли бы сделать, - это использовать репликацию или SSIS для агрегирования данных из различных экземпляров в единое хранилище данных.
Похоже, вы ищете «Центральные серверы управления», новую функцию SQL 2008.
Вот официальный документан: http://technet.microsoft.com/en-us/library/bb895144.aspx
Вот блог с примером: http://www.mssqltips.com/sqlservertip/1767/execute-sql-server-query-on-multiple-servers-at-the-same-time/