Escolar Documentos
Profissional Documentos
Cultura Documentos
APOLITECNICA
Escola Superior de Gestão, Ciências e Tecnologias
Docente: Mestre Simão Chinama
2
Cap. 1
Processamento de Transacções, Recuperação de Dados e Controlo
de Concorrência
“I always say, keep a diary and someday it’ll keep you.”
-- Mae West
Sumário
Introdução às transacções. Propriedades ACID.
Requisitos para a consistência duma base de dados.
Transacção como unidade de recuperação de dados.
Situações que requrem recuperação de dados.
Recuperação a partir duma falha numa transacção.
Estados da transacção. Entradas no system log.
Execução duma transacção. Operações de R/W duma transacção.
Checkpoints no system log. Logging com escrita à cabeça (Write Ahead
Logging).
Transacção como unidade de concorrência.
Algoritmos de escalonamento de transacções.
Escalas de transacções. Métodos de serialização/seriabilidade.
Técnicas de trancamento (Locking) para controlo de concorrência.
Tipos de fechos/trancamentos. Fechos e seriabilidade.
3
Cap. 1
Processamento de Transacções, Recuperação de Dados e Controlo
de Concorrência
“I always say, keep a diary and someday it’ll keep you.”
-- Mae West
Sumário
“Deadlocks” e “livelocks”.
Outras estratégias de controlo da concorrência e recuperação de dados.
4
1. O que é uma transacção?
5
1. O que é uma transacção?
base de dados num base de dados num
estado consistente estado consistente
Transferência
A base de dados pode
ficar temporariamente
num estado inconsistente
durante a execução
6
2. Propriedades ACID das transacções
Para preservar a integridade dos dados, o DBMS tem de assegurar:
7
2. Propriedades ACID das transacções
Para preservar a integridade dos dados, o DBMS tem de assegurar:
8
3. Requisitos para a consistência duma base de
dados
Controlo da Concorrência
A maioria dos DBMSs são sistemas multi-utilizador.
Recuperação de Dados
Falhas do sistema, quer por hardware quer por software, não poderão
deixar a base de dados num estado inconsistente.
10
4. Transacção como Unidade de Recuperação de
Dados
Se um erro ou crash de hardware/software ocorre
entre o início e o fim duma transacção, a DB ficará
inconsistente
Falha do computador (crash do sistema)
Um erro do sistema ou da transacção
Erros locais ou condições de excepção
detectadas pela transacção
Reforço do controlo da concorrência
Falha do disco
Problemas físicos e catástrofes
A DB é restaurada de volta a algum estado anterior
correcto —perto do instante da falha— de forma a
poder refazer as operações após o instante da falha.
11
4. Transacção como Unidade de Recuperação de
Dados
O DBMS assegura que se a transacção executa
algumas actualizações e depois ocorre uma falha
antes do seu término, então aquelas actualizações são
desfeitas.
12
5. Recuperação de Dados
Duplicação de Dados (Mirroring)
Manter duas cópias da DB simultaneamente
13
Registo de Transacções c/ Actualizações (System
Logging)
O log regista todas as operações envolvidas
numa transacção que afectam os dados duma DB.
O log é guardado em disco de tal forma que ele
não é afectado por falhas, com excepção das
falhas do próprio disco e das catástrofes.
14
6. Recuperação a partir duma Falha numa
Transacção
Falha Catastrófica
Restaura uma cópia anterior da DB a partir dum
backup arquivado
Aplica o transaction log à cópia para reconstruir
a DB desde o estado corrente arquivado na cópia
até ao instante da falha. É óbvio que só as
transacções COMMITTED registadas no log serão
refeitas.
Dump incremental + log cada transacção
15
6. Recuperação a partir duma Falha numa
Transacção
Falha Não-Catastrófica
Inverte as operações que causaram
inconsistência, desfazendo-as e, possivelmente,
refazendo alterações legítimas que se perderam.
As entradas ou verbetes registados no system
log são consultadas durante a recuperação de
dados.
Não há necessidade de usar uma cópia completa
de arquivo da DB.
16
6. Recuperação a partir duma Falha numa
Transacção
Operações de Desfazer
Operações de Refazer
17
7. Estados da Transacção
Para efeitos de recuperação de dados, o sistema
precisa de registar quando uma transacção começa, é
consignada (committed) e termina.
Begin_Transaction: marca o início de execução da
transacção;
End_Transaction: especifica que as operações de
R/W terminaram e marca o fim de execução da
transacção (mas pode ser ser abortada pelo controlo
da concorrência);
Commit_Transaction: assinala o fim bem-sucedido
duma transacção. Quaisquer actualizações executadas
pela transacção podem ser consignadas (committed)
para a DB com segurança e não serão desfeitas.
18
7. Estados da Transacção
Rollback (ou Abort): assinala que a transacção
chegou ao fim sem sucesso. Quaisquer alterações que
a transacção tenha causado na DB serão desfeitas;
Undo: semelhante ao estado ROLLBACK, mas aplica-
se a uma só operação em vez de uma transacção
como um todo;
19
8. Entradas no System Log
20
9. Execução duma Transacção
21
10. Operações de R/W duma Transacção
22
11. Checkpoints no System Log
23
12. Logging com Escrita à Cabeça(Write Ahead Logging)
24
13. Transacção como Unidade de Concorrência
25
14. Algorítmos de Escalonamneto deTransacções
26
14.1 Problema da Actualização Perdida
N:= 2; M:=3
27
14.2 The Incorrect Summary or Unrepeatable Read Problem
28
14.3 Dirty Read or The Temporary Update Problem
29
15. Escalas de Transacções
o Uma escala S de n transacções é uma sequência das operações
destas transacções.
30
15. Escala Seriada e Escala Não-Seriada
31
15.1 Exemplos de Escalas Seriadas
32
15.2 Exemplos de Escalas Não-Seriada
33
16. Métodos de Seriação/Seriabilidade
o Multi-versão. As técnicas de controlo de concorrência mantêm
os antigos valores do item de dados quando o item é actualizado.
o Selos de Tempo (timestamps). São identificadores únicos para
cada transacção e são gerados pelo sistema. As transações podem
então ser ordenadas segundo os seus selos de tempo de forma a
garantir a seriabilidade.
o Protocolos. Se forem seguidos por todas as transacções, os
protocolos asseguram a seriabilidade de todas as escalas em que
as transacções participam. Podem usar técnicas de locking dos
itens de dados para impedir que as várias transacções acedam aos
dados concorrentemente.
o Controlo Pessimista da Concorrência
Verifica se os itens de dados estão fechados (locked), ou
verifica os seus selos de tempo, antes de os ler ou escrever
em consequência de alguma operação que é realizada sobre a
DB.
34
17. Técnicas de Trancamento (Locking) para Controlo de
Concorrência
O conceito de trancamento de itens de dados é usado numa
das técnicas principais de controlo da execução concorrente
de transacções.
o Um fecho (lock) é uma variável associada a um item numa
DB. Em geral, existe um fecho para cada item numa DB.
35
18. Tipos de Fechos
36
18. Tipos de Fechos
37
19. Os fechos não garantem seriabilidade: caso
da actualização perdida
38
20. Os fechos não garantem seriabilidade
39
21. Como assegurar a seriabiliade?:Trancamento em
Duas Fases (Two-Phase Locking - 2PL)
Todas as operações de trancamento (read_lock, write_lock)
precedem a primeira operação de destrancamento nas transacções.
Duas fases:
fase de expansão: novos fechos sobre itens podem ser
activados, mas nenhum pode ser libertado;
fase de contracção: os fechos existentes podem ser
libertados, mas nenhum pode ser activado.X=20, Y=30
40
22. Trancamento em Duas Fases (Two-Phase Locking –
2PL)
2PL básico:
41
2PL conservador ou 2PL estático:
uma transacção tranca todos os itens que ela acede
antes do início da sua execução
pré-declarando os conjuntos de reads e writes
2PL estrito:
uma transacção não liberta nenhum dos seus
fechos até que ela consigne (commits) ou aborte
conduz a uma escala estrita para ecuperação de
dados
42
23. Deadlock: um problema resultante do trancamento
43
24. Deadlocks e Livelocks
Protocoolo de prevenção de deadlocks:
2PL conservador
Selos nas transacções (transacções mais recentes
abortadas)
nenhuma espera
espera cautelosa
esgotamento de tempo (time outs)
Detecção de deadlock (se a carga da transacção é
leve ou as transacções são curtas e só tranca alguns
poucos itens)
Grafo do tipo espera-por para detecção de
deadlock
Selecção de víctima
Recomeça ciclicamente
Livelock: uma transacção não pode prosseguir por
um período indefinido de tempo enquanto outras
transacções continuam normalmente.
Esquemas de espera justa (i.e. first-come-first-
served)
44
25. Granularidade do Trancamento
Um item duma base de dados pode ser:
um registo
o valor dum campo dum registo
um bloco do disco
a base de dados no seu todo
Compromissos (trafe-offs)
granularidade lata
quanto maior o tamanho do item, menor é o grau da
concorrência
granularidade fina
quanto menor o tamanho do item, maior número de
fechos são necessários gerir e armazenar e mais
operações de lock/unlock são necessárias.
45
Outras Estratégias de Controlo da Concorrência e
Recuperação de Dados
26. Recuperação de Dados: Técnica de Paginação na
Sombra
46
Outras Estratégias de Controlo da Concorrência e
Recuperação de Dados
27. Recuperação de Dados: Técnica de Paginação na
Sombra (cont.1)
47
Outras Estratégias de Controlo da Concorrência e
Recuperação de Dados
27. Recuperação de Dados:
Técnica de Paginação na Sombra (cont.2)
48
28. Conclusões
A gestão de transacções lida com dois
requisitos chavede qualquer sistema de
bases de dados:
Resiliência
na capacidade dos dados
sobreviverem a crashes de hardware e
erros de software sem perdas e sem
ficar inconsistente
Controlo de Acesso
na capacidade de permitir acesso
simultâneo aos dados por vários
utilizadores duma forma consistente e
só com acesso autorizado
49
Cap. 2
Sistema Relacional Objecto
1. Sistema Orientado a Objecto
Introdução e Motivações;
Conceitos principais
Exemplos;
Principais SGBDOOs;
Considerações Finais.
50
Cap. 2
Sistema Relacional Objecto
1. Sistema Orientado a Objecto
1.1 Introdução e Motivações
51
Cap. 2
Sistema Relacional Objecto
1. Sistema Orientado a Objecto
1.1 Introdução e Motivações (cont.)
52
Cap. 2
Sistema Relacional Objecto
1. Sistema Orientado a Objecto
1.2 O Modelo de Dados Orientado a Objecto
A estrutura objecto:
Superficialmente, um objecto corresponde a uma entidade no modelo E-R.
Este paradigma se baseia no encapsulamento de dados e em código
relacionado a um objecto dentro de uma única unidade.
As interações entre um objecto e o resto do sistema deve ser via mensagens.
Uma interface entre um objecto e o resto do sistema deve ser definida por
um conjunto de mensagens permitidas.
Em geral, um objecto tem associado a ele:
Um conjunto de variáveis que contém os dados para o objecto; as variáveis
correspondem aos atributos no modelo E-R;
Um conjunto de mensagens ao qual o objecto responde; cada mensagem
pode ter zero, um ou mais parâmetros;
Um conjunto de métodos, cada qual sendo um corpo de código para
implementar a mensagem; um método para implementar a mensagem; um
método retorna um valor como resposta à mensagem.
53
Cap. 2
Sistema Relacional Objecto
1.2 . O Modelo de Dados Orientado a Objecto
O termo mensagem num contexto orientado a objecto se refere à passagem de
pedidos entre os objectos sem considerar detalhes específicos de mplementação.
Cada atributo de uma entidade deve ser expresso como uma variável e um par de
mensagens
do objecto no modelo orientado a objecto. A variável é usada para armazenar o valor do
atributo, uma mensagem é usada para ler o valor do atributo e o outro método é usado para
atualizar o valor. Por exemplo:
o O atributo endereço da entidade empregado pode ser representado por:
Uma variável endereço;
Uma mensagem obter_endereço cuja resposta é o endereço;
Uma mensagem ajustar_endereço, que possui um parâmetro novo_endereço,
para atualizar o endereço.
o Por simplicidade muitos modelos orientados a objecto permitem que as variáveis
sejam lidas ou actualizadas diretamente, sem ter de definir mensagens para isso.
55
Cap. 2
Sistema Relacional Objecto
1. Sistema Orientado a Objecto
1.3 . Classes de Objectos
objectos similares são aqueles que respondem às mesmas mensagens, usam os
mesmos métodos e têm variáveis de mesmo nome e tipo.
objectos similares são agrupados formando uma classes.
Cada um desses objectos é chamada de uma instância de sua classe.
A noção de uma classe no modelo de dados orientado a objecto corresponde à noção
de um conjunto entidade do modelo E-R.
Exemplo de definição de uma classe:
Class empregado {
/* variáveis */
string nome;
string endereço;
date data_início;
int salário;
/* mensagem */
int salário_anual();
string obter_nome();
string obter_endereço();
int ajustar_endereço (string novo_endereço);
int tempo_emprego();
} 56
Cap. 2
Sistema Relacional Objecto
1. Sistema Orientado a Objecto
1.4 . Herança
Considerando um banco de dados orientado a objectos para a aplicação bancária
(exemplo –
Korth), a classe clientes é similar à classe empregados, pois ambas definem variáveis para
nome, endereço e assim por diante. No entanto, há variáveis específicas para empregados
(salário) e variáveis específicas para clientes (classificação_crédito).
Neste caso é desejável definir uma representação para as variáveis comuns em um único
local. Para isso, combina-se empregados e clientes dentro de uma classe.
Empregados e clientes podem ser representados por classes que são especializações de uma
classe pessoa. Variáveis e métodos específicos a empregados são associados à classe
empregados. Variáveis e métodos específicos a clientes são associados à classe cliente.
Variáveis e métodos que se aplicam tanto a empregados como a clientes são associados à57
classe pessoa.
Cap. 2
Sistema Relacional Objecto
1. Sistema Orientado a Objecto
1.4 . Herança
class pessoa {
string nome;
string endereço;
};
class cliente isa pessoa {
int classificação_crédito
};
class empregado isa pessoa {
date data_início;
int salário;
};
class escriturário isa empregado {
int número_escriturário;
int número_conta_despesa;
};
class caixa isa empregado {
int horas_por_semana;
int número_estação;
};
class secretária isa empregado {
int horas_por_semana;
string gerente;
};
58
Cap. 2
Sistema Relacional Objecto
1. Sistema Orientado a Objecto
1.4 . Herança
Um benefício importante da herança em sistemas orientados a objecto é a
noção de reusabilidade.
Qualquer método de uma classe pode ser invocado por qualquer objecto
pertencente a qualquer subclasse desta classe.
59
Cap. 2
Sistema Relacional Objecto
1. Sistema Orientado a Objecto
1.4 . Herança Múltipla
Suponha que precisemos distinguir entre escriturários, caixas e secretárias de tempo
integral
e tempo parcial. Além disso, assuma que são necessárias diferentes variáveis e métodos
para representar empregados de tempo parcial e tempo integral. Então cada um desses
empregados são classificados de duas maneiras diferentes.
pessoa
empregado cliente
60
Cap. 2
Sistema Relacional Objecto
1. Sistema Orientado a Objecto
1.4. Herança Múltipla
Existem certas variáveis e métodos específicos para empregado em tempo integral e
outros
específicos para empregado em tempo parcial. Assim, na hierarquia em análise, as variáveis
e métodos para empregados de tempo integral devem ser definidos três vezes: uma vez
para
escriturário_TI, uma vez para secretária_TI e uma vez para caixa_TI. Redundâncias deste
tipo são indesejáveis mediante alterações nas propriedades dos empregados de tempo
integral (e parcial), que deverão ser feitas em dois lugares diferentes.
Nesta hierarquia também não se consegue representar os empregados que não são
escriturários, caixas ou secretárias, mas que possuem características de serem ou de tempo
parcial ou integral.
61
Cap. 2
Sistema Relacional Objecto
1. Sistema Orientado a Objecto
1.4. Herança Múltipla
Herança múltipla é a habilidade de uma classe herdar variáveis e métodos
a partir de múltiplas superclasses.
pessoa
empregado cliente
62
Cap. 2
Sistema Relacional Objecto
1. Sistema Orientado a Objecto
1.4. Herança Múltipla
Assuma que, em vez de definir salário para a classe empregado,
defina-se uma variável chamada pagamento para cada classe:
tempo_integral, tempo_parcial, escriturário, caixa e secretária, como a
seguir:
Tempo_integral: pagamento é um inteiro de 0 a 100.000 contendo um salário anual;
Tempo_parcial: pagamento é um inteiro de 0 a 20, contendo uma taxa horária de
pagamento.
Caixa e escriturário: pagamento é um inteiro de 0 a 20.000, contendo um salário anual;
Secretária: pagamento é um inteiro de 0 a 25.000, contendo um salário anual
Considere a classe secretária_TP. Ela pode herdar a definição de
pagamento tanto de tempo_parcial como de secretária. O resultado é
diferente, dependendo da escolha feita.
Opções:
Incluir ambas as variáveis, renomenado-as como tempo_parcial.pagamento e
secretária.pagamento;
Escolher uma ou outra, baseado na ordem em que as classes tempo_parcial e
secretária
foram criadas; 63
Forçar o usuário a fazer a escolha;
Cap. 2
Sistema Relacional Objecto
1. Sistema Orientado a Objecto
1.5 Identidade de objecto
Os objectos em um banco de dados orientado a objecto correspondem a uma
entidade na empresa que está sendo modelada. Uma entidade mantém sua
identidade mesmo se algumas de suas propriedades mudam com o tempo.
64
Cap. 2
Sistema Relacional Objecto
1. Sistema Orientado a Objecto
1.5 Identidade de objecto
Formas de identidade:
Valor: usado em modelos relacionais um valor de dado é usado para
identidade da tupla;
Nome: usado em sistemas de arquivos um nome fornecido pelo usuário é
usado para identidade dos arquivos;
Embutido: usado em sistemas orientados a objectos a cada objecto é
atribuído automaticamente um identificador pelo sistema quando aquele objecto
é criado.
Identificadores de objectos são únicos. Exemplo de uso do identificador:
Um dos atributos de um objecto pessoa pode ser o atributo cônjuge, que é
realmente um identificador do objecto pessoa correspondendo ao cônjuge da
primeira pessoa. Assim, o objecto pessoa pode armazenar uma referência ao
objecto que representa o cônjuge de pessoa.
I
65
Cap. 2
Sistema Relacional Objecto
1. Sistema Orientado a Objecto
1.6 O bjectos Compostos
As referências entre os objectos podem ser usadas para modelar
diferentes conceitos do mundo real. Um desses conceitos é o de
objectos compostos.
bicicleta é parte de
66
Cap. 2
Sistema Relacional Objecto
1. Sistema Orientado a Objecto
1.7. Modelagem de BDOOs
Representação na BDOO:
Uma BDOO armazena objectos integralmente;
É possível recuperar um objecto a qualquer momento, inclusive todas
as referências.
Linguagem de definição:
ODL (Object Definition Language);
Utilizada para criar definições de objectos.
Linguagem de consulta:
OQL (Object Query Language);
Utilizada para recuperar objectos da Base de Dados.
67
Cap. 2
Sistema Relacional Objecto
1. Sistema Orientado a Objecto
1.7. Modelagem de BDOOs
Automóvel Classes
KIA
Modelo
Côr Fabricante
Preço Nome
Fabricante Presidente
Peças [ ] Fábricas [ ]
Motor
Nome
Fabricante Fábrica
Potencia
Nome
Peças Cidade
Nome Funcionários
Motor
Produção [ ]
68
Cap. 2
Sistema Relacional Objecto
1. Sistema Orientado a Objecto
1.7. Modelagem de BDOOs
Automóvel {OID12} Objectos
736194174
ka
Preto Fabricante {OID1}
100.000 Ford
OID1 João da Silva
[OID5123 ] [ OID1125, OID1127, OID1128]
Peças {OID5123}
Correia dentada Motor {OID154}
Ford Rocam 1000 16V
OID154 OID1
[OID1125, OID1127, OID1128] 120CV
Fabricante {OID1}
Ford
João da Silva Fábrica {OID1125} Fábrica {OID1127} Fábrica {OID1128}
Central Filial Saão Bernardo I Filial Saão Bernardo II
Camaçari São bernardo São bernardo
320 250 130
Motor {OID154}
Rocam 1000 16V
OID1
120CV
70
Cap. 2
Sistema Relacional Objecto
1. Sistema Orientado a Objecto
1.8. Modelagem Padrão ODMG – ODL (Object Data Management Group
-Object Definition Language)
possui_professor
Pessoa especializa_em
Departamento
oferece
trabalha_em
possui_especializacoes
oferecido_por
disciplinas_completadas
Prefessor Aluno alunos
curso
registado_em
assistente
AlunoGrad oferecidas do_curso
no_comite_de comite
alunos_registados
Disciplina_Actual_ oferecida
M:N 71
Cap. 2
Sistema Relacional Objecto
1. Sistema Orientado a Objecto
1.9. Especificação ODL
class Grau
( extent graus)
{
attribute enum GrauValores{A,B,C,D,F,I,P} grau;
relationship Disciplina disciplina inverse Disciplina::alunos;
relationship Aluno aluno inverse Alunos::disciplinas_completadas;
};
73
Cap. 2
Sistema Relacional Objecto
1. Sistema Orientado a Objecto
1.9. Especificação ODL
75
Cap. 2
Sistema Relacional Objecto
1. Sistema Orientado a Objecto
1.13. Persistência de objectos
Persistência por classe: Declarar que uma classe é persistente.
Assim,
todos os objectos da classe são, por default, persistentes. Os objectos de
classes não persistentes são transientes.
Critério
Objectivity/DB GemStone(*)
Objectivity, Inc.
www.poet.com
GemStone Systems
Definição de dados SIM
pelo usuário
Herança Múltipla SIM
78
Cap. 2
Sistema Relacional Objecto
2. MAPEAMENTO OBJETO - RELACIONAL
Utiliza-se uma abstração bastante intuitiva no sentido de que uma classe do
tipo persistente pode ser mapeada para uma tabela no banco de dados
relacional e atributos da classe para campos da tabela. Porém, algumas
diferenças entre os dois modelos , como OID (Object Identifiers –
Identificador de Objetos), tipos de dados, herança e associações,
demandam um estudo mais detalhado das estratégias de mapeamento.
80
Cap. 2
Sistema Relacional Objecto
2. MAPEAMENTO OBJETO - RELACIONAL
81
Cap. 2
Sistema Relacional Objecto
2. MAPEAMENTO OBJETO - RELACIONAL
2.5 Mapeamento de Herança
Existem fundamentalmente três estratégias para mapear herança em um
banco de dados relacional:
82
Cap. 2
Sistema Relacional Objecto
2. MAPEAMENTO OBJETO - RELACIONAL
2.5 Mapeamento de Herança
Existem fundamentalmente três estratégias para mapear herança em um
banco de dados relacional:
85
Cap. 2
Sistema Relacional Objecto
2. MAPEAMENTO OBJETO - RELACIONAL
Uma tabela por Uma tabela por classe Uma tabela por cla
hierarquia de classes concreta
86
Cap. 2
Sistema Relacional Objecto
2. MAPEAMENTO OBJETO - RELACIONAL
2.6 Mapeamento de Associações
As associações entre classes no modelo orientado a objetos é conceitualmente
bastante similar ao relacionamento entre tabelas no modelo relacional. Este fato
permite que tais associações sejam mapeadas para relacionamentos, podendo
utilizar chaves estrangeiras ou tabelas auxiliares.
87
Cap. 2
Sistema Relacional Objecto
2. MAPEAMENTO OBJETO - RELACIONAL
88
Cap. 2
Sistema Relacional Objecto
2. MAPEAMENTO OBJETO - RELACIONAL
Cria-se então uma tabela associativa com os OID’s das classes que se
referenciam, garantindo a navegabilidade do relacionamento, como
exemplificado
89
Cap. 2
Sistema Relacional Objecto
2. MAPEAMENTO OBJETO - RELACIONAL
2.7 MAPEAMENTO DE ASSOCIAÇÕES TODO/PARTE
As associações todo/parte geralmente são representadas como
agregações ou composições.
90
Cap. 3
Bases de dados distribuídas
1. Definição
Um Sistema de Gestão de Bases de Dados Distribuídos, é um sistema
cujos dados se encontram fisicamente dispersos por várias máquinas,
ligadas por meios de comunicação, mas integrados logicamente.
91
Cap. 3
Bases de dados distribuídas
92
Cap. 3
Bases de dados distribuídas
Impressoras
Printer
Mainframe
Terminal
Sistema centralizado
93
Cap. 3
Bases de dados distribuídas
Vantagens
Facilidade de administração
Possibilidade de partilha de recursos
Desvantagens
Sistemas caros de manter em operação
Dependência em relação a fornecedores de software e hardware
Custo expansão (o aumento da capacidade de processamento é
muito caro)
Dificuldade de partilha dos dados em concorrência.
Exige mais recursos de rede (a unidade de transferência de
informação é o ficheiro)
94
Cap. 3
Bases de dados distribuídas
3. Arquitectura cliente\servidor
Segundo esta arquitectura uma ou mais máquinas dotadas em termos
de capacidade de disco poderiam ser utilizadas para armazenar uma
grande quantidade de dados (servidores), permitindo que a sua partilha
pelas restantes máquinas ligadas à rede (clientes).
95
Cap. 3
Bases de dados distribuídas
3.1 Arquitectura cliente servidor de ficheiros
Unidades de
Disco
Servidor de Ficheiros
Ficheiro B
Ficheiro A
Ficheiro C
Clientes
Arquitectura cliente/servidor de ficheiros
96
Cap. 3
Bases de dados distribuídas
3.1 Arquitectura cliente servidor de ficheiros
Desvantagens
Exige mais recursos de rede (a unidade de transferência de
informação é o ficheiro)
Dificuldade de partilha dos dados em concorrência.
Base de
dados
Servidor de base de dados
Instruções
SQL Dados
Dados
Clientes
Arquitectura cliente/servidor de base de dados
98
Cap. 3
Bases de dados distribuídas
4. Sistemas Distribuídos
São sistemas em que os dados se encontram distribuídos por
vários centros de processamento independentes e existe uma
partilha transparente desses dados entre os vários centros
(nodos), fazendo uso de meios de comunicação.
Nodo 1 Nodo 2
BD1 BD 2
Rede de
Data
Nodo N Comunicação Nodo 3
BD N Bd 3
Razões ou porquês de SD
Reflectir o estado distribuído de uma organização . é hoje
muito comum casos de organizações espalhadas por zonas
geograficamente distantes, com necessidade de uma
coordenação comum;
100
Cap. 3
Bases de dados distribuídas
4. Sistemas Distribuídos (SD)
Razões ou porquês de SD
Reflectir o estado distribuído de uma organização . é hoje
muito comum casos de organizações espalhadas por zonas
geograficamente distantes, com necessidade de uma
coordenação comum;
101
Cap. 3
Bases de dados distribuídas
4. Sistemas Distribuídos (SD)
102
Cap. 3
Bases de dados distribuídas
4. Sistemas Distribuídos (SD)
103
Cap. 3
Bases de dados distribuídas
4. Sistemas Distribuídos (SD)
104
Cap. 3
Bases de dados distribuídas
4. Sistemas Distribuídos (SD)
106
Cap. 3
Bases de dados distribuídas
4. Sistemas Distribuídos (SD)
Tipos de fragmentação
Fragmentação vertical
Fragmentação Horizontal
Fragmentação mista
107
Cap. 3
Bases de dados distribuídas
4. Sistemas Distribuídos (SD)
Fragmentação vertical
A tabela lógica é dividida em tabelas cujos esquemas são
subconjuntos do esquema da tabela original (na sua versão mais
simples, a chave da tabela lógica propaga-se a todos a todos
fragmentos verticais). Por analogia com a álgebra relacional, a
fragmentação vertical pode ser como a execução de projecções
sobre a tabela lógica, armazenando as tabelas resultantes
(tabelas físicas) em nodos diferentes.
Tabela lógica global Nodo 1 Nodo 2 Nodo 3
Tabelas
Física
Locais
Fragmentação Vertical
108
Cap. 3
Bases de dados distribuídas
4. Sistemas Distribuídos (SD)
Fragmentação vertical
• Divide uma relação verticalmente em colunas
– Cada fragmento mantém apenas certos atributos da
relação gerando subrelações
• Chave primária ou alguma chave candidata - atributo
comum
– Algébra relacional - através do operador de projecção
– Conjunto de fragmentos gerados pelas listas de
projecções (L1, L2, … Ln) incluem todos os atributos de R
• Compartilhando um atributo comum
– Reconstruir a relação R: operação de junção
109
Cap. 3
Bases de dados distribuídas
4. Sistemas Distribuídos (SD)
Fragmentação vertical
Exemplo: Dados Pessoais
Nome Sobren. CPF Sexo CPF_SUP Salário Depto
José Silva 0192022 M 020201212 2300,00 05
Carlos Torres 2121222 M 020201212 3000,00 05
Márcia Fernandes 1212222 F 098789999 2900,00 05
Márcia Camargo 2233223 F 898989899 2500,00 06
Antonio Rodrigues 2134786 M 898989899 4000,00 06
Rui Madsen 0857489 M 898989899 3880,00 06
Cap. 3
Bases de dados distribuídas
4. Sistemas Distribuídos (SD)
Fragmentação vertical
Fragmentação horizontal
A tabela lógica é dividida em várias partes, cada
uma delas com o mesmo esquema da tabela
original. Continuando a analogia com as
operações da álgebra relacional, o exemplo da
figura a seguir pode ser obtido executando três
operações de selecção sobre a tabela lógica e
armazenando as tabelas resultantes (tabelas
físicas) em nodos diferentes.
112
Cap. 3
Bases de dados distribuídas
4. Sistemas Distribuídos (SD)
4.1.2 Fragmentação de dados
Fragmentação horizontal
• Subconjunto de tuplas em uma dada relação
– Agrupar linhas criando subconjuntos segundo um
determinado critério
– Cada critério é uma condição geralmente relacionada a
um único atributo
– Algébra relacional - através do operador de seleção
– Conjunto de fragmentos gerados pelas condições (C1,
C2, … Cn) incluem todas as tuplas de R
• Podem ou não ser disjuntos
– Reconstruir a relação R: operação de união
113
Cap. 3
Bases de dados distribuídas
4. Sistemas Distribuídos (SD)
4.1.2 Fragmentação de dados
Fragmentação horizontal
Exemplo:
Empregado
Nome Sobren. CPF Sexo CPF_SUP Salário Depto
José Silva 0192022 M 020201212 2300,00 05
Carlos Torres 2121222 M 020201212 3000,00 05
Márcia Fernandes 1212222 F 098789999 2900,00 05
Márcia Camargo 2233223 F 898989899 2500,00 06
Antonio Rodrigues 2134786 M 898989899 4000,00 06
Rui Madsen 0857489 M 898989899 3880,00 06
Cap. 3
Bases de dados distribuídas
4. Sistemas Distribuídos (SD)
Fragmentação mista
Sobre uma mesma tabela lógica são definidos fragmentos
verticais e horizontais. Em analogia com as operações da
álgebra relacional ou seja é a combinação entre fragmentação
horizontal e vertical Algébra relacional - através do operador de
projeção e seleção Reconstruir a relação R: operação de junção
e união - ordem apropriada
115
Cap. 3
Bases de dados distribuídas
4. Sistemas Distribuídos (SD)
Fragmentação mista
Sobre uma mesma tabela lógica são definidos fragmentos
verticais e horizontais. Em analogia com as operações da
álgebra relacional ou seja é a combinação entre fragmentação
horizontal e vertical Algébra relacional - através do operador de
projeção e seleção Reconstruir a relação R: operação de junção
e união - ordem apropriada
116
Cap. 3
Bases de dados distribuídas
4. Sistemas Distribuídos (SD)
Autonomia Local - o SGBD de cada local deve ser autónomo, isto
é, ele deve ser gerenciado em cada local independentemente dos
outros locais de uma rede de computador. O processamento de uma
questão pode necessitar de cooperação de vários nodos. Todo esse
processo é coordenado pelo sistema sem intervenção dos
utilizadores.
117
Cap. 3
Bases de dados distribuídas
4. Sistemas Distribuídos (SD)
121
Cap. 3
Bases de dados distribuídas
4. Sistemas Distribuídos (SD)
122
Cap. 3
Bases de dados distribuídas
4. Sistemas Distribuídos (SD)
123
Cap. 3
Bases de dados distribuídas
4. Sistemas Distribuídos (SD)
Gateways Oracle
DB2 SGBDSGBD Gateways DB2
Gateways INGRES
125
Cap. 3
Bases de dados distribuídas
4. Sistemas Distribuídos (SD)
126
Cap. 3
Bases de dados distribuídas
4. Sistemas Distribuídos (SD)
Multibase de dados
Utilizadores locais
127
Cap. 3
Bases de dados distribuídas
4. Sistemas Distribuídos (SD)
128
Cap. 3
Bases de dados distribuídas
4. Sistemas Distribuídos (SD)
129
Cap. 3
Bases de dados distribuídas
4. Sistemas Distribuídos (SD)
1ª
1 Sim 1 Sim
2 2
F
A 1 1
S
e 2 2
2ª
3 terminado 4 3 terminado 4
F
A 3
S
e 4
131
Cap. 3
Bases de dados distribuídas
4. Sistemas Distribuídos (SD)
132
Cap. 3
Bases de dados distribuídas
4. Sistemas Distribuídos (SD)
133
Capítulo 4
Data Warehouse
• Introdução ao Data Warehouse
– Sistemas de Apoio à Decisão
– Conceitos de Data Warehouse
– Principais Características
• Arquitectura do Data Warehouse
– Estrutura Interna
– Granularidade
– Data Marts
–Metadados
– Acesso aos Dados
– Tipos de DW 134
Sistemas de Apoio à Decisão
• Informação
– Melhor recurso do qual uma empresa pode dispor
para tomar decisões estratégicas
– Obtida analisando dados históricos sobre vendas,
produção, clientes, etc.
• Análise dos dados
– Fornece informações vitais para a empresa
– Pode aumentar a competitividade da empresa
– Era feita intuitivamente pelos gerentes
135
Sistemas de Apoio à Decisão
• Dificuldades para obter informação
– Quantidade de dados a serem analisados cresce
com a expansão do negócio e com o passar dos
anos
– Dados conflitantes vindos de fontes diferentes
podem gerar informações desencontradas
– Impossível para um ser humano manter e analisar
todos os dados
– Informação não é mais mantida por gerentes
devido à mobilidade no mercado de trabalho
136
Sistemas de Apoio à Decisão
• Sistemas de Apoio à Decisão (SAD)
– Usam dados históricos mantidos em um banco de
dados convencional
– Dados históricos são analisados usando técnicas
de mineração de dados para obter informações
usadas na tomada de decisões
– Estatísticas de venda, produção, clientes, etc.
podem ser levantadas e consideradas para tomar
decisões estratégicas de negócio
137
Sistemas de Apoio à Decisão
• Benefícios dos Sistemas de Apoio à Decisão
– Determinar o mercado-alvo de um produto
– Definir o preço de um produto, criar promoções e
condições especiais de compra
– Verificar a eficácia de campanhas de marketing
– Optimizar a quantidade de produtos no estoque
– Responder rapidamente a mudanças no mercado e
determinar novas tendências
... ou seja, ganhar eficiência e lucratividade
138
Sistemas de Apoio à Decisão
• Problema: dados históricos não são mantidos nos
BDs da empresa
– Volume de dados seria muito grande
– Desempenho seria insatisfatório
139
Data Warehouse
• Histórico
– Criado pela IBM na década de 60 com o nome
Information Warehouse
– Relançado diversas vezes sem grande sucesso
– O nome Data Warehouse foi dado por William H.
Inmon, considerado o pai desta tecnologia
– Tornou-se viável com o surgimento de novas
tecnologias para armazenar e processar uma
grande quantidade de dados
140
Data Warehouse
• O que é?
– Sistema que armazena dados históricos usados no
processo de tomada de decisão
– Integra os dados corporativos de uma empresa em um
único repositório
• Para que serve?
– Para criar uma visão única e centralizada dos dados que
estavam dispersos em diversos BDs
– Permite que usuários finais executem consultas, gerem
relatórios e façam análises
141
Data Warehouse
• BDs usados nas aplicações de negócio são
chamados BDs operacionais
• DW é um BD informacional alimentado com
dados dos BDs operacionais da empresa
– Disponibiliza dados actuais e dados históricos
– Dados podem ser sumarizados (condensados) para
que sejam analisados
– Contém também metadados, que são dados sobre os
dados armazenados no DW
142
Data Warehouse
• Então o Data Warehouse é apenas um BD que
contém também dados históricos?
• Para que seja considerado um Data
Warehouse, um banco de dados deve:
– Colectar dados de várias fontes
– Dados colectados devem ser transformados para
que haja uma visão única dos dados
– Dados devem ser usados por aplicativos para
obter informações que dêem apoio à decisão
143
Data Warehouse
BD Operacional Data Warehouse
Usuários Funcionários Alta administração
Utilização Tarefas cotidianas Decisões
estratégicas
Padrão de uso Previsível Difícil de prever
Princípio de Com base em Com base em
funcionamento transacções análise de dados
Valores Valores actuais Valores históricos e
dos dados e voláteis imutáveis
Detalhamento Alto Sumarizado
Organização dos Orientado a Orientado a assunto
dados aplicações
144
Principais Características
• De acordo com a definição dada por Inmon,
um Data Warehouse deve ser:
– Orientado a assunto
– Integrado
– Não-volátil
– Variável com o tempo
145
Principais Características
• Orientação a assunto
– Os dados em um DW são organizados de modo a facilitar a
análise dos dados
– Dados são organizados por assunto e não por aplicação,
como em BDs operacionais
Produtos
Histórico
Clientes
de Vendas
Aplicação Análise
de Venda Estoque de Vendas
146
Principais Características
• Integração
– Dados de um DW provém de diversas fontes
– Dados podem ser sumarizados ou eliminados
– Formato dos dados deve ser padronizado para
uniformizar nomes, unidades de medida, etc.
UK Data
C
Produtos
Peso (lb) o Warehouse
Brasil n
v
Peso (kg) e Peso (gr) Produtos
Produtos
r
USA s
Peso (oz)
ã
Produtos o
147
Principais Características
• Não-Volátil
– Dados não são mais alterados depois de incluídos
no DW
– Operações no DW
• Em um BD operacional é possível incluir, alterar e
eliminar dados
• Já no DW é possível apenas incluir dados
– Garante que consultas subsequentes a um dado
produzirão o mesmo resultado
148
Principais Características
• Variável com o Tempo
– Os dados no DW são relativos
a um determinado instante de tempo
Produto Preço
BD Caneta Azul 0,50
Preços Lápis Preto 0,30
... ...
Dados
Operacionais
Sistemas de
Extração
Dados
Informacionais
150
Arquitectura do Data Warehouse
• Sistemas baseados em Data Warehouse
Dados
Operacionais
Data
Warehouse
Dados
Informacionais
151
Arquitectura do Data Warehouse
• Principais tarefas efectuadas pelo DW
– Obter dados dos BDs operacionais e externos
– Armazenar os dados
– Fornecer informações para tomada de decisão
– Administrar o sistema e os dados
• Principais componentes do DW
– Mecanismos para acessar e transformar dados
– Mecanismo para armazenamento de dados
– Ferramentas para análise de dados
– Ferramentas de gerência
152
Estrutura Interna
• Requisitos do DW
– Eficiente
• Grande volume de dados imutáveis
• Processamento paralelo e/ou distribuído
– Confiável
• Funcionamento do sistema
• Resultado das análises
– Expansível
• Crescente volume de dados
• Maior número de fontes de dados
153
Estrutura Interna
• Em geral são usados BDs relacionais para
armazenar os dados do DW
– Capazes de manter e processar grandes volumes
de dados
– Optimizados para lidar com dados imutáveis
• As ferramentas de análise empregam:
– Técnicas de mineração de dados
– Inteligência artificial: redes neurais, fuzzy, etc.
– A Internet: Web mining, agentes móveis, etc.
154
Estrutura Interna
Clientes Operacionais BDs Operacionais BDs Externos
Obtenção
de Dados
Gerenciamento
Data Warehouse
Clientes Informacionais
Busca de
Informações
155
Estrutura Interna
• Obtenção de Dados
Oracle
Arquivos
156
Estrutura Interna
• Busca de Informações
Localizar Analisar
• Catálogo de • Análise multi-
Data informações dimensional
Warehouse • Visualização • Data mining
de negócios • Consultas
• Modelos e relatórios
Armazenar
• Dados
relacionais
• Cache
• Várias
plataformas
157
Estrutura Interna
• Modelo de Camadas
Dados Operacionais Dados Externos
Gerenc. de Processos
Troca de Mensagens
Data Staging
159
Granularidade
• Granularidade
– Nível de detalhe dos dados
– De extrema importância no projeto do DW
Dados Nível médio Dados pouco
detalhados de detalhe detalhados
Granularidade
160
Granularidade
• Definir a granularidade adequada é vital para
que o DW atenda seus objectivos
– Mais detalhes Mais dados Análise mais
longa Informação mais detalhada
– Menos detalhes Menos dados Análise mais
curta Informação menos detalhada
• Para evitar que se perca informação são
criados vários níveis de granularidade
161
Granularidade
• Dados x Granularidade
– Dados Actuais
• Reflectem acontecimentos recentes
• Alto nível de detalhe (baixa granularidade)
– Dados Sumarizados (1 ou + níveis)
• Dados históricos condensados
• Menor nível de detalhe (maior granularidade)
– Dados Antigos
• Dados históricos mantidos em fita, CD, etc
• Alto nível de detalhe (baixa granularidade)
162
Granularidade
• Processo de sumarização
– Aplica um novo esquema de modo a condensar os
dados
– Ex.: armazenar totais, médias, etc.
• Processo de envelhecimento
– Transfere os dados antigos do HD para fita, CD,
etc.
– Mantém o nível de detalhe para que nenhuma
informação seja perdida
163
Granularidade
Dados
Altamente
Sumarizados
Dados
Ligeiramente
Sumarizados
Sumarização
Dados Atuais
Envelhecimento
Dados
Antigos
164
Granularidade
• Exemplo: Companhia Telefónica [Inmon]
Dados Sumarizados
Dados Detalhados
Resumo das
Sumarização ligações feitas
pelos clientes
Ligações feitas
pelos clientes Dados Antigos
nos últimos
12 meses Envelhecimento
Ligações
feitas pelos
clientes
165
Granularidade
• Exemplo: Companhia Telefónica (cont.)
Dados Detalhados Dados Sumarizados Dados Antigos
167
Data Marts
• Dados mantidos no DW são separados por
assunto em subconjuntos de acordo com:
– A estrutura interna da empresa
– O processo de tomada de decisão
• Estes subconjuntos dos dados são chamados
de Data Marts
168
Data Marts
• Um Data Mart desempenha o papel de um
DW departamental, regional ou funcional
• Uma empresa pode construir seus Data Marts
gradativamente a partir do DW
Data
Warehouse
169
Data Marts
• Dados podem ser repetidos em dois ou mais
Data Marts
• Os mesmos dados podem estar representados
com granularidade diferente
• Ex:
Data Mart Vendas detalhadas
Vendas
170
Metadados
• Os Metadados são dados sobre os dados
– Para cada atributo mantido no DW há uma
entrada no dicionário de dados
– Os dados são processados, actualizados e
consultados partindo dos metadados
– Usuários ficam conhecendo a estrutura e o
significado dos dados
– No BD operacional, a estrutura e o significado dos
dados estão embutidos nas aplicações
171
Metadados
• Camadas de Metadados
– Metadados Operacionais
• Definem a estrutura dos dados operacionais
– Metadados do DW
• Orientados por assunto
• Informam como os dados do DW foram calculados e
como devem ser interpretados
– Metadados do Usuário
• Organizam os metadados do DW com base em
conceitos familiares ao usuário final
172
Metadados
• Classificação em função dos dados descritos
– Metadados de Mapeamento
• Como BDs operacionais são mapeados no DW
– Metadados de Sumarização
• Como os dados foram sumarizados no DW
– Metadados Históricos
• Como a estrutura dos dados vem mudando
– Metadados de Padrões de Acesso
• Como os dados do DW vem sendo acessados
– Metadados de Miscelânea
173
Metadados
• Fontes de Metadados
– Código fonte dos SBDs operacionais
– Diagramas CASE de BDs operacionais e do DW
– Documentação dos BDs operacionais e do DW
– Entrevistas com usuários, administradores e
programadores dos BDs e do DW
– O ambiente de DW
• Frequência de acesso aos dados, tempo de resposta, controle de
usuários, etc.
174
Acesso aos Dados
• Acesso em Duas Camadas
Fontes de Servidor
Dados de DW Data Warehouse
Fontes de Servidor
Dados de DW Data Warehouse
177
Modelagem Multi dimensional
Definição
– É uma técnica aplicada para criar modelos conceptuais de
negócios, que facilita a investigação, o resumo e a
organização de dados para a análise.
178
Modelo Multidimensional
Elementos Básicos
• Factos
– Medidas de desempenho
• Dimensões
– contexto de um fato
• Medidas (variáveis)
– representação numérica de um fato
tempo vendedor
venda
cliente local
180
Modelo Multidimensional
Modelo Estrela (representação relacional)
Produto
Vendedor
CodProduto Cliente
CodVendedor Nome
Nome Tipo CodCliente
CPF Nome
Endereço
Vendas
CodProduto
CodLocal
Tempo CodTempo
CodTempo CodCliente
Dia CodVendedor Local
Mês Quantidade
Ano Valor CodLocal
Lucro Província
Distrito
181
Modelo Multidimensional
Modelo Snowflake (Floco de Neve)
182
Modelo Multidimensional
Modelo Snowflake (representação relacional)
Produto Cliente
CodProduto CodCliente
Nome Nome
Tipo Endereço Distrito
CodLocal
Vendedor Distrito
CodVendedor Vendas CodProv
Nome CodProduto
CPF CodLocal
CodTempo
Provincia
Tempo CodCliente
CodProv
CodTempo CodVendedor
Província
Dia Quantidade
Mês Valor
Ano Lucro 183
Create Table Produto Create Table Vendedor
(CodProduto int, CodVendedor
Nome varchar(30), Nome varchar(30),
Tipo Varchar(10), CPF varchar(10),
Constraint Ch_pri_Produto Constraint Ch_pri_Vendedor
Primary key (CodProduto)); Primary key (CodVendedor));
Create Table Local Create Table Cliente
(CodLocal int, (CodCliente int,
Província varchar(30), Nome varchar(30),
Distrito varchar(30) Endereço varchar(30),
Constraint Ch_pri_Local Constraint Ch_pri_Cliente
Primary key (CodLocal)) Primary key (CodCliente))
184
Create Table Tempo
(CodTempo int, Dia Varchar(2),
Mês Varchar(12), Ano Varchar(8),
Constraint Ch_pri_Tempo Primary key (CodTempo));
Facto: Dimensões:
•Vendas •Cliente
•Produto
Medidas •Tempo
•Unidades vendidas •Etc...
•Valor
•Etc...
186
Produto
Vendedor CodProduto
CodVendedor Nome Cliente
Nome Tipo CodCliente
CPF Nome
Endereço
Vendas
CodProduto
Tempo
CodLocal
CodTempo
CodTempo
Dia Local
CodCliente
Mês CodLocal
CodVendedor
Ano Província
Quantidade
Valor Distrito
187
Exemplo2:
A companhia aérea de Maputo fornece serviços de voos charter
“on demand”, usando um mix de aviões e tipos de aviões. O
gestor de operações pretende analisar dados dos voos charter,
como por exemplo custo, horas de voo, combustível gasto e
receita. Também pretende realizar drill-downs por piloto,
cliente, avião, tipo de avião e período de tempo (semana, mês,
trimestre, ano). Os requisitos para a datawarehouse são:
• Mostrar o número total de horas de voo por diferentes aviões,
clientes, pilotos, períodos de tempo (semana, mês e ano).
• Mostrar o custo total por aviões, clientes, pilotos e períodos de
tempo (semana, mês e ano).
• Mostrar a receita dos charters por pilotos, aviões, e por
diferentes períodos de tempo, etc.
188
Tempo
Aviao Facto_Voo Cod_tempo
Cod_tempo Ano
Cod_aviao Cod_piloto Mes
marca Cod_aviao Semana
Tipo Cod_clientes
Custo_voo
Horas
Clientes Combustivel Pilotos
Cod_Clintes Receitas
Custo_clientes Cod_piloto
Nome
Nome
189
Exemplo 3:
Suponha que uma datawarehouse é composta por quatro
dimensões: data, espectador, localização e jogo, sendo os factos
mensuráveis quantidade e tarifa, onde tarifa é o preço que um
espectador paga para assistir a um jogo numa determinada data
numa certa localização. Os espectadores podem ser estudantes,
adultos ou seniores, tendo cada uma destas categorias a sua
respectiva tarifa.
190
Tempo
Espectador Cod_tempo
Ano
Cod_espectador Facto_jogo Trimestre
Categoria
Cod_tempo Mes
Sexo
Cod_espectador Semana
Cod_jogo Dia
Cod_localização
Localização Quantidade Jogo
Cod_localização Tarifa
Cod_jogo
Provincia
Tipo_jogo
Distrito
Nome_jogo
191