Você está na página 1de 250

Tpicos Avanados em Banco de Dados

Prof. Alan Alves Oliveira

1. Reviso dos conceitos bsicos de bancos de dados relacionais

Arquivos tradicionais

Arquivos tradicionais:
Produo Vendas Compras

Produtos

...

Produtos

Produtos

...

...

Arquivos tradicionais

Principais problemas:

Alta dependncia entre dados e aplicao. Redundncia dos dados. Inconsistncia dos dados. Dificuldade no tratamento do acesso concorrente. Dificuldade em manter a integridade dos dados. Dificuldade na recuperao dos dados. Problemas de atomicidade. Dificuldade na implementao de segurana de acesso.

Banco de dados

Banco de dados:
Produo Vendas Compras

Banco de dados
Produtos Clientes

...

Banco de dados

De acordo com Elmasri (2000):

Um banco de dados possui alguma fonte, da qual os dados so derivados, algum grau de interao com eventos do mundo real e um pblico que est ativamente interessado no contedo do banco de dados.

Banco de dados

Principais caractersticas de um sistema de banco de dados:

Compartilhamento das informaes. Autodescrio. Isolamento entre dados e aplicao. Independncia fsica e lgica dos dados.

O modelo relacional

Criado em 1970 por E. F. Ted Codd. Evoluo dos modelos em rede e hierrquico. Utiliza conceitos de uma relao matemtica. Sua principal caracterstica a simplicidade e a eficincia.
8

O modelo relacional

o principal modelo utilizado atualmente em aplicaes comerciais.

O modelo relacional

Alguns SGDBs baseados no modelo relacional:

MySQL (Oracle). Oracle (Oracle). Sql Server (Microsoft). DB2 (IBM). Ingres (Ingres Corporation). Sybase (Sybase). PostgreSQL (PostgreSQL).
10

O modelo relacional

O banco de dados relacional composto por um conjunto de relaes (tabelas). Uma relao, por sua vez, composta por um conjunto de atributos (colunas). Um conjunto de atributos relacionados entre si d origem a uma tupla (linha).

11

O modelo relacional

Um atributo representa o papel desempenhado por um domnio na relao.

12

O modelo relacional
Atributos (campos)

PESSOA

Nome Joo da Silva Joaquim Souza

CPF

Cidade

DataNasc 12/05/1975 25/04/1963 17/06/1986 16/07/1984

85458965874 Divinpolis 12896547985 Itana 65385478966 Divinpolis 45789632578 Divinpolis

Tuplas (linhas)

Maria Gonalves Juliano Moreira

Relao (tabela)

13

O modelo relacional

Uma tabela no possui ordenamento predefinido das linhas. A ordem dos campos no afeta a definio da tabela. O valor de um campo deve ser atmico, no divisvel em componentes (forma normal 1FN).

14

O modelo relacional

Restrio de integridade da entidade:

Uma linha da tabela deve possuir uma identidade nica; Chave primria (Primary Key).

Restrio de integridade referencial:

Em um modelo relacional, as tabelas podem estar associadas. Esta associao requer a garantia da integridade. Chave estrangeira (Foreign Key).
15

O modelo relacional
CLIENTE Codigo Nome 2 Joaquim Souza 21 Maria Gonalves 7 Juliano Moreira Chave Primria (PK) NF Numero CodigoCliente Data 000001 12 000056 12 000078 21 000010 7 16/01/2010 23/10/2010 02/12/2010 17/01/2010
16

CPF 85458965874 12896547985 65385478966 45789632578 Chave Estrangeira (FK)

Cidade Divinpolis Itana Divinpolis Divinpolis

12 Joo da Silva

O modelo relacional

Restrio de integridade de domnio:

O valor de um campo deve corresponder aos valores definidos pelo seu domnio. Um campo com domnio integer (inteiro), por exemplo, s poder receber valores numricos inteiros.

Restrio de integridade de valor nulo:

Define se o valor de um campo pode ou no conter nulos. A clusula NOT NULL define que um campo no poder receber valores nulos.
17

O modelo relacional

Restries de integridade semntica:

So restries que devem ser implementadas atravs de regras (clusula CHECK por exemplo), ou procedimentos, geralmente triggers. Exemplos de restrio semntica:

O salrio de um funcionrio no pode ser maior que o salrio de seu gerente; O funcionrio pode fazer, no mximo, duas horas extras por dia.

18

O modelo relacional

ndices:

ndices so estruturas de dados associadas a uma tabela. Os ndices so criados pelo projetista ou administrador do banco de dados com o objetivo de melhorar o desempenho das buscas. Qualquer campo pode ter um ndice associado. Inclusive, um ndice pode ser composto por mais de um campo.

19

O modelo relacional

ndices:

A estrutura mais utilizada para ndices em SGBDs relacionais a rvore B+. A estrutura de dados do ndice mantm apenas os dados referentes chave de pesquisa indexada e o seu endereo fsico real. Apesar dos ndices melhorarem o desempenho em pesquisas, podem prejudicar o desempenho nas atualizaes de dados, afinal, h um custo para mant-lo.
20

O modelo relacional

ndices:

ndice primrio: ndice referente chave primria da tabela. Toda chave primria constitui um ndice. ndice nico: no permite que existam dois valores de ndice iguais.

21

SGBD

... software que incorpora as funes de definio, recuperao e alterao de dados em um banco de dados (HEUSER, 1999. P. 5). ... sistema de software de finalidade genrica que facilita o processo de definio, construo e manipulao de banco de dados para vrias aplicaes. (ELMASRI; NAVATHE, 2002. P. 4).
22

SGBD

Atualmente os SGBDs incorporam ferramentas e recursos avanados e vo alm da simples construo e manipulao de dados:

Distribuio e paralelismo. Data Warehouse (Armazm de dados). Data Mining (Minerao de dados). OLAP (On-line Analytical Processing).

23

SGBD

Esquema simplificado de um SGBD:

24

Programadores de aplicao

Equipe do DBA

Usurios casuais

PROGRAMAS DA APLICAO Pr-compilador Compilador da Linguagem Hospedeira DECLARAES EM DML

Usurios leigos

DECLARAES EM DDL

COMANDOS PRIVILEGIADOS

CONSULTA INTERATIVA

Compilador de DDL

Catlogo do sistema / Dicionrio de dados

A B

Compilador de Consulta

TRANSAES COMPILADAS (PREDEFINIDAS)

execuo C Processador Run-Time do Banco de Dados

Compilador de DML execuo

execuo

Gerenciador de Dados Armazenados

Subsistemas de Controle de Concorrncia/Backup/Recuperao

BANCO DE DADOS ARMAZENADO

25

SGBD

Caractersticas de um bom SGBD:

Controle sobre redundncia. Compartilhamento de dados:


Controle de concorrncia. Facilidade no fornecimento de diferentes vises para diferentes grupos de usurios.

Controle de transaes. Esse controle visa manter a atomicidade de operaes.

26

SGBD

Caractersticas de um bom SGBD:

Restrio ao acesso no autorizado:

Sistema de segurana garantindo acesso especfico a cada usurio ou grupo de usurios; Segurana no acesso e nas operaes executadas no BD.

Fornecimento de mltiplas interfaces visando atender aos diversos usurios interessados no SGBD.

27

SGBD

Caractersticas de um bom SGBD:

Implementao de regras de integridade e restries associadas aos dados:


Tipo de dado; Unicidade do dado (restries de chave); Impossibilidade do dado no ser informado (NOT NULL). Chaves estrangeiras.

Implementao de regras de integridade referencial:

Fornecimento de mecanismos de backup e recuperao de dados.


28

Linguagem SQL

Structured Query Language: Linguagem estruturada de consulta. Linguagem utilizada pelos SGBD (Sistemas Gerenciadores de Banco de Dados) relacionais.

29

Linguagem SQL

Tipos:

DDL (Data Definition Language): linguagem de definio de dados. Atravs dela podemos manipular objetos no banco de dados. DML (Data Manipulation Language): linguagem de manipulao de dados. Permite a atualizao dos dados no banco de dados. DQL (Data Query Language): linguagem de consulta de dados. Permite a recuperao de dados do banco de dados.
30

Linguagem SQL

Tipos:

DCL (Data Control Language): linguagem de controle de dados. Possibilita o controle sobre o acesso aos dados (definio de usurios e permisses). DTL (Data Transaction Language): linguagem de transao de dados. Permite a manipulao de transaes no servidor do banco de dados.

31

Linguagem SQL

DDL Data Definition Language:

Neste grupo da linguagem SQL temos os seguintes comandos principais:


CREATE: permite a criao de objetos no banco de dados. ALTER: permite a alterao da estrutura de objetos no banco de dados. DROP: permite a excluso de objetos do banco de dados.

32

Linguagem SQL

DDL Data Definition Language:

Exemplos:

01 02 03 04 05 06 07 08 09 10 11

-- Cria uma tabela CREATE TABLE Cliente ( Codigo INT PRIMARY KEY, Nome VARCHAR(50) ); -- Altera uma tabela ALTER TABLE Cliente ADD Endereco VARCHAR(100); -- Exclui uma tabela DROP TABLE Cliente;

33

Linguagem SQL

DML Data Manipulation Language:

Os comandos desse grupo da linguagem SQL permite a atualizao de dados: Principais comandos:

INSERT INTO: permita a incluso de dados em uma tabela. UPDATE: permite a alterao de dados existentes em uma tabela. DELETE: permite a excluso de dados de uma tabela.

34

Linguagem SQL

DML Data Manipulation Language:

Exemplos:

01 02 03 04 05 06 07 08 09 10 11 12

-- Insere um registro na tabela Cliente INSERT INTO Cliente VALUES (1, 'Joo da Silva', 'Rua Dois, 187'); -- Altera um registro na tabela Cliente UPDATE Cliente SET Endereco = 'Rua Dois, 200' WHERE Codigo = 1; -- Exclui um registro da tabela Cliente DELETE FROM Cliente WHERE Codigo = 1;

35

Linguagem SQL

DQL Data Query Language:

Possui um nico comando que permite a recuperao de dados do banco de dados:

SELECT: permita a recuperao de dados.

O comando SELECT deve ser utilizado com algumas clusulas complementares:


FROM (obrigatrio): define a origem dos dados. WHERE (opcional): permite a filtragem do resultado. ORDER BY (opcional): permite a ordenao do resultado.

36

Linguagem SQL

DQL Data Query Language:

O comando SELECT deve ser utilizado com algumas clusulas complementares:


GROUP BY (opcional): permite o agrupamento de registros. HAVING (opcional): permite a filtragem de registros agrupados.

37

Linguagem SQL

DQL Data Query Language:

As junes de tabelas (mais de uma tabela na mesma instruo SQL) podem ser feitas utilizando-se a clusula WHERE ou atravs da clusula JOIN (INNER JOIN, LEFT JOIN, etc.). As funes de agregao podem ser utilizadas para manipular dados agrupados (fazer somas (SUM), contagem (COUNT), mdia (AVG), etc.).

38

Linguagem SQL

DQL Data Query Language:

Em muitos casos pode ser interessante a utilizao de subconsultas (uma consulta dentro da outra). A utilizao de apelidos (alias) em nomes de tabelas e campos bastante til.

39

Linguagem SQL

DQL Data Query Language:

Exemplos:

01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16

-- Seleciona todos os dados na tabela Cliente SELECT * FROM Cliente -- Seleciona, filtra e ordena o nome e cdigo da tabela Cliente SELECT Codigo, Nome FROM Cliente WHERE Nome LIKE 'Antnio%' ORDER BY Codigo -- Faz uma juno de tabelas SELECT C.Nome NF.Numero FROM Cliente C INNER JOIN NotaFiscal NF ON C.Codigo = NF.ClienteCodigo

40

Programao em BD-R

Stored Procedure:

Procedimento Armazenado. Possui alguma funcionalidade e pode ser chamada de aplicativos, interfaces com o usurio, tarefas agendadas, etc. Em geral so escritas com uma extenso da linguagem SQL:

Microsoft SQL Server: Transact SQL (T-SQL) Oracle: PL-SQL. MySQL: padro SQL 2003.
41

Programao em BD-R

Stored Procedure:

Sintaxe bsica (SQL Server):

01 02 03 04 05

CREATE PROCEDURE <nome_do_procedimento> [@parametro_1 tipo_parametro_1, ..., @parametro_n tipo_parametro_n] AS BEGIN <linhas_de_comando> END

42

Programao em BD-R

Stored Procedure:

Exemplo (SQL Server):

01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19

CREATE PROCEDURE sp_VerificaSituacao @cliente int AS BEGIN DECLARE @var1 INT, @var2 VARCHAR(MAX) SET @var1 = (SELECT COUNT(L.PessoaCodigoCliente) FROM LOCACAO L WHERE L.DataDevolucao IS NULL AND L.PessoaCodigoCliente = @cliente) IF @var1 > 0 SET @var2 = 'Possui locaes em aberto!' ELSE SET @var2 = 'No possui locaes em aberto!' PRINT @var2 END

43

Programao em BD-R

Stored Procedure:

Exemplo (MySQL):

01 02 03 04 05 06 07 08 09 10 11 12 13 14 15

DELIMITER // CREATE PROCEDURE sp_ClientesPorCidade(IN cidade VARCHAR(50)) BEGIN SELECT P.Nome FROM PESSOA P INNER JOIN CIDADE C ON P.CidadeCodigo = C.CidadeCodigo WHERE P.Ecliente = 1 AND C.Nome = cidade; END // DELIMITER ; 44

Programao em BD-R

Trigger:

Trigger = gatilho. Procedimento armazenado disparado por um evento do banco de dados. Principais aplicaes:

Mecanismos de validao complexos. Criao de regras complexas de negcio. Criao de contedos derivados. Log de atualizao de dados (incluses, alteraes ou excluses).
45

Programao em BD-R

Trigger:

Sintaxe bsica (SQL Server):

01 02 03 04 05 06 07

CREATE TRIGGER <nome_da_trigger> ON <nome_da_tabela> {[FOR] | [AFTER] | [INSTEAD OF]} {[INSERT][,] [DELETE][,] [UPDATE]} AS BEGIN <linhas_de_cdigo> END[;]

46

Programao em BD-R

Trigger:

Exemplo (SQL Server):

01 02 03 04 05 06 07 08 09 10

CREATE TRIGGER tr_ValidaExclusaoUsuario ON USUARIO FOR DELETE AS BEGIN IF EXISTS (SELECT * FROM DELETED WHERE UsuarioLogin = 'MESTRE') BEGIN RAISERROR('Usurio "MESTRE" no pode ser excludo!', 16, 1) ROLLBACK END END

47

Programao em BD-R

Trigger:

Exemplo (MySQL):

01 02 03 04 05 06 07 08 09

DELIMITER // CREATE TRIGGER tr_Exemplo1 BEFORE INSERT ON estado FOR EACH ROW BEGIN IF (CHAR_LENGTH(NEW.Nome) = 0) THEN SET NEW.Nome = NULL; END IF; END // DELIMITER ;

48

Programao em BD-R

Funo:

Procedimento armazenado utilizado geralmente para se retornar um valor aps o processamento de dados. muito comum o uso de funes em sentenas de recuperao ou manipulao de dados (DML ou DQL). Os SGBDs disponibilizam uma srie de funes predefinidas.

49

Programao em BD-R

Funo:

Sintaxe bsica (SQL Server):

01 02 03 04 05 06 07 08

CREATE FUNCTION <nome_da_funo> ([parmetro_1[, parmetro_2[, parmetro_3[, ...[, parmetro_n]]]]]) RETURNS <tipo_de_dados_a_ser_retornado> AS BEGIN <linhas_de_cdigo> RETURN <valor_a_ser_retornado> END[;]

50

Programao em BD-R

Funo:

Exemplo (SQL Server):

01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16

CREATE FUNCTION ft_QuantidadeLocacoes (@codCliente INT) RETURNS INT AS BEGIN DECLARE @Quant INT SELECT @Quant = COUNT(L.PessoaCodigoCliente) FROM LOCACAO L WHERE L.PessoaCodigoCliente = @CodCliente RETURN ISNULL(@Quant, 0) END 51

Programao em BD-R

Funo:

Exemplo (MySQL):

01 02 03 04 05 06 07 08 09 10 11 12 13 14 15

DELIMITER // CREATE FUNCTION ft_ClientesPorCidade(cidade VARCHAR(50)) RETURNS INT BEGIN RETURN (SELECT COUNT(PessoaCodigo) FROM pessoa P INNER JOIN cidade C ON P.CidadeCodigo = C.CidadeCodigo WHERE C.Nome = cidade AND P.ECliente = 1); END // DELIMITER ;

52

2. Bancos de dados distribudos Conceituao inicial

Computao distribuda

Diversas unidades de processamento. Heterogeneidade. Dependncia da tecnologia de redes. Viabilidade baseada em:

Maior poder de processamento. Independncia das unidades de processamento, cada uma podendo executar suas prprias aplicaes.
54

Computao distribuda

Bons exemplos de computao distribuda so as aplicaes que executam sobre a plataforma BOINC (Bekerley Open Infastructure Computing):

SETI@home. Climatepredicion.net. Einstein@home. Malaria Control. etc.


55

Bancos de dados distribudos

Definies:

... uma coleo de mltiplos bancos de dados logicamente inter-relacionados distribudos por uma rede de computadores, e um sistema de gerenciamento de banco de dados distribudo (SGBDD) como um sistema de software que gerencia um banco de dados distribudo enquanto torna a distribuio transparente para o usurio. (ELMASRI, NAVATHE, 2005, p. 579)

56

Bancos de dados distribudos

Definies:

Um sistema de banco de dados distribudo consiste em uma coleo de sites, interligados atravs de algum tipo de rede de comunicaes em que: a. Cada site ele prprio um site completo do sistema de banco de dados, mas b. Os sites concordaram em atuar juntos, de modo que um usurio em qualquer site pode ter acesso a dados em qualquer lugar da rede, exatamente como se os dados estivessem armazenados no site do prprio usurio. (DATE, 2004, p. 555)
57

Bancos de dados distribudos

Definies:

... consiste em sites pouco acoplados, que no compartilham componentes fsicos. Alm do mais, os sistemas de banco de dados que executam em cada site podem ter um grau de independncia mtua substancial. (SILBERSCHATZ, KORTH, SUDARSHAN, 2006, p. 561).

58

Bancos de dados distribudos

Sistema de banco de dados centralizado sobre uma rede:


Site 1 Site 2

Rede de comunicaes Site 5

Site 3

Site 4
59

Bancos de dados distribudos

Sistema de banco de dados distribudo:


Site 1 Site 2

Rede de comunicaes Site 5

Site 3

Site 4
60

Bancos de dados distribudos

Principais caractersticas de bancos de dados distribudos:

Dados armazenados fisicamente separados em sites (ns) de uma rede. O processamento fisicamente independente. Cada site responsvel por uma carga de processamento e a integrao feita pela rede. Virtualmente o que existe um banco de dados, ou seja, a distribuio fsica transparente ao usurio (no se trata de uma coleo de arquivos).
61

Bancos de dados distribudos

Principais caractersticas de bancos de dados distribudos:

O Sistema Gerenciador de Bancos de Dados Distribudos (SGBDD) possui todas as funcionalidades de um SGBD.

62

Bancos de dados distribudos

Vantagens

(ELMASRI, NAVATHE, 2005, p. 580, 581):

Gerenciamento de dados distribudos com nveis diferentes de transparncia. Transparncia de distribuio ou rede. Transparncia de replicao. Transparncia de fragmentao. Melhoria na confiabilidade e disponibilidade.

Melhoria no desempenho. Maior facilidade de expanso.

63

Bancos de dados distribudos

Vantagens:

(DATE, 2004, p. 556):

Bancos de dados distribudos refletem melhor a realidade das empresas.

Autonomia local.

64

Bancos de dados distribudos

Desvantagens (problemas):

Aumento da complexidade. Aumento do custo (tanto de hardware como de projeto e pessoas envolvidas). Obviamente o ideal analisar o custo/benefcio e no somente o custo. Possibilidade do aumento de problemas de controle (conflitos de sincronizao e coordenao). Necessidade de maior ateno com a segurana de acesso.

65

Bancos de dados distribudos

Aplicaes:

BDD podem ser aplicados em qualquer situao em que se necessite de descentralizao dos dados. Em geral isso acontece em organizaes com estrutura descentralizada: Exemplos:

Companhias areas. Bancos. Redes de lojas. Cadeias de hotis.


66

Bancos de dados distribudos

Os 12 objetivos (DATE, 2004, p. 557-564):

1 - Autonomia local:

... os sites devem ser autnomos na maior extenso possvel. Um site X deve depender o mnimo possvel de um site Y para realizar as suas operaes. Dados locais so de responsabilidade do site local. Todas as polticas (segurana, integridade, armazenamento) so implementadas no site local.

67

Bancos de dados distribudos

Os 12 objetivos (DATE, 2004, p. 557-564):

2 No dependncia de um site central:

No h a figura de um site mestre, responsvel pela operao do sistema como um todo. Esse objetivo demandado por duas razes principais:

O site central se poderia se tornar um gargalo na operao do sistema. Existiria o problema do nico ponto de falha, ou seja, caindo o site central todo o sistema cairia.

68

Bancos de dados distribudos

Os 12 objetivos (DATE, 2004, p. 557-564):

3 Operao contnua:

O sistema distribudo (banco de dados nesse caso) deve oferecer maior confiabilidade e disponibilidade que um sistema centralizado:

Confiabilidade: ... probabilidade do sistema funcionar sem queda em qualquer momento dado. Disponibilidade: ... probabilidade de o sistema estar pronto e funcionando continuamente sem queda durante um perodo especificado.

69

Bancos de dados distribudos

Os 12 objetivos (DATE, 2004, p. 557-564):

4 Independncia de localizao:

Os usurios no precisam saber onde os dados esto fisicamente armazenados. O acesso deve ser feito como em um sistema centralizado, como se estes dados estivessem armazenados localmente.

70

Bancos de dados distribudos

Os 12 objetivos (DATE, 2004, p. 557-564):

5 Independncia de fragmentao:

Como veremos mais adiante, a distribuio dos dados pode ser feita atravs de um processo de fragmentao horizontal ou vertical. A independncia de fragmentao consiste em torn-la transparente ao usurio, que no precisa saber quais dados esto armazenados em quais sites. Tanto o processo de fragmentao quanto o processo de reconstruo dos dados no devem ser de conhecimento do usurio.

71

Bancos de dados distribudos

Os 12 objetivos (DATE, 2004, p. 557-564):

6 Independncia de replicao:

A replicao outra forma de distribuio de dados onde rplicas distintas (totais ou parciais) so armazenadas em sites distintos. A independncia de replicao consiste em tornar transparente para o usurio a utilizao de rplicas.

72

Bancos de dados distribudos

Os 12 objetivos (DATE, 2004, p. 557-564):

7 Processamento de consulta distribudo:

O sistema gerenciador do banco de dados distribudo deve ser capaz de distribuir o processamento das consultas de modo a otimizar: O tempo de recuperao dos registros. O trfego da resposta na rede. Em outras palavras, um sistema distribudo de banco de dados no pode fixar a forma como as consultas so processadas.

73

Bancos de dados distribudos

Os 12 objetivos (DATE, 2004, p. 557-564):

8 Processamento de transaes distribudo:

O sistema deve ser capaz de controlar uma transao no ambiente distribudo mesmo que ela envolva outras pequenas transaes locais. Exemplo:

Um agente um processo executado em um site especfico. O sistema precisa saber quando dois ou mais agentes fazem parte da mesma transao. A transao como um todo s ter sucesso se todos os agentes conseguirem chegar a um COMMIT.
74

Bancos de dados distribudos

Os 12 objetivos (DATE, 2004, p. 557-564):

9 Independncia do hardware:

O sistema distribudo deve garantir a transparncia com relao ao hardware que o compe. O hardware, mesmo distinto, deve ser capaz de participar como parceiro dentro do sistema.

75

Bancos de dados distribudos

Os 12 objetivos (DATE, 2004, p. 557-564):

10 Independncia de sistema operacional:

desejvel que o SGBDD possa ser executado em diversas plataformas de sistemas operacionais. comum nesse ambiente que o sistema como um todo esteja composto por diversas plataformas.

76

Bancos de dados distribudos

Os 12 objetivos (DATE, 2004, p. 557-564):

11 Independncia da rede:

As redes de comunicao envolvidas no sistema distribudo podem ser distintas e necessrio que o sistema absorva essa distino de forma natural.

77

Bancos de dados distribudos

Os 12 objetivos (DATE, 2004, p. 557-564):

12 Independncia da SGBD:

desejvel que o sistema distribudo admita a existncia de SGBDs diferentes, mais uma vez, de forma transparente ao usurio.

78

Bancos de dados distribudos

Funcionalidades adicionais dos SGBDDs (ELMASRI, NAVATHE, 2005, p. 582):

Rastreamento de dados:

Ampliao do catlogo do SGBDD para rastrear os dados fragmentados ou replicados. Acesso a sites remotos para a transmisso de requisies de consultas e de dados atravs da rede. Capacidade de manter a integridade local dos dados gerenciando as transaes locais ou globais.
79

Processamento de consultas distribudas:

Gerenciamento de transaes distribudas:

Bancos de dados distribudos

Funcionalidades adicionais dos SGBDDs (ELMASRI, NAVATHE, 2005, p. 582):

Gerenciamento dos dados replicados:

Habilidade para decidir a cpia (ou rplica) dos dados ser acessada mantendo a consistncia dos mesmos. Capacidade de recuperar a condio de banco de dados ntegro em situaes de falha em sites individuais. A segurana deve ser ampliada e aplicada a todo o sistema de banco de dados distribudo.
80

Recuperao de banco de dados distribudos:

Segurana:

Bancos de dados distribudos

Funcionalidades adicionais dos SGBDDs (ELMASRI, NAVATHE, 2005, p. 582):

Gerenciamento do catlogo distribudo:

Podemos entender como meta-gerenciamento, j que trata da capacidade do SGBDD gerenciar os metadados distribudos entre os diversos sites.

81

Bancos de dados distribudos

Tipos de bancos de dados distribudos:

Homogneo:

Quando todos os sites utilizam o mesmo SGBDD como servidor. Quando h SGBDDs diferentes nos diversos sites que compem o sistema.

Heterogneo:

82

3. Fragmentao, replicao e tcnicas de alocao em BDD

Tcnicas de distribuio

Obviamente, para se implementar bancos de dados distribudos necessrio alguma forma de distribuio. Nesse material vamos conhecer duas tcnicas utilizadas para isso:

Fragmentao. Replicao.

84

Fragmentao de dados

O primeiro desafio na implementao de um BDD a definio da distribuio dos dados. Em outras palavras, preciso decidir quais sites vo ser usados para armazenar quais dados.

85

Fragmentao de dados

Alguns fatores devem ser levados em considerao para a definio da distribuio dos dados:

Poder de armazenamento do site. Poder de processamento do site. Questes referentes rede (procurando minimizar o trfego).

86

Fragmentao de dados

Por ora, vamos considerar a distribuio de dados sem replicao. Isso quer dizer que cada fragmento do banco de dados s vai existir fisicamente em um site. Fragmentar significa decidir quais relaes (tabelas) vo ser armazenadas em quais sites.
87

Fragmentao de dados

Ou, em uma fragmentao mais detalhada, quais partes de uma relao sero armazenadas em quais sites. Regras que devem ser seguidas na fragmentao:

Completude: A decomposio de uma relao r em fragmentos r1, r2, , rn completa se e somente se cada item de dados de r for encontrado em um fragmento ri.
88

Fragmentao de dados

Regras que devem ser seguidas na fragmentao:

Reconstruo: Se uma relao r decomposta em fragmentos fragmentos r1, r2, , rn, deve sempre ser possvel reconstruir r. Disjuno: Se uma relao r decomposta em fragmentos fragmentos r1, r2, , rn, o item de dados di s pode existir em um dos fragmentos r1, r2, , rn.

89

Fragmentao horizontal

A fragmentao horizontal de uma relao (tabela) consiste em dividir suas tuplas em subconjuntos. O critrio da diviso uma condio definida sobre um ou mais atributos da relao. Pode-se, por exemplo, dividir uma relao de clientes com base no atributo cidade.
90

Fragmentao horizontal

Na prtica, cada site ir conter um subconjunto de tupas do conjunto principal. Mantendo o subconjunto de tuplas no site onde ele ser mais utilizado maximiza-se o processamento minimizando a transferncia de dados. Cada fragmento contm todos os atributos da relao original.
91

Fragmentao horizontal

A reconstruo dos fragmentos nesse tipo de fragmentao feita pela unio dos mesmos. Podemos dizer que uma relao r composta por uma srie de fragmentos r1, r2, , rn.

92

Fragmentao horizontal

A reconstruo de r pode ser representada por:

r = r1 U r2 U U rn

Fragmentao horizontal disjunta:

Um cuidado a ser tomado com relao disjuno. O ideal que os fragmentos sejam disjuntos, ou seja, no exista interseo no vazia entre os conjuntos de tuplas dos mesmos.
93

Fragmentao horizontal

Fragmentao horizontal disjunta:

r1 r2 rn = Nesse caso a relao completa ser representada pela unio de todos os seus fragmentos. Essa decomposio obedece regra da disjuno citada anteriormente.

94

Fragmentao horizontal

Fragmentao horizontal disjunta:

Um exemplo:

Vamos considerar uma relao que armazena os dados dos clientes de uma instituio financeira. Seja o esquema: Cliente(Id, Nome, Cpf, Cidade). A instituio possui clientes somente em Belo Horizonte e So Paulo.

Alm disso, possui infra-estrutura nessas duas cidades para receber e manipular dados. O projetista do BDD decidiu particionar a relao Cliente horizontalmente. O critrio de seleo escolhido foi a cidade do cliente.
95

Fragmentao horizontal

Fragmentao horizontal disjunta:

Um exemplo:

Podemos representar a fragmentao da relao Cliente da seguinte forma:

Cliente1 = SLCidade = Belo Horizonte Cliente Cliente2 = SLCidade = So Paulo Cliente Cliente = Cliente1 UN Cliente2 SL: seleo. UN: unio.
96

A reconstruo de Cliente pode ser representada assim:

Legenda:

Fragmentao horizontal

Fragmentao horizontal disjunta:

Um exemplo:

A regra da completude s ser satisfeita se os nicos valores possveis para o atributo Cidade forem Belo Horizonte e So Paulo. A regra da reconstruo pode ser verificada facilmente atravs de uma operao de unio entre os fragmentos. A regra da disjuno tambm facilmente verificada uma vez que as regras de seleo so mutuamente exclusivas.

97

Cliente

Id 1 2 5 3 8

Nome Joo da Silva Joaquim Marinho Jos Roberto Maria Felisbina Antnia Castro

Cpf 85450988765 63542087400 63821063881 10192837835 77629211000

Cidade Belo Horizonte So Paulo So Paulo Belo Horizonte Belo Horizonte

Belo Horizonte So Paulo


Cliente1 Id 1 3 8 Nome Joo da Silva Maria Felisbina Antnia Castro Cpf 85450988765 10192837835 77629211000 Cidade Belo Horizonte Belo Horizonte Belo Horizonte

Cliente2

Id 2 5

Nome Joaquim Marinho Jos Roberto

Cpf 63542087400 63821063881

Cidade So Paulo So Paulo

98

Fragmentao horizontal

Fragmentao horizontal no disjunta:

A disjuno desejvel como vimos nas regras de fragmentao. Porm, pode ser que o projetista, por qualquer motivo que seja, decida por ter redundncia de dados nos respectivos fragmentos. Assim teramos: r1 r2 rn Nesse caso necessrio ter o devido cuidado para que a reconstruo no inclua dados redundantes.

99

Fragmentao horizontal

Fragmentao horizontal no disjunta:

Uma alternativa interessante para evitar esse tipo de problema combinar a fragmentao com a replicao.

100

Fragmentao vertical

A fragmentao vertical, como o prprio nome indica, divide uma relao verticalmente. Na prtica, os fragmentos sero compostos por conjuntos de atributos da relao original. Da mesma forma que a fragmentao horizontal, uma relao r composta por uma srie de fragmentos r1, r2, , rn.
101

Fragmentao vertical

Porm, a reconstruo de r na fragmentao vertical se d pela juno natural dos fragmentos. Mas como garantir a reconstruo de r atravs de uma juno?

A forma mais simples de fazer isso incluir a chave primria de r em todos os fragmentos ri.

102

Fragmentao vertical

Um exemplo:

Vamos considerar agora uma situao onde exista um cadastro de funcionrios. O departamento de recursos humanos responsvel por manter os dados pessoais do funcionrio e alocado em Belo Horizonte. O departamento pessoal controla a folha de pagamento e alocado em So Paulo. A relao original dada por:

Func(Id, Nome, Cpf, Salario).


103

Fragmentao vertical

Um exemplo:

O projetista optou por fazer a fragmentao vertical da relao deixando cada conjunto de informaes fisicamente alocado no departamento interessado. Com isso, foram definidas duas relaes para os fragmentos:

Func1 = PJId, Nome, Cpf Func. Func2 = PJId, Salario Func.

104

Fragmentao vertical

Um exemplo:

A reconstruo de Func pode ser representada assim:


Func = Func11 NJN Func2 Legenda:


PJ: projeo. NJN: juno natural.

105

Fragmentao vertical

Um exemplo:

A regra da completude satisfeita pela aplicao da integridade referencial, que no permite a existncia de registros rfos nos fragmentos. A regra da reconstruo pode ser verificada facilmente atravs de uma operao de juno entre os fragmentos. A regra da disjuno tambm facilmente verificada uma vez que no existem atributos repetidos entre os fragmentos.

106

Func

Id 1 2 5 3 8

Nome Joo da Silva Joaquim Marinho Jos Roberto Maria Felisbina Antnia Castro

Cpf 85450988765 63542087400 63821063881 10192837835 77629211000

Salario 3000 2000 1500 2000 1000

Belo Horizonte RH

So Paulo DP

Func1

Id 1 2 5 3 8

Nome Joo da Silva Joaquim Marinho Jos Roberto Maria Felisbina Antnia Castro

Cpf 85450988765 63542087400 63821063881 10192837835 77629211000

Func2

Id 1 2 5 3 8

Salario 3000 2000 1500 2000 1000

107

Fragmentao mista

O uso de um tipo de fragmentao no impede outros tipos. Uma relao pode ser decomposta utilizando-se as fragmentaes horizontal e vertical combinadas. Um exemplo:

Consideremos o seguinte esquema:

Func(Id, Nome, Cpf, Salario).

108

Fragmentao mista

Um exemplo:

Poderamos fazer a decomposio vertical da seguinte forma:


Func1 = PJId, Nome, Cpf Func. Func2 = PJId, Salario Func.

Depois, poderamos decompor Func2 horizontalmente:


Func3 = SLSalario <= 3000 Func2. Func4 = SLSalario > 3000 Func2.

109

Fragmentao mista

Um exemplo:

A reconstruo seria dada por:

UN(Func3, Func4) NJN (PJId, Nome, Cpf Func1).

110

Fragmentao horiz. derivada

Em alguns casos a fragmentao horizontal de uma relao pode depender da fragmentao de outra relao. Esse tipo de fragmentao chamado de fragmentao horizontal derivada.

111

Fragmentao horiz. derivada

Um exemplo:

Vamos considerar o exemplo de fragmentao horizontal visto anteriormente onde temos:

Esquema: Cliente(Id, Nome, Cpf, Cidade). Fragmentao:


Cliente1 = SLCidade = Belo Horizonte Cliente Cliente2 = SLCidade = So Paulo Cliente Cliente = Cliente1 UN Cliente2
112

Reconstruo:

Fragmentao horiz. derivada

Um exemplo:

Agora vamos considerar uma nova relao com o seguinte esquema:

CliProj(IdCliente, IdProjeto, ValorHora).

Para fragmentar CliProj devemos levar em conta que a relao Cliente est particionada utilizando-se o critrio de seleo pela cidade do cliente. Portanto, CliProj tambm deve ser particionada com este critrio. Porm, o atributo referente cidade no existe na relao CliProj, e sim na relao Cliente.
113

Fragmentao horiz. derivada

Um exemplo:

Sendo assim, para particionar CliProj precisaremos de uma operao de semi-juno com Cliente. A fragmentao ficaria representada da seguinte forma:

CliProj1 = CliProj SJIdCliente = Id Cliente1 CliProj2 = SJIdCliente = Id Cliente2

A reconstruo de CliProj dada por uma unio entre os fragmentos.

114

Transparncia de fragmentao

Nos exemplos que vimos de fragmentao existe a necessidade de algum tipo de operao para manipular os dados. A fragmentao horizontal necessita de uma operao de unio para a reconstruo. A fragmentao vertical, da mesma forma, necessita de uma operao de juno.
115

Transparncia de fragmentao

Porm, um dos objetivos e princpios fundamentais de BDD a transparncia de fragmentao. Isso significa que o usurio final (em geral a aplicao) no deve se preocupar com a questo da distribuio dos dados. Ento fica a pergunta: como tornar os detalhes de distribuio transparentes ao usurio final?
116

Transparncia de fragmentao

A resposta na verdade pode ser bem simples:

Uma das formas mais simples de se criar transparncia de fragmentao o uso de vises. Para o caso de reconstruo o uso de vises bastante eficiente. Para os casos de atualizao uma simples viso pode no ser suficiente, j que diversos fatores precisam ser considerados. Mais adiante discutiremos com mais detalhes esse tipo de situao.
117

Replicao

A replicao consiste em armazenar cpias dos dados em diferentes sites (dois ou mais). Nesse caso h uma redundncia proposital dos dados e o SGBDD deve fornecer mecanismos para control-la. A replicao pode ser total (todo o banco de dados), parcial (uma ou mais relaes) ou de fragmentos.
118

Replicao

Portanto, possvel combinar a tcnica de replicao com a tcnica de fragmentao vista anteriormente. Vantagens e desvantagens da replicao:

Maior disponibilidade:

Se um site cair, as relaes (ou fragmentos) replicadas estaro disponveis em outros sites, aumentando a disponibilidade do sistema.

119

Replicao

Vantagens da replicao:

Melhor desempenho:

As operaes feitas com os dados replicados so processadas localmente, diminuindo a necessidade de movimentao de dados entre os sites. As atualizaes nos dados replicados mantidos em um site precisam ser propagadas aos demais sites que fazem parte da rplica. Esta propagao vai causar um aumento no trfego dos dados pela rede, podendo diminuir o desempenho.

Sobrecarga na atualizao:

120

Replicao

Vantagens da replicao:

Sobrecarga na atualizao:

Quanto mais dados replicados e mais atualizaes sobre esses dados, maior a necessidade de movimentao dos mesmos pela rede. Em sistemas onde o volume de consultas maior que o volume de atualizaes a replicao pode ser uma boa tcnica, aproveitando o melhor de suas vantagens. Em sistemas onde o nmero de atualizaes nos dados alto pode ser necessrio um estudo criterioso sobre o que replicar para que no ocorram problemas de desempenho.
121

Portanto, podemos concluir que:

Replicao

Exemplo de replicao:

122

Belo Horizonte
Cliente Id 1 3 8 Nome Joo da Silva Maria Felisbina Antnia Castro Cpf 85450988765 10192837835 77629211000 Cidade Belo Horizonte Belo Horizonte Belo Horizonte ClienteSP Id 2 5 Nome Joaquim Marinho Jos Roberto Cpf 63542087400 63821063881 Cidade So Paulo So Paulo

Rplica dos clientes de So Paulo So Paulo


Cliente Id 2 5 Nome Joaquim Marinho Jos Roberto Cpf 63542087400 63821063881 Cidade So Paulo So Paulo Id 1 3 8 Nome Joo da Silva Maria Felisbina Antnia Castro Cpf 85450988765 10192837835 77629211000 Cidade Belo Horizonte Belo Horizonte Belo Horizonte

ClienteBH

Rplica dos clientes de Belo Horizonte 123

Replicao

Propagao de atualizaes:

Sncrona:

Esta a forma ideal de sincronizao das informaes entre as rplicas. Na propagao sncrona a atualizao deve ser feita antes que a transao original receba o commit. Nesse caso, a distribuio dos dados fica totalmente transparente ao usurio. Porm, aqui j surge um problema que discutiremos adiante: e se um site estiver fora do ar no momento de uma transao?

124

Replicao

Propagao de atualizaes:

Assncrona:

As rplicas so sincronizadas periodicamente. Entre uma sincronizao e outra os dados das rplicas podem estar em estado inconsistente. Nesse caso a transparncia pode no ser totalmente conseguida, j que o usurio (e aplicaes) precisa conhecer detalhes da replicao. Os produtos atuais seguem este tipo de abordagem para implementar replicao.

125

4. Problemas em bancos de dados distribudos

Problemas em BDD

Tipicamente, as redes WAN so lentas em relao velocidade de recuperao e gravao de informao em discos. Bancos de dados distribudos, so altamente dependentes de redes de comunicao. Portanto, uma qualidade essencial em SGBDDs a capacidade de minimizar a utilizao da rede de comunicao.
127

Problemas em BDD

Relacionados a esse objetivo temos diversas reas de BDD, entre elas:

O processamento de consultas. O gerenciamento de catlogo. A propagao de atualizaes. A recuperao de dados. O controle de concorrncia.

Vamos analisar cada uma destas reas nos slides seguintes.


128

Processamento de consultas

A transferncia de dados o principal gargalo no processamento de consultas em bancos de dados distribudos. da responsabilidade do SGBDD otimizar as consultas diminuindo a quantidade de transferncia de dados necessria. Portanto, alm da recuperao dos dados propriamente dita, o SGBDD deve incluir um processo de otimizao.
129

Processamento de consultas

Vamos a um exemplo citado por Elmasri & Navathe (2005, p. 590-591):

Considere as seguintes relaes e informaes do prximo slide:

130

SITE 1 EMPREGADO
PNOME INICIALM UNOME SSN DATANASC ENDERECO SEXO SALARIO SUPERSSN NRD

A relao possui 10.000 registros. O tamanho de cada registro de 100 bytes. O tamanho do campo SSN de 9 bytes. O tamanho do campo NRD de 4 bytes. O tamanho do campo PNOME de 15 bytes. O tamanho do campo UNOME de 15 bytes. SITE 2 DEPARTAMENTO
NOMED NUMEROD GER_SSN GER_DATA_INICIO

A relao possui 100 registros. O tamanho de cada registro de 35 bytes. O tamanho do campo NUMEROD de 4 bytes. O tamanho do campo GER_SSN de 9 bytes. O tamanho do campo NOMED de 10 bytes.
131

Processamento de consultas

Vamos a um exemplo citado por Elmasri & Navathe (2005, p. 590-591):

O tamanho da relao EMPREGADO de 106 bytes (100 * 10.000). O tamanho da relao DEPARTAMENTO de 3.500 bytes (35 * 100). Agora considere a seguinte consulta Q:

Para cada empregado, recupere o nome do empregado e o nome do departamento para o qual o empregado trabalha.
Q: SLPNOME, UNOME, NOMED(EMPREGADO NJNDNO=NUMEROD DEPARTAMENTO)

132

Processamento de consultas

Vamos a um exemplo citado por Elmasri & Navathe (2005, p. 590-591):

Consideremos ainda que a consulta Q submetida no SITE 3, que no possui informaes nem de EMPREGADO nem de DEPARTAMENTO. Supondo que cada empregado est relacionado a um departamento, cada linha do resultado ter 40 bytes.

133

Processamento de consultas

Vamos a um exemplo citado por Elmasri & Navathe (2005, p. 590-591):

As trs estratgias para a execuo da consulta seriam:

Transferir as duas relaes para o SITE 3 e processar a consulta localmente. Transferncia de 1.003.500 bytes. Transferir a relao EMPREGADO para o SITE 2, processar a consulta e enviar o resultado ao SITE 3. Transferncia de 1.400.000 bytes. Transferir a relao DEPARTAMENTO para o SITE 1, processar a consulta e enviar o resultado ao SITE 3. Transferncia de 403.500 bytes.
134

Processamento de consultas

Vamos a um exemplo citado por Elmasri & Navathe (2005, p. 590-591):

Neste caso est claro que, para minimizar a transferncia de dados, a opo 3 a melhor.

135

Processamento de consultas

Vamos a um exemplo citado por Elmasri & Navathe (2005, p. 590-591):

Agora vamos a uma segunda situao com a consulta Q':

Para cada departamento, recupere o nome do departamento e o nome do gerente do departamento.


Q': SLPNOME, UNOME, NOMED(DEPARTAMENTO NJNGER_SSN=SSN EMPREGADO)

Se Q', assim como Q, for submetida do SITE 3, teremos as mesmas estratgias de consulta, com a diferena de que o resultado ter 100 registros.

136

Processamento de consultas

Vamos a um exemplo citado por Elmasri & Navathe (2005, p. 590-591):

Analisando as estratgias para a execuo da de Q':

Transferir as duas relaes para o SITE 3 e processar a consulta localmente. Transferncia de 1.003.500 bytes. Transferir a relao EMPREGADO para o SITE 2, processar a consulta e enviar o resultado ao SITE 3. Transferncia de 1.004.000 bytes. Transferir a relao DEPARTAMENTO para o SITE 1, processar a consulta e enviar o resultado ao SITE 3. Transferncia de 7.500 bytes.

137

Processamento de consultas

Vamos a um exemplo citado por Elmasri & Navathe (2005, p. 590-591):

Novamente, a melhor estratgia considerando-se a minimizao de transferncia de dados a terceira.

138

Processamento de consultas

Vamos a um exemplo citado por Elmasri & Navathe (2005, p. 590-591):

Continuando com o exemplo, considere que as consultas Q e Q' foram requisitadas pelo SITE 2. Quais seriam as estratgias simples possveis e, dentre elas, quais seriam as melhores?

139

Processamento de consultas

Vamos a um exemplo citado por Elmasri & Navathe (2005, p. 590-591):

Transferir a relao EMPREGADO para o SITE 2, onde a consulta seria processada:

Q e Q': transferncia de 1.000.000 bytes.

Transferir a relao DEPARTAMENTO para o SITE 1, processar a consulta e devolver o resultado:


Q: transferncia de 403.500 bytes. Q': transferncia de 7.500 bytes.

140

Processamento de consultas

Utilizando uma operao de semijuno para diminuir a transferncia de dados:

Em alguns casos, uma operao de semijuno pode restringir o nmero de linhas a serem transferidas de um site para o outro. Dessa forma, o trfego poderia ser diminudo. Exemplo:

Considerando as relaes utilizadas no exemplo anterior e as consultas Q e Q' requisitadas a partir do SITE 2, vamos ver como ficaria a semijuno:

141

Processamento de consultas

Utilizando uma operao de semijuno para diminuir a transferncia de dados:

Exemplo:

No exemplo anterior, a melhor estratgia para executar Q era transferir DEPARTAMENTO para o SITE 1 e devolver o resultado. Seriam transferidos 403.500 bytes. No caso da semijuno, enviaramos para o SITE 1 apenas a coluna que estabelece o relacionamento com EMPREGADO. Isso geraria um trfego de 400 bytes. No SITE 1 seria feita a semijuno da coluna transferida com os registros de EMPREGADO e o resultado seria devolvido ao SITE 2.
142

Processamento de consultas

Utilizando uma operao de semijuno para diminuir a transferncia de dados:

Exemplo:

Porm, dessa vez s seriam devolvidos somente os atributos de EMPREGADO necessrios para realizar novamente a juno com DEPARTAMENTO no SITE 2. Esses atributos so: NRD, PNOME e UNOME. Ento, teramos um retorno de 340.000 bytes (10.000 registros x 34 bytes ) para o SITE 2. O trfego final dessa estratgia para Q seria de 340.400 bytes. Um pequeno ganho em relao ao exemplo visto anteriormente.
143

Processamento de consultas

Utilizando uma operao de semijuno para diminuir a transferncia de dados:

Exemplo:

Para Q' a melhor estratgia conseguida foi com transferncia de 7.500 bytes. Com a semijuno, comeamos transferindo a coluna de relacionamento de DEPARTAMENTO com EMPREGADO do SITE 2 para o SITE 1 (SSN): 900 bytes. A semijuno com EMPREGADO vai resultar em 100 registros de 39 bytes que precisam retornar ao SITE 2. Os campos que retornam so: GER_SSN, PNOME e UNOME. O total de transferncia de retorno de 3.900 bytes.
144

Processamento de consultas

Utilizando uma operao de semijuno para diminuir a transferncia de dados:

Exemplo:

Concluda a consulta teramos um total de 4.800 bytes transferidos. Um ganho significativo em relao estratgia anterior.

145

Processamento de consultas

Os exemplos de processamento de consultas vistos nesse material demonstram apenas a preocupao com a transferncia de dados. Porm, os otimizadores dos SGBDDs necessitam avaliar outros fatores como:

Volume de I/O necessrio. Poder de processamento de cada site.

146

Processamento de consultas

Em determinadas situaes, reduzir o trfego pode no ser suficiente para otimizar uma consulta.

147

Gerenciamento de catlogo

O catlogo de um sistema distribudo deve armazenar, alm das informaes bsicas:

Informaes sobre a distribuio dos dados. Informaes sobre objetos que vo proporcionar as independncias desejveis em um BDD.

148

Gerenciamento de catlogo

Algumas das possibilidades de gerenciamento de catlogo so:

Catlogo centralizado:

O catlogo armazenado em um site central do qual vo depender os demais sites. Todo o catlogo armazenado em todos os sites. Cada site mantm um catlogo referente aos objetos locais.

Catlogo replicado:

Catlogo particionado:

149

Gerenciamento de catlogo

Algumas das possibilidades de gerenciamento de catlogo so:

Combinao entre catlogo centralizado e particionado:

Cada site mantm o catlogo local e, alm disso, um site central mantm uma cpia de todos os catlogos locais.

150

Gerenciamento de catlogo

Problemas nas estratgias de gerenciamento de catlogo:

Manter o catlogo centralizado fere um dos princpios de BDD, que a no dependncia de um site central. A replicao total do catlogo torna cada site muito dependente das alteraes em outros sites. Isso, de certa forma, tira um pouco de autonomia do sistema. O particionamento onera muito as consultas remotas, j que o objeto necessrio no conhecido localmente e precisa ser procurado.
151

Gerenciamento de catlogo

Problemas nas estratgias de gerenciamento de catlogo:

Particionar e manter uma cpia centralizada uma abordagem mais eficiente, pois, minimiza o esforo de busca por objetos remotos. Porm, fere novamente a independncia de um site central.

152

Gerenciamento de catlogo

Abordagem de Date (2004, p. 567-568):

O autor apresenta uma abordagem alternativa s anteriores, que vamos discutir a seguir. A primeira questo colocada pelo autor a questo da nomenclatura de objetos em um sistema distribudo. O nome o que identifica um objeto no sistema e, devemos considerar a possibilidade de que objetos de sites distintos possuam o mesmo nome. Nesse caso, algum mecanismo do sistema deve ser capaz de desfazer a ambiguidade.
153

Gerenciamento de catlogo

Abordagem de Date (2004, p. 567-568):

Uma possibilidade seria incluir o nome do site na qualificao do objeto. Por exemplo: site.objeto. Porm, isso prejudicaria a transparncia do sistema. Portanto, a proposta um mapeamento dos nomes do sistema para nomes conhecidos pelo usurio. Sendo assim, teremos dois nomes para os objetos: o nome impresso conhecido pelo usurio e o nome para o sistema. O nome para o sistema um identificador nico do objeto, ou seja, globalmente exclusivo.
154

Gerenciamento de catlogo

Abordagem de Date (2004, p. 567-568):

O nome para o sistema composto por:


ID do criador: usurio que criou o objeto. ID do site criador: onde a operao de criao do objeto foi executada. Nome local: nome no qualificado do objeto. ID do site de nascimento: site onde o objeto foi armazenado pela primeira vez. Exemplo: joao@saoPaulo.DPTO@beloHorizonte

O nome para o sistema nunca mudar, mesmo se o objeto migrar de um site para o outro.
155

Gerenciamento de catlogo

Abordagem de Date (2004, p. 567-568):

O nome impresso pode ser o nome local do objeto (nome no qualificado) ou ainda um sinnimo (CREATE SYNONYM). As instrues caractersticas do usurio, um SELECT por exemplo, so feitas pelo nome impresso. Cada site mantm:

As tabelas de sinnimos (se for o caso). Uma entrada de catlogo para cada objeto nascido no site. Uma entrada de catlogo para cada objeto armazenado atualmente no site.
156

Gerenciamento de catlogo

Abordagem de Date (2004, p. 567-568):

Exemplo:

O objeto joao@saoPaulo.DPTO@beloHorizonte foi nascido no site de Belo Horizonte. Isso significa que existe uma entrada para este objeto nesse site. Se o site de So Paulo busca pelo objeto DPTO, vai encontrar a referncia ao site de nascimento e, ento, vai consultar o site remoto. Se o objeto ainda estiver em Belo Horizonte, ele ser encontrado logo na primeira consulta remota. Caso o objeto tenha migrado, digamos para Curitiba, esta informao estar na entrada do catlogo em Belo Horizonte.
157

Gerenciamento de catlogo

Abordagem de Date (2004, p. 567-568):

Exemplo:

O site requisitante ento sabe que deve buscar em Curitiba, que o site atual de armazenamento do objeto. Se o site migrar mais uma vez, suponha que de Curitiba para Salvador, o que acontece o seguinte:

Uma entrada de catlogo inserida no site de Salvador. A entrada no catlogo de Curitiba apagada. A entrada no catlogo de Belo Horizonte atualizada indicando Salvador como site de armazenamento atual.

Com esta abordagem, qualquer objeto pode ser encontrado em, no mximo, duas consultas remotas.
158

Propagao de atualizaes

Em um ambiente replicado, as atualizaes nos dados precisam ser propagadas a todas as cpias do sistema. O problema a est na forma como a propagao feita. Idealmente, a propagao deveria ser sncrona, atualizando imediatamente todas as cpias.
159

Propagao de atualizaes

Nesta situao, a operao original s concluda se todas as rplicas forem atualizadas. Isso gera um problema:

Se um dos sites replicados no estiver disponvel, a operao original falhar.

Veja que esta situao pode comprometer a disponibilidade do banco de dados em todos os sites porque um falhou.
160

Propagao de atualizaes

Com isso criado um grande problema de autonomia local. A propagao de atualizaes assncrona uma alternativa, porm, muito criticada pelos problemas que causa. Na propagao assncrona as rplicas so atualizadas em algum momento posterior ao acontecimento do fato.
161

Propagao de atualizaes

Isso pode trazer, no mnimo, dois problemas considerveis:

O primeiro problema refere-se ao fato de que as rplicas estariam inconsistentes no intervalo entre uma sincronizao e outra. Nesse caso, o projetista deve considerar a tolerncia do sistema a estas inconsistncias. O segundo problema, talvez mais difcil de tratar, que, no momento da sincronizao, a atualizao no seja mais possvel em alguma rplica.
162

Propagao de atualizaes

Isso pode trazer, no mnimo, dois problemas considerveis:

Tal fato tornaria todo o sistema distribudo inconsistente.

163

Controle de concorrncia

O controle de concorrncia em bancos de dados distribudos feito da mesma forma de sistemas centralizados, com bloqueio. Basicamente:

O sistema emite uma solicitao de bloqueio de um objeto. O ser liberado o bloqueio as atualizaes so efetuadas. O sistema ento emite uma solicitao de desbloqueio.
164

Controle de concorrncia

Em um sistema distribudo as solicitaes e concesses de bloqueio so mensagens que devem ser trocadas entre os sites. Estas mensagens geram trfego. Com a replicao o nmero de mensagens aumente consideravelmente.

165

Controle de concorrncia

Segundo Date (2004, p. 573), uma implementao simples de bloqueio exigir 5n mensagens (n o nmero de sites envolvidos na solicitao):

n requisies de bloqueio. n concesses de bloqueio. n mensagens de atualizao. n confirmaes. n requisies de desbloqueio.


166

Controle de concorrncia

Obviamente, esta necessidade de troca de mensagens tende a tornar a atualizao distribuda mais lenta que a centralizada.

167

Controle de concorrncia

Cpia primria:

A cpia primria uma estratgia para diminuir o volume de troca de mensagens. Nesta estratgia, um site guarda a cpia primria um ou mais itens de dados em um sistema de rplicas. Sendo assim, o site se torna responsvel pela coordenao do controle de concorrncia para todos os itens de dados que possuem cpia primria nele. As requisies de bloqueio e desbloqueio e a concesso so feitas, nessa estratgia, apenas ao site coordenador.
168

Controle de concorrncia

Cpia primria:

As atualizaes e confirmaes de atualizaes ainda podem depender do nmero total de sites se o objeto estiver distribudo fisicamente em mais de um site. Ento, teremos o nmero de mensagens reduzido de 5n para 2n + 3:

Uma requisio de bloqueio. Uma concesso de bloqueio. n atualizaes. n confirmaes de atualizao. Uma requisio de desbloqueio.
169

Controle de concorrncia

Cpia primria:

Esta estratgia causa uma diminuio na autonomia do sistema porque se o site coordenador falhar no ser possvel concluir a operao. Porm, nos casos em que a operao no envolver cpias primrias no site que falhou, a operao ocorre normalmente.

170

Controle de concorrncia

Outro problema que exige ateno em um sistema de banco de dados distribudo a possibilidade de deadlock global. Veja o exemplo de Date (2004, p. 574):

171

Controle de concorrncia
SITE X Mantm bloqueio Lx T1x T2x

Espera que T1x libere Lx

Espera que T1y termine Espera que T2y libere Ly

Espera que T2x termine

T1y

T2y Mantm bloqueio Ly

SITE Y

172

Independncia de SGBD

Como vimos, um sistema de banco de dados distribudo pode no possuir o mesmo SGBDD em todos os sites. Chamamos esse tipo de sistema de sistema heterogneo.

173

Independncia de SGBD

A heterogeneidade pode envolver:

Produtos (SGBDD) de diferentes fornecedores. Que trabalham em sistemas operacionais diferentes. E que, consequentemente, utilizam padres de hardware e rede diferentes.

A soluo mais amplamente utilizada para solucionar este problema uma camada de software de integrao.
174

Independncia de SGBD

Esta camada comumente chamada de middleware.

175

5. Distribuio de dados no MySQL 5.1

Replicao

O MySQL fornece recursos para replicao de dados. Basicamente a replicao consta de um servidor principal (master) e servidores secundrios (slaves). A replicao assncrona, o que significa que no necessria a conexo permanente entre o master e os slaves.
177

Replicao

Podem ser replicados todos os bancos de dados em um servidor, bancos de dados especficos ou ainda tabelas especficas. Tipos bsicos de replicao no MySQL:

Statement Based Replication: replica instrues SQL completas. Row Based Replication: replica somente linhas alteradas. possvel ainda criar um tipo de replicao mista entre os tipos bsicos.
178

Replicao

O mecanismo de replicao baseado em um log binrio (binary log). O servidor master grava um log de atualizaes ocorridas no banco de dados. Os servidores slave so configurados para ler esse log, atualizando a replicao local.
179

Replicao

Configurando o servidor master:

Parar o servidor MySQL. Alterar o arquivo de configurao do MySQL (my.cnf ou my.ini) acrescentando (ou descomentando) as linhas referentes ativao do log e ao id nico do servidor (isso deve ser feito na sesso mysqld). Reiniciar o servidor MySQL. Exemplo:

... 01 [mysqld] 02 log-bin=mysql-bin 03 Server-id=1 ...

180

Replicao

Configurando os servidores slave:

Parar o servidor MySQL. Alterar o arquivo de configurao do MySQL (my.cnf ou my.ini) acrescentando (ou descomentando) a linha referente ao id nico do servidor. Reiniciar o servidor MySQL. Ateno: cada servidor deve ter um id nico. Exemplo:

... 01 [mysqld] 02 Server-id=2 ...

181

Replicao

Criando o usurio no servidor master:

Para se conectar ao servidor necessrio configurar um usurio com privilgios de replicao. Qualquer conta de usurio pode ser utilizada, porm, uma boa prtica ter uma conta especfica para isso. Deve-se criar a conta de usurio e atribuir os privilgios de replicao. Exemplo:

01 mysql> CREATE USER repl@'%' IDENTIFIED BY '123456'; 02 mysql> GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%'
182

Replicao

Copiando os bancos de dados que sero replicados do mestre para o slave:

Antes de iniciar a replicao devemos criar uma cpia instantnea do(s) banco(s) de dados que sero replicados. Podemos fazer isso com o aplicativo mysqldump. Sintaxe do mysqldump:

01 mysqldump --database <nome_base_dados> -u <usurio> -p 02 > <arquivo_destino.sql>

183

Replicao

Copiando os bancos de dados que sero replicados do mestre para o slave:

Para restaurar o banco de dados no servidor slave basta rodar o comando mysql com a sintaxe abaixo:

01 mysql -u <usurio> -p < <arquivo_com_dados.sql>

184

Replicao

Ajustando a configurao do servidor master no slave:

Para definir a configurao do servidor master no slave necessrio obter as informaes sobre o nome do log e a sua posio (no master). Para isso, no servidor master, deve ser executado o seguinte comando:

01 mysql> SHOW MASTER STATUS;

185

Replicao

Ajustando a configurao do servidor master no slave:

Com os dados obtidos do servidor master, deve-se ajustar as configuraes no(s) servidor(es) slave, com o comando CHANGE MASTER TO. Exemplo:

01 mysql> CHANGE MASTER TO MASTER_HOST='ip_ou_nome_do_host', MASTER_USER='nome_usurio_replicao', MASTER_PASSWORD='senha_usurio_replicao', MASTER_LOG_FILE='nome_arquivo_log', MASTER_LOG_POS=posio_arquivo_log;


186

Replicao

Depois de ajustar as configuraes o slave deve ser ativado com o comando abaixo:

01 mysql> START SLAVE;

187

Replicao

Verificando o funcionamento:

Para verificar o funcionamento basta executar o comando abaixo:

01 mysql> SHOW SLAVE STATUS\G;

188

Tabelas federadas

Conceitos fundamentais de bancos de dados federados:

Conjunto de sistemas de bancos de dados autnomos e independentes de tecnologia (podem ser heterogneos). Possuem baixo acoplamento dos recursos compartilhados. Tm o objetivo de melhorar o desempenho, aumentar a autonomia e a escalabilidade do sistema.
189

Tabelas federadas

O MySQL disponibiliza o recurso de tabelas federadas. As tabelas federadas possuem limitaes e no atendem a todos os conceitos fundamentais de sistemas federados. Porm, as tabelas federadas permitem a distribuio de dados de uma forma simples e, dentro das limitaes, eficiente.
190

Tabelas federadas no MySQL

O MySQL utiliza um mecanismo de armazenamento (Storage Engine) para disponibilizar recursos de federao. Portanto, necessrio verificar se o engine apropriado est habilitado.

191

Tabelas federadas no MySQL

Caractersticas e limitaes do recurso de federao no MySQL:

Todos os servidores em uma federao precisam ser MySQL. As estruturas das tabelas (remota e federadas) devem ser idnticas. O engine da tabela remota pode ser qualquer um dos fornecidos pelo MySQL, exceto federated. O engine da tabela federada tem que ser, necessariamente, federated.
192

Tabelas federadas no MySQL

Caractersticas e limitaes do recurso de federao no MySQL:

possvel apontar uma tabela federada para outra tabela federada, porm h o risco de um loop indesejado. Tabelas federadas no suportam transaes. O nico comando DDL possvel em tabelas federadas DROP TABLE. O comando DROP TABLE em uma tabela federada no afeta a tabela remota.
193

Tabelas federadas no MySQL

Caractersticas e limitaes do recurso de federao no MySQL:

Os dados no ficam armazenados nas tabelas federadas.

194

Tabelas federadas no MySQL

Caractersticas e limitaes do recurso de federao no MySQL:

Fonte: http://dev.mysql.com/doc/refman/5.1/en/federated-description.html
195

Tabelas federadas no MySQL

Verificando se o engine federated est habilitado no servidor:

Estando conectado ao servidor de banco de dados, digitar o comando abaixo. Verificar, no registro do engine federated, o contedo do campo support:

Se for YES o engine federated j est habilitado. Caso contrrio (NO), ser necessrio fazer a habilitao.

01 mysql> SHOW ENGINES;


196

Tabelas federadas no MySQL

Habilitando o engine federated no servidor:

Para habilitar o engine federated basta adicionar a clusula federated ao arquivo de configurao (my.ini ou my.cnf) na sesso mysqld. Logo depois o servidor mysql deve ser reiniciado. Veja abaixo:

... 01 [mysqld] 02 federated ...


197

Tabelas federadas no MySQL

Criando e ligando tabelas remotas e federadas:

A criao da tabela remota (que ir realmente conter os dados) feita normalmente, sem nenhum tipo de referncia tabela federada. Exemplo:

01 CREATE TABLE Cliente ( 02 Id INT AUTO_INCREMENT PRIMARY KEY, 03 Nome VARCHAR(60) NOT NULL, 04 Endereco VARCHAR(60) 05 );

198

Tabelas federadas no MySQL

Criando e ligando tabelas remotas e federadas:

A criao da tabela federada deve incluir:

A estrutura da tabela (que deve ser idntica tabela remota). O engine, que deve ser obrigatoriamente federated. E a conexo com a tabela remota.

199

Tabelas federadas no MySQL

Criando e ligando tabelas remotas e federadas:

Exemplo:

01 CREATE TABLE Cliente ( 02 Id INT AUTO_INCREMENT PRIMARY KEY, 03 Nome VARCHAR(60) NOT NULL, 04 Endereco VARCHAR(60) 05 )ENGINE=FEDERATED 06 CONNECTION='mysql://root:admin@10.0.2.11/Federado/Cliente';

200

Tabelas federadas no MySQL

Criando e ligando tabelas remotas e federadas:

Exemplo:

Na linha 05 foi definido o engine. Na linha 06:

root:admin: usurio:senha de acesso ao banco de dados remoto. 10.0.2.11: ip (pode ser o domnio) de conexo com o servidor remoto. /Federado/Cliente: nome do banco de dados/nome da tabela remotos.
201

Tabelas federadas no MySQL

Transparncia:

Em se tratando da distribuio de tabelas inteiras (sem particionamento), a transparncia obtida naturalmente de uma das duas formas:

Mantendo o nome da tabela federada idntico ao nome da tabela remota. Criando uma view que faa a abstrao do nome real das tabelas no banco de dados. A aplicao acessa a view para recuperao e atualizao de registros.

202

Tabelas federadas no MySQL

Transparncia:

No caso de fragmentao vertical ou horizontal a transparncia para recuperao dos dados pode ser obtida com uma view. Porm, as limitaes de views atualizveis no MySQL no possibilitam a transparncia nas atualizaes. Ser necessrio:

Utilizar mecanismos do banco de dados para fazer a atualizao dos dados . Tratar a distribuio dos dados na aplicao (o que no desejvel do ponto de vista dos BDD).
203

6. Distribuio de dados no SQL Server 2008 R2

Replicao

O SQL Server fornece recursos de replicao como uma das formas de distribuio de dados. A replicao mantm uma cpia dos objetos replicados nos sites desejados, permitindo a sincronizao entre eles.

205

Replicao

Termos utilizados para replicao no SQL Server:

Publicador (Publisher):

O Publicador uma instncia de banco de dados que disponibiliza dados para outros locais por meio de replicao. O Publicador pode ter uma ou mais publicaes, cada uma definindo um conjunto de objetos relacionado de forma lgica e os dados para replicar.

Fonte: http://msdn.microsoft.com/pt-br/library/ms152567%28v=sql.100%29
206

Replicao

Termos utilizados para replicao no SQL Server:

Distribuidor (Distributor):

O Distribuidor uma instncia de banco de dados que atua como um armazenamento para replicao de dados especficos associados a um ou mais Publicadores. Cada Publicador associado a um nico banco de dados (conhecido como um banco de dados de distribuio) ao Distribuidor... O distribuidor pode ser configurado localmente (mesma instncia do publicador) ou remotamente (uma instncia separada).
207

Fonte: http://msdn.microsoft.com/pt-br/library/ms152567%28v=sql.100%29

Replicao

Termos utilizados para replicao no SQL Server:

Assinante (Subscriber):

Um Assinante uma instncia de banco de dados que recebe dados replicados. Um Assinante pode receber dados de diversos Publicadores e publicaes. Dependendo do tipo de replicao escolhida, o Assinante tambm pode passar as alteraes de dados de volta ao Publicador ou republicar os dados para outros Assinantes.

Fonte: http://msdn.microsoft.com/pt-br/library/ms152567%28v=sql.100%29
208

Replicao

Termos utilizados para replicao no SQL Server:

Artigo (Article):

Um artigo identifica um objeto de banco de dados que includo em uma publicao. Uma publicao pode conter tipos diferentes de artigos, incluindo tabelas, exibies, procedimentos armazenados e outros objetos. Quando as tabelas so publicadas como artigos, os filtros podem ser usados para restringir as colunas e linhas dos dados enviados aos Assinantes.

Fonte: http://msdn.microsoft.com/pt-br/library/ms152567%28v=sql.100%29
209

Replicao

Termos utilizados para replicao no SQL Server:

Publicao (Publication):

Uma publicao uma coleo de um ou mais artigos de um banco de dados. O agrupamento de diversos artigos em uma publicao facilita especificar um conjunto de objetos de banco de dados logicamente relacionado e os dados que so replicados como uma unidade.

Fonte: http://msdn.microsoft.com/pt-br/library/ms152567%28v=sql.100%29
210

Replicao

Termos utilizados para replicao no SQL Server:

Assinatura (Signature):

Uma assinatura uma solicitao para uma cpia de uma publicao a ser distribuda a um Assinante. A assinatura define qual publicao ser recebida, onde e quando. Existem dois tipos de assinatura: push e pull... Assinatura push:

O Publicador propaga as alteraes para o Assinante sem a solicitao deste. O Assinante solicita as alteraes ao Publicador.
211

Fonte: http://msdn.microsoft.com/pt-br/library/ms152567%28v=sql.100%29

Replicao

Viso geral da replicao:

Fonte: http://msdn.microsoft.com/pt-br/library/ms152567%28v=sql.100%29
212

Replicao

Tipos de replicao:

Replicao de instantneo:

Distribui a estrutura e os dados assim como esto em um momento especfico. No monitora alteraes na estrutura ou nos dados. Quando h sincronizao entre o publicador e o assinante, um novo instantneo, completo, gerado.

213

Replicao

Tipos de replicao:

Replicao de instantneo:

A replicao de instantneo apropriada para as seguintes situaes:


Pequeno volume de dados. Pequeno volume de alteraes. Boa tolerncia desatualizao dos dados e estrutura. Grande volume de alteraes em um perodo curto de tempo.

214

Replicao

Tipos de replicao:

Replicao transacional:

Se inicia com um instantneo dos objetos e dados replicados. Alteraes na estrutura ou nos dados so enviadas aos assinantes no momento em que ocorrem. So respeitadas as transaes que deram origem s alteraes no publicador.

215

Replicao

Tipos de replicao:

Replicao transacional:

apropriada em ambientes servidor para servidor, em geral, nos seguintes casos:

Propagao de alteraes no momento em que ocorrem. Baixa tolerncia s diferenas na estrutura e nos dados entre o publicador e os assinantes. Alto volume de insero, alterao e excluso no publicador.

216

Replicao

Tipos de replicao:

Replicao transacional:

Por padro, os assinantes de uma publicao transacional so tratados como somente leitura. Isso significa que no haver propagao de alteraes do assinante para o publicador. Porm, possvel configurar a replicao transacional permitindo atualizaes no assinante.

217

Replicao

Tipos de replicao:

Replicao de mesclagem:

Se inicia com um instantneo dos objetos e dados replicados. Alteraes na estrutura ou nos dados so rastreadas com gatilhos. Durante a sincronizao as alteraes de estrutura e as linhas atualizadas de dados so permutadas entre publicador e assinante. Esse tipo de replicao est mais sujeito a conflitos, j que diversos sites podem atualizar os mesmos dados. O SQL Server fornece algumas maneiras de soluo de conflitos.
218

Replicao

Tipos de replicao:

Replicao de mesclagem:

A replicao de mesclagem mais apropriada nas seguintes situaes:

Diversos assinantes atualizando os mesmos dados ao mesmo tempo. Os assinantes necessitam de autonomia para trabalhar com todos os dados e, posteriormente, precisam propagar estas atualizaes.

219

Replicao

Leitura recomendada:

Manuais on-line do SQL Server 2008 R2 que trata sobre replicao:

http://msdn.microsoft.com/pt-br/library/ms151198%28v=sql.100%29

220

Implantando a replicao

Vamos agora implantar a replicao entre servidores SQL Server. Para tanto, vamos utilizar o banco de dados do script a seguir:

221

Implantando a replicao
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 CREATE DATABASE Replicacao; GO USE Replicacao; GO CREATE TABLE Cidade ( Id INT PRIMARY KEY IDENTITY, Nome VARCHAR(30) NOT NULL ); CREATE TABLE Cliente ( Id INT PRIMARY KEY IDENTITY, Nome VARCHAR(60) NOT NULL, Endereco VARCHAR(60), Id_Cidade INT NOT NULL REFERENCES Cidade(Id) );

222

Implantando a replicao

O primeiro passo a criao da publicao. No nosso caso, vamos utilizar um distribuidor local, ou seja, distribuidor e publicador na mesma instncia.

223

Implantando a replicao

No Management Studio:

Clique com o boto direito do mouse sobre o item Replication. Selecione New Publication. Um assistente ser exibido. As telas do assistente seguem nos prximos slides:

224

Tela inicial do assistente. Clique em Next.

225

Configurao do distribuidor. Como j foi dito, vamos manter o distribuidor local. Portanto, selecione a primeira opo. Clique em Next.

226

Configurao do SQL Server Agent. O SQL Server Agent um dos agentes da replicao e precisa ser configurado para que ela funcione. Esta tela sugere a configurao automtica desse servio. Selecione a primeira opo. Clique em Next.

227

Configurao do caminho onde estaro armazenados os instantneos. Essa etapa necessria para definir um caminho de rede onde os assinantes vo acessar os arquivos fsicos dos instantneos do publicador. Primeiramente, crie uma pasta compartilhada. Depois insira o caminho na caixa de texto. Clique em Next.

228

Configurao da base de dados de distribuio. Nessa configurao, definimos o nome da base de dados que armazenar as transaes e sua localizao fsica. Mantenha os dados sugeridos por padro. Clique em Next.

229

Habilitao do servidor como distribuidor. Esta etapa apenas habilita que outros servidores utilizem o distribuidor (que no caso local) que est sendo configurado. Mantenha os dados sugeridos por padro. Clique em Next.

230

Finalizao da configurao e configurao da distribuio. Esta etapa apenas possibilita a configurao da distribuio e a gerao de um script no final do assistente. Mantenha a seleo conforme padro. Clique em Next.

231

Implantando a replicao

No Management Studio:

Algumas das etapas vistas at aqui no sero necessrias uma vez que a distribuio estiver configurada. Nos prximos slides, o restante das etapas para criar uma publicao:

232

Definio da base de dados de origem da replicao. O primeiro passo na criao da publicao a definio da base de dados. Selecione a base de dados que criamos anteriormente. Clique em Next.

233

Seleo do tipo de replicao. O prximo passo a seleo do tipo de replicao. Selecione Transactional publication. Clique em Next.

234

Seleo dos objetos que sero replicados. Nessa etapa devemos selecionar os objetos (tabelas, views, stored procedures, etc.) que faro parte da publicao. O boto Article Properties permite a definio de algumas propriedades para o artigo selecionado. No nosso caso no ser necessrio fazer essa configurao, vamos trabalhar com as propriedades padro. Selecione a tabela Cliente. Clique em Next.

235

Definio de um filtro para os objetos da publicao. Esta etapa permite que sejam definidos filtros para os registros em um objeto de uma publicao. Isso permite, por exemplo, que apenas algumas linhas de uma tabela sejam replicadas. No definiremos filtros nesse momento. Clique em Next.

236

Criao do instantneo. Um instantneo necessrio para que os assinantes possam iniciar uma assinatura. Nesta etapa decidimos se o instantneo ser criado imediatamente (primeira opo) ou se ser definida uma agenda (segunda opo). Marque a primeira opo. Clique em Next.

237

Definio de contas de conexo para os agentes. A replicao depende de alguns agentes e esses agentes precisam estar vinculados a uma conta que tenha os privilgios necessrios para cumprir as tarefas de replicao. No nosso caso, vamos configurar o Snapshot Agent com a conta do administrador do SQL Server. Para fazer isso clique em Security Settings. Faa a configurao. Clique em Next.

238

Finalizao da criao da publicao. Finalmente, no encerramento do assistente, vamos criar a publicao. Mantenha as opes padro selecionadas. Clique em Next.

239

Finalizao da criao da publicao. D um nome para a publicao. Clique em Finish.

240

Implantando a replicao

No Management Studio:

At este ponto devemos estar com a publicao criada e pronta para receber assinaturas. Verifique em Replication Local Publications a existncia da publicao. Verifique tambm na pasta destinada ao instantneo se os arquivos foram criados. Nos prximos slides, vamos configurar uma assinatura. Clique com o boto direito do mouse em Replication Local Subscriptions New Subscriptions...
241

Tela inicial do assistentes. Clique em Next.

242

Seleo da publicao. Nesta tela deve ser selecionada a aplicao que queremos assinar. Para tanto, escolha o publicador (Publisher) e a publicao criada anteriormente. Clique em Next.

243

Seleo do tipo de assinatura. Nesta etapa devemos escolher o tipo de assinatura: push ou pull. A assinatura push facilita o gerenciamento da replicao, porm, aumenta o processamento do distribuidor. Selecione uma das formas de distribuio. Clique em Next.

244

Seleo do banco de dados assinante. Neste ponto vamos selecionar o banco de dados assinante. Se ele no existir, devemos cri-lo. Veja que esta tela permite a incluso de diversas assinaturas. Nesse exemplo vamos fazer uma assinatura, em um banco de dados com o mesmo nome do publicador. Crie o banco de dados. Clique em Next.

245

Configurao de segurana. A configurao de segurana visa proteger o distribuidor em relao ao agente de distribuio. A configurao mais simples a escolha da mesma conta do SQL Server Agent para o agente de distribuio e a seleo de uma conta do SQL Server para conexo com o distribuidor. Em um ambiente real necessrio utilizar contas especficas para aumentar a segurana. Configure as contas. Clique em Next.

246

Configurao da agenda de sincronizao. Esta tela permite configurar a agenda de sincronizao em que os agentes vo ser executados. So trs opes: (1) execuo contnua, (2) execuo sob demanda e (3) criao de uma agenda personalizada. Escolha um tipo de agenda. Clique em Next.

247

Inicializao da assinatura. Nesta etapa configuramos quando a assinatura (ou as assinaturas) ser inicializada. As opes so: (1) imediatamente ou (2) na primeira sincronizao. Escolha uma opo. Clique em Next.

248

Finalizao da criao da assinatura. Selecione a opo para a criao da assinatura. Clique em Next.

249

Finalizao da criao da assinatura. Clique em Finish.

250

Você também pode gostar