Проектирование приложений для работы с федеративными серверами баз данных

Обновляемые распределенные секционированные представления поддерживают взаимодействие групп серверов SQL Server 2005 при обработке рабочих нагрузок больших многоуровневых веб-узлов. Каждый из серверов администрируется независимо, однако для выполнения общей работы на каждом из серверов экземпляры SQL Server 2005 используют распределенные секционированные представления. Группа автономных серверов, взаимодействующих с целью выполнения общей работы, называется федерацией.

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

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

В многоуровневой архитектуре реализация системы осуществляется с использованием следующих уровней:

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

  • Уровень деловых служб. Набор компонентов COM+, содержащий бизнес-логику организации. Уровень деловых служб использует следующий уровень для долговременного хранения данных.

  • Уровень служб данных. Набор компонентов, таких как базы данных SQL Server, который позволяет хранить данные на постоянном носителе. Этот уровень называют также уровнем материализации данных.

Уровень деловых служб построен в виде набора компонентов COM+, работающих на серверах приложений. Это позволяет системе баланса загрузки сети Microsoft Windows равномерно распределять запросы пользователя по уровню деловых служб. Поскольку любой запрос пользователя может быть обработан на любом сервере приложений, бизнес-компоненты должны иметь некий механизм маршрутизации формируемых ими инструкций SQL к соответствующим федеративным серверам. Бизнес-компоненты должны сопоставлять наборы данных, полученные от клиента, с правилами маршрутизации и определять, какой федеративный сервер должен обработать запрос.

На уровне деловых служб необходимо реализовать гибкий механизм маршрутизации данных, который обеспечит хранение правил маршрутизации в долговременном хранилище, например в SQL Server 2005 или в службе каталогов Windows Active Directory, а также обеспечит использование этих правил компонентами уровня деловых служб в процессе работы. Компоненту COM+ можно назначить код, сопоставляющий ключи с правилами маршрутизации и позволяющий определить, какой из федеративных серверов может наиболее эффективно обработать запрос. Этот компонент маршрутизации COM+ можно затем вызывать при помощи любого другого компонента COM+ на уровне деловых служб, который имеет доступ к секционированным данным. Например, в системе, в которой данные о заказчиках секционированы по идентификаторам клиентов, можно выполнить следующие операции.

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

  • Создать деловой компонент маршрутизации данных, который использует на входе одно значение ключа или начальный и конечный ключи диапазона значений ключей. Такой компонент COM+ будет считывать данные из таблицы маршрутизации, сравнивать на входе ключ или диапазон ключей с диапазонами, записанными на федеративных серверах, а затем возвращать имя федеративного сервера, который наилучшим образом подходит для вызова компонента или приложения.

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

Этот метод не требует внесения изменений в код приложения в случае изменения способа секционирования данных. Правила маршрутизации данных можно будет изменять во время работы приложения.