Share via


Compreendendo servidores de banco de dados federados

Para alcançar os altos níveis de desempenho necessários para os maiores sites, um sistema de multicamadas normalmente equilibra a carga de processamento para cada camada pelos vários servidores. O SQL Server compartilha a carga de processamento de banco de dados com um grupo de servidores, particionando horizontalmente o particionamento dos dados no banco de dados. Esses servidores são gerenciados independentemente, mas cooperam para processar os requisitos do banco de dados nos aplicativos; esse grupo de servidores cooperativos é chamado de federação.

Uma camada de banco de dados federado pode alcançar níveis de altíssimo desempenho apenas se o aplicativo enviar cada instrução SQL ao servidor membro que tem a maioria dos dados necessários da instrução. Isso se chama colocação da instrução SQL com os dados exigidos pela instrução. A colocação das instruções SQL com os dados exigidos não é um requisito exclusivo para servidores federados. Também é necessário em sistemas cluster.

Apesar de uma federação de servidores apresentar a mesma imagem aos aplicativos como um servidor de banco de dados único, há diferenças internas em como a camada de serviços de banco de dados é implementada, como mostrado na seguinte tabela.

Camada de servidor única

Camada de servidor federada

Há uma instância do SQL Server no servidor de produção.

Há uma instância do SQL Server em cada servidor membro.

Os dados de produção são armazenados em um banco de dados.

Cada servidor membro tem um banco de dados membro. Os dados são difundidos pelos bancos de dados membro.

Cada tabela é normalmente uma entidade única.

As tabelas do banco de dados original são horizontalmente particionadas em tabelas membro. Há uma tabela membro por banco de dados membro, e exibições particionadas distribuídas são usadas para fazer com que pareça que há uma cópia completa da tabela origina em cada servidor membro.

Todas as conexões são feitas para um único servidor e todas as instruções SQL são processadas pela mesma instância do SQL Server.

Uma camada de aplicativo deve ser capaz de colocar as instruções SQL ao servidor membro que tenha a maioria dos dados mencionados pela instrução.