Nesta atividade de laboratório você irá aprender a utilizar os mecanismos de fragmentação e replicação de bases de dados fornecidos pelo SQL Server.
O SQL Server utiliza uma arquitetura na qual vários servidores distribuídos podem ser acessados a partir de um único servidor. Para que isto seja possível, estes servidores devem ser configurados como Linked Servers.
A configuração de Linked Servers pode ser feita usando a stored procedure sp_addlinkedserver ou através do Enterprise Manager:
Dados podem ser fragmentados no SQL Server criando partições de uma tabela que podem estar espalhadas por vários linked servers.
As partições da tabela podem ser vistas como uma única tabela. Para isto é preciso criar uma visão na base de dados. A visão deve fazer a união dos fragmentos, no caso de partições horizontais, ou junção dos fragmentos, no caso de partições verticais.
Suponha que temos no servidor local uma partição horizontal de uma tabela, chamada Part1, e uma segunda partição, chamada Part2 na base de dados BD de um servidor remoto, chamado ServRemoto. O comando:
create view Tudo as select * from Part1 union all select * from ServRemoto.BD.dbo.Part2
cria uma visão chamada Tudo que faz a união das tuplas de Part1 e Part2.
Exercício 1
Suponha que um determinado banco opera em dois países, e que as contas de cada país estão em um servidor diferente. Para que possamos simular este cenário, configure um servidor remoto - a máquina de um colega seu - como linked server na sua máquina. Em seguida, crie uma base de dados em cada servidor, e em cada base crie a tabela abaixo, que será uma partição horizontal da tabela global de clientes do banco.
Crie na sua máquina uma visão que faça a união das tuplas das duas partições. Faça a seleção do conteúdo da visão. O resultado desta operação deve mostrar as tuplas armazenadas nas duas partições da tabela global de clientes do banco.
Agora, suponha que o banco criou um novo tipo de conta - contas especiais com limite de crédito. Estas contas foram disponibilizadas inicialmente somente no exterior (ou seja, para contas do servidor remoto). No entanto, a sede do banco (servidor local) quer ter controle sobre os limites de crédito dos clientes. Portanto, ao invés de adicionar o atributo limite à tabela no servidor remoto, será criado um fragmento vertical desta tabela no servidor local:
Insira na tabela contasEspeciais os limites dos clientes registrados no servidor remoto. Em seguida, crie uma visão que faça a junção dos fragmentos da tabela de clientes com contas especiais.
Em um segundo momento, suponha que o banco decidiu oferecer as contas especiais com limite de crédito para todos os seus clientes. Adicione à tabela contasEspeciais os clientes registrados no servidor local, e reescreva a visão criada anteriormente. Note que agora temos uma fragmentação mista da tabela global de clientes.
O SQL Server permite que sejam criadas réplicas de tabelas, seguindo o modelo publish-subscribe.
Um publisher é um servidor dos dados replicados. Um subscriber replica dados publicados pelos publishers. Entre eles há um distributor, que é responsável por obter os dados nos publishers e entregá-los aos subscribers.
O SQL Server oferece três tipos de replicação:
Replicações podem ser configuradas na pasta Replication no Enterprise Manager, com a opção Configure Publishing, Subscribers and Distribution do menu de Pop-Up (botão da direita do mouse).