Escolar Documentos
Profissional Documentos
Cultura Documentos
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
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
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 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
12
O modelo relacional
Atributos (campos)
PESSOA
CPF
Cidade
Tuplas (linhas)
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
Uma linha da tabela deve possuir uma identidade nica; Chave primria (Primary Key).
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
12 Joo da Silva
O modelo relacional
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.
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
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
24
Programadores de aplicao
Equipe do DBA
Usurios casuais
Usurios leigos
DECLARAES EM DDL
COMANDOS PRIVILEGIADOS
CONSULTA INTERATIVA
Compilador de DDL
A B
Compilador de Consulta
execuo
25
SGBD
Controle de concorrncia. Facilidade no fornecimento de diferentes vises para diferentes grupos de usurios.
26
SGBD
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
Tipo de dado; Unicidade do dado (restries de chave); Impossibilidade do dado no ser informado (NOT NULL). Chaves estrangeiras.
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
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
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
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
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
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
GROUP BY (opcional): permite o agrupamento de registros. HAVING (opcional): permite a filtragem de registros agrupados.
37
Linguagem SQL
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
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
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:
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:
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:
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:
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:
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:
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
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):
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
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
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
Site 3
Site 4
59
Site 3
Site 4
60
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
O Sistema Gerenciador de Bancos de Dados Distribudos (SGBDD) possui todas as funcionalidades de um SGBD.
62
Vantagens
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.
63
Vantagens:
Autonomia local.
64
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
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:
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
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
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
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
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
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
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
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
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
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
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
12 Independncia da SGBD:
desejvel que o sistema distribudo admita a existncia de SGBDs diferentes, mais uma vez, de forma transparente ao usurio.
78
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
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
Segurana:
Podemos entender como meta-gerenciamento, j que trata da capacidade do SGBDD gerenciar os metadados distribudos entre os diversos sites.
81
Homogneo:
Quando todos os sites utilizam o mesmo SGBDD como servidor. Quando h SGBDDs diferentes nos diversos sites que compem o sistema.
Heterogneo:
82
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
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
r = r1 U r2 U U rn
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
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
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
Um exemplo:
Cliente1 = SLCidade = Belo Horizonte Cliente Cliente2 = SLCidade = So Paulo Cliente Cliente = Cliente1 UN Cliente2 SL: seleo. UN: unio.
96
Legenda:
Fragmentao horizontal
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
Cliente2
Id 2 5
98
Fragmentao horizontal
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
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:
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:
104
Fragmentao vertical
Um exemplo:
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
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
Func2
Id 1 2 5 3 8
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:
108
Fragmentao mista
Um exemplo:
Func3 = SLSalario <= 3000 Func2. Func4 = SLSalario > 3000 Func2.
109
Fragmentao mista
Um exemplo:
110
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
Um exemplo:
Cliente1 = SLCidade = Belo Horizonte Cliente Cliente2 = SLCidade = So Paulo Cliente Cliente = Cliente1 UN Cliente2
112
Reconstruo:
Um exemplo:
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
Um exemplo:
Sendo assim, para particionar CliProj precisaremos de uma operao de semi-juno com Cliente. A fragmentao ficaria representada da seguinte forma:
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
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
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
ClienteBH
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
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
O processamento de consultas. O gerenciamento de catlogo. A propagao de atualizaes. A recuperao de dados. O controle de concorrncia.
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
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
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
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
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
Neste caso est claro que, para minimizar a transferncia de dados, a opo 3 a melhor.
135
Processamento de consultas
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
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
138
Processamento de consultas
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
140
Processamento de consultas
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
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
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
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
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:
146
Processamento de consultas
Em determinadas situaes, reduzir o trfego pode no ser suficiente para otimizar uma consulta.
147
Gerenciamento de catlogo
Informaes sobre a distribuio dos dados. Informaes sobre objetos que vo proporcionar as independncias desejveis em um BDD.
148
Gerenciamento de catlogo
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
Cada site mantm o catlogo local e, alm disso, um site central mantm uma cpia de todos os catlogos locais.
150
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
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
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
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
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
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
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
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:
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
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
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):
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
T1y
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
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
175
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
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:
180
Replicao
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:
181
Replicao
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
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:
183
Replicao
Para restaurar o banco de dados no servidor slave basta rodar o comando mysql com a sintaxe abaixo:
184
Replicao
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:
185
Replicao
Com os dados obtidos do servidor master, deve-se ajustar as configuraes no(s) servidor(es) slave, com o comando CHANGE MASTER TO. Exemplo:
Replicao
Depois de ajustar as configuraes o slave deve ser ativado com o comando abaixo:
187
Replicao
Verificando o funcionamento:
188
Tabelas federadas
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
O MySQL utiliza um mecanismo de armazenamento (Storage Engine) para disponibilizar recursos de federao. Portanto, necessrio verificar se o engine apropriado est habilitado.
191
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
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
194
Fonte: http://dev.mysql.com/doc/refman/5.1/en/federated-description.html
195
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.
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:
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
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
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
Exemplo:
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
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
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
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
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
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
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
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
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
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
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:
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:
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:
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:
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
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
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
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
250