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. |