Exportar (0) Imprimir
Expandir Tudo

Considerações sobre desenvolvimento de federações de bancos de dados (Banco de Dados SQL do Azure)

Atualizado: janeiro de 2015

O desenvolvimento de soluções usando federações requer considerações adicionais além das abordadas em Considerações de Desenvolvimento do Banco de Dados SQL do Azure. Informações específicas ao desenvolvimento com federações são abordadas a seguir.

ImportantImportante
A implementação atual de Federações será desativada com camadas de serviço Web e Business. Considere o uso de Escala Elástica para o Banco de Dados SQL do Azure para criar uma solução de expansão fragmentada no Banco de Dados SQL do Azure. Para experimentar, consulte Introdução à visualização de escala elástica do Banco de Dados SQL do Azure.

Uma federação típica é composta de muitos bancos de dados de membros de federação individuais, que são implementados como bancos de dados físicos no Banco de Dados SQL. Embora seja possível conectar-se diretamente a um desses bancos de dados físicos, este método de conectividade é principalmente útil somente para ferramentas que não tenham reconhecimento de federação. Para a maioria dos aplicativos, é muito mais conveniente usar USE FEDERATION (SQL Database) para estabelecer uma conexão com uma federação. A instrução USE FEDERATION não exige um entendimento dos bancos de dados físicos subjacentes, e automaticamente rotearão a conexão com o membro da federação que contém os dados solicitados.

A instrução USE FEDERATION aceita um valor de chave da federação, que é usado pelo Banco de Dados SQL para rotear a conexão para o membro da federação que contém os dados associados a esse valor. Por exemplo, se seus dados estiverem federados em customer_id e você especificar uma chave de federação de 100, você será conectado ao membro que contiver as linhas da tabela federada para customer_id=100.

Além de simplesmente se conectar ao membro correto da federação, a instrução USE FEDERATION permite que você filtre a conexão a apenas os registros que correspondam exatamente ao valor da chave da federação especificado. No exemplo acima, se a cláusula FILTER=ON for especificada, somente as linhas associadas ao customer_id=100 serão retornadas pela conexão. Isso é realizado pelo processador de consultas que adiciona um predicado de (federated_column=value) à coluna federada de cada consulta que se refere a uma tabela federada.

Se a cláusula FILTER=OFF for especificada, a conexão ainda será estabelecida com o membro da federação que contiver o valor especificado, mas as operações de consulta poderão acessar todo o intervalo de valores armazenados no membro da federação. Por exemplo, se o membro da federação abranger o intervalo de 0 a 200 para o customer_id, você poderá acessar qualquer registro dentro desse intervalo, mesmo se especificar customer_id=100 na instrução USE FEDERATION.

As conexões sem filtragem são úteis ao realizar operações que afetam todas as linhas armazenadas em um membro, como modificações de esquema ou operações em massa como inserções em massa.

A distribuição de dados por vários bancos de dados físicos em uma federação introduz requisitos adicionais no nível do aplicativo. Como o Banco de dados SQL do Microsoft Azure não oferece suporte a consultas distribuídas por vários bancos de dados, é necessário implementar a lógica para executar essas operações no seu aplicativo. Por exemplo, para executar select * a partir de uma tabela federada, você pode fazer o seguinte:

  1. Conectar-se à federação usando o valor inferior do intervalo coberto pela chave da federação. Por exemplo, USE FEDERATION customerfederation (customer_id=1) WITH RESET, FILTERING=OFF.

  2. Select * para retornar as linhas da tabela federada contidas nesse membro da federação e, em seguida, armazenar os resultados na memória.

  3. Consultar sys.federation_member_distributions (SQL Database) para determinar o valor range_low do próximo membro da federação.

  4. Conectar-se à federação usando o valor range_low. Por exemplo, USE FEDERATION customerfederation (customer_id=100) WITH RESET, FILTERING=OFF.

  5. Select * para retornar as linhas contidas nesse membro da federação e, em seguida, armazená-las com os resultados da consulta anterior.

  6. Repita as etapas 3-5 até que não haja mais entradas em sys.federation_member_distributions com um valor de range_low maior do que o valor atual usado como o valor da chave da federação.

O processo de consultar cada membro individual pode ser executado em paralelo, o que pode reduzir o tempo para agregar os dados e retorná-los para o usuário do aplicativo.

Consulte também

Mostrar:
© 2015 Microsoft