Baixe o app para aproveitar ainda mais
Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original
Banco de Dados I/AlgebraRelacional_BOM.pdf MC536 Linguagens de Manipulação de Dados Sumário � Linguagens de consulta � Exemplo � Álgebra Relacional � Seleção � Projeção � Renomeação � União � Intersecção � Diferença � Produto Cartesiano � Junção � Divisão � Exemplos Sumário � Linguagens de consulta � Exemplo � Álgebra Relacional � Seleção � Projeção � Renomeação � União � Intersecção � Diferença � Produto Cartesiano � Junção � Divisão � Exemplos Linguagens de consulta/manipulação � Linguagens de Consulta (Query Languages): � Possibilitam a manipulação e recuperação de dados do banco de dados. � Linguagens de Consulta matemáticas formam as bases para linguagens “reais” (ex. SQL): � Álgebra Relacional: operacional, usuário descreve o que quer fazer. � Cálculo Relacional: não operacional, declarativo. Usuário descreve o que ele quer, ao invés de como deve ser computado o que ele quer. Sumário � Linguagens de consulta � Exemplo � Álgebra Relacional � Seleção � Projeção � Renomeação � União � Intersecção � Diferença � Produto Cartesiano � Junção � Divisão � Exemplos Exemplo – cliente usa táxi Cliente TaxiCorrida1 N N 1 CliId Nome CPF Cliente Particular Cliente Empresa CGC d data Placa Marca Modelo Ano Exemplo - Tabelas CliId Nome 0101 Nina 0202 Miúcha 0303 Bóris Cliente Particular (CP) Cliente Empresa (CE) CliId Nome 0102 Lulu 0202 Miúcha 0203 Bidu 0304 Scooby Exemplo - Tabelas Placa Marca Modelo Ano AAA0101 Ma1 Mo1 2000 BBB0202 Ma2 Mo2 2001 CCC0303 Ma3 Mo3 2002 DDD0404 Ma4 Mo4 2003 EEE0505 Ma5 Mo5 2004 CliId Placa Data 0101 AAA0101 10/01/2001 0203 DDD0404 20/02/2002 Táxi (TX) Corrida (C) Exemplo de consultas � Qual a marca de carro mais requisitada pelos clientes? � Em que mês do ano mais corridas são feitas? � Qual o nome dos clientes que trabalham na empresa que mais se utiliza do serviço de táxi? Sumário � Linguagens de consulta � Exemplo � Álgebra Relacional � Seleção � Projeção � Renomeação � União � Intersecção � Diferença � Produto Cartesiano � Junção � Divisão � Exemplos Álgebra Relacional � Linguagem operacional � Entrada e saída das operações são relações � Operações � Operações da teoria de conjunto matemática � União, intersecção, diferença de conjuntos, produto cartesiano � Operações desenvolvidas p/ BDs relacionais: � Seleção, projeção, junção e renomeação Sumário � Linguagens de consulta � Exemplo � Álgebra Relacional � Seleção � Projeção � Renomeação � União � Intersecção � Diferença � Produto Cartesiano � Junção � Divisão � Exemplos Operação de Seleção � Seleciona um conjunto de tuplas que satisfaçam um dado predicado (uma condição lógica) nos valores dos atributos � Notação: σ p(R) � P: predicado de seleção � Constituído por termos ligados por: ∧ (e), ∨ (ou), ¬ (não) � Termo: �<atributo> op <atributo> �<atributo> op <constante> � op pode ser: =, ≠, >, ≥, < ou ≤ Seleção - Exemplo σAno>2001(TX) Placa Marca Modelo Ano AAA0101 Ma1 Mo1 2000 BBB0202 Ma2 Mo2 2001 CCC0303 Ma3 Mo3 2002 DDD0404 Ma4 Mo4 2003 EEE0505 Ma5 Mo5 2004 Seleção - Exemplo σAno>2001(TX) Placa Marca Modelo Ano CCC0303 Ma3 Mo3 2002 DDD0404 Ma4 Mo4 2003 EEE0505 Ma5 Mo5 2004 Seleção - Propriedades � A operação de seleção é unária � A operação σσσσ <condição de seleção>(R) produz relação com mesmo esquema R � O grau (número de atributos) de uma relação resultante de uma seleção é o mesmo grau de R � O número de tuplas resultante da seleção é: | σ p(R) | ≤ | R | � É comutativa: σσσσ <condição 1>(σσσσ< condição 2>( R)) = σσσσ <condição 2 (σσσσ< condição 1>(R)) � Cascatas de seleções = uma seleção com conjunção de condições: σσσσ <condição 1>(σσσσ < condição 2> (σσσσ <condição 3> (R))) = σσσσ <condição 1> AND < condição 2> AND < condição 3> (R) Sumário � Linguagens de consulta � Exemplo � Álgebra Relacional � Seleção � Projeção � Renomeação � União � Intersecção � Diferença � Produto Cartesiano � Junção � Divisão � Exemplos Operação de Projeção � Seleciona certas colunas da tabela, deixando alguns atributos de lado. � Notação: �piA1, A2, …, Ak (R) � A1, ..., Ak : atributos da relação R � Resultado: relação com as k colunas selecionadas � Duplicatas são removidas Projeção - Exemplo piMarca,Modelo(TX) Placa Marca Modelo Ano AAA0101 Ma1 Mo1 2000 BBB0202 Ma2 Mo2 2001 CCC0303 Ma3 Mo3 2002 DDD0404 Ma1 Mo1 2003 EEE0505 Ma5 Mo5 2004 Projeção - Exemplo piMarca,Modelo(TX) Placa Marca Modelo Ano AAA0101 Ma1 Mo1 2000 BBB0202 Ma2 Mo2 2001 CCC0303 Ma3 Mo3 2002 DDD0404 Ma1 Mo1 2003 EEE0505 Ma5 Mo5 2004 Projeção - Exemplo piMarca,Modelo(TX) Marca Modelo Ma1 Mo1 Ma2 Mo2 Ma3 Mo3 Ma1 Mo1 Ma5 Mo5 Projeção - Exemplo piMarca,Modelo(TX) Marca Modelo Ma1 Mo1 Ma2 Mo2 Ma3 Mo3 Ma5 Mo5 Projeção - Propriedades � O número de tuplas na relação resultado | pi <lista> (R) | ≤ | R | � Não é comutativa Sumário � Linguagens de consulta � Exemplo � Álgebra Relacional � Seleção � Projeção � Renomeação � União � Intersecção � Diferença � Produto Cartesiano � Junção � Divisão � Exemplos Renomeação � Dada R(A1, A2, ... An) � ρ D1 (A1, A2, ... An) (D) � D1 (A1, A2, ... An) ← D Renomeação ρ(TY,σMarca=‘Ma1’TX)TX Placa Marca Modelo Ano AAA0101 Ma1 Mo1 2000 BBB0202 Ma2 Mo2 2001 CCC0303 Ma3 Mo3 2002 DDD0404 Ma1 Mo1 2003 EEE0505 Ma5 Mo5 2004 Placa Marca Modelo Ano AAA0101 Ma1 Mo1 2000 FFF0606 Ma1 Mo2 2004 TY Sumário � Linguagens de consulta � Exemplo � Álgebra Relacional � Seleção � Projeção � Renomeação � União � Intersecção � Diferença � Produto Cartesiano � Junção � Divisão � Exemplos Operações de Conjuntos - União � R ∪ S: � Relação que contém as tuplas que estão em R, S ou ambas R ∪ S = {t | t ∈ R ou t ∈ S} � Para R ∪ S ser válida: � R, S devem ter igual número de atributos � Os domínios dos atributos têm de ser compatíveis Operações de Conjuntos - União CliId Nome 0101 Nina 0202 Miúcha 0303 Bóris Cliente Particular (CP) Cliente Empresa (CE) CliId Nome 0102 Lulu 0202 Miúcha 0203 Bidu 0304 Scooby CliId Nome 0102 Lulu 0202 Miúcha 0203 Bidu 0304 Scooby 0101 Nina 0303 Bóris CP ∪∪∪∪ CE Sumário � Linguagens de consulta � Exemplo � Álgebra Relacional � Seleção � Projeção � Renomeação � União � Intersecção � Diferença � Produto Cartesiano � Junção � Divisão � Exemplos Operações de Conjuntos - Intersecção � R ∩ S: � Relação que contém as tuplas que estão em ambas R e S Operações de Conjuntos - Intersecção CliId Nome 0101 Nina 0202 Miúcha 0303 Bóris Cliente Particular (CP) Cliente Empresa (CE) CliId Nome 0102 Lulu 0202 Miúcha 0203 Bidu 0304 Scooby CliId Nome 0202 Miúcha CP ∩∩∩∩ CE Sumário � Linguagens de consulta � Exemplo � Álgebra Relacional � Seleção � Projeção � Renomeação � União � Intersecção � Diferença � Produto Cartesiano � Junção � Divisão � Exemplos Operações de Conjuntos - Diferença � R - S: � Relação que contém as tuplas que estão em R e que não estão em S Operações de Conjuntos - Diferença CliId Nome 0101 Nina 0202 Miúcha 0303 Bóris Cliente Particular (CP) Cliente Empresa (CE) CliId Nome 0102 Lulu 0202 Miúcha 0203 Bidu 0304 Scooby CliId Nome 0101 Nina 0303 Bóris CP - CE Operações de Conjuntos - Propriedades � União e interseção são comutativas: � R ∪ S = S ∪ R � R ∩ S = S ∩ R � E associativas: � R ∪ (S ∪ T) = (R ∪ S) ∪ T � (R ∩ S) ∩ T = R ∩ (S ∩ T) � Diferença não é comutativa R - S ≠ S – R Sumário � Linguagens de consulta � Exemplo � Álgebra Relacional � Seleção � Projeção � Renomeação � União � Intersecção � Diferença � Produto Cartesiano � Junção � Divisão � Exemplos Operações de Conjunto - Produto Cartesiano � Permite combinar informações de duas relações � R(A1, A2, ..., An) x S(B1, B2, ..., Bm) é uma relação Q(A1, A2, ..., An, B1, B2, ..., Bm ) �| R x S | = | R | * | S | Operações de Conjunto - Produto Cartesiano CliId Nome 0101 Nina 0202 Miúcha 0303 Bóris CP CliId Placa Data 0101 AAA0101 10/01/2001 0203 DDD0404 20/02/2002 Corrida (C) CP x C CliId Nome CliId Placa Data 0101 Nina 0101 AAA0101 10/01/2001 0101 Nina 0203 DDD0404 20/02/2002 0202 Miúcha 0101 AAA0101 10/01/2001 0202 Miúcha 0203 DDD0404 20/02/2002 0303 Bóris 0101 AAA0101 10/01/2001 0303 Bóris 0203 DDD0404 20/02/2002 Sumário � Linguagens de consulta � Exemplo � Álgebra Relacional � Seleção � Projeção � Renomeação � União � Intersecção � Diferença � Produto Cartesiano � Junção � Divisão � Exemplos Junção � Combina as tuplas relacionadas em duas relações R e S dentro de uma tupla única. � Dadas as relações: � R(A1, A2, ..., An) � S(B1, B2, ..., Bm) � R <condição da junção> S contém todas as tuplas do produto cartesiano que satisfazem a condição. Junção - exemplo CP CP.CliId<C.CliIdC CliId Nome CliId Placa Data 0101 Nina 0101 AAA0101 10/01/2001 0101 Nina 0203 DDD0404 20/02/2002 0202 Miúcha 0101 AAA0101 10/01/2001 0202 Miúcha 0203 DDD0404 20/02/2002 0303 Bóris 0101 AAA0101 10/01/2001 0303 Bóris 0203 DDD0404 20/02/2002 Produto cartesiano Tuplas que satisfazem a condição Junção - exemplo CP CP.CliId<C.CliIdC CliId Nome CliId Placa Data 0101 Nina 0203 DDD0404 20/02/2002 0202 Miúcha 0203 DDD0404 20/02/2002 Junção � R S é uma relação Q(A1, A2, ..., An, B1, B2, ..., Bm ) � Número de tuplas na junção: 0 ≤| R S | ≤ | R | * | S | Equi-Junção � Um caso especial de junção condicional em que a condição contém somente igualdades. Equi-Junção - exemplo CP CliIdC CliId Nome CliId Placa Data 0101 Nina 0101 AAA0101 10/01/2001 0101 Nina 0203 DDD0404 20/02/2002 0202 Miúcha 0101 AAA0101 10/01/2001 0202 Miúcha 0203 DDD0404 20/02/2002 0303 Bóris 0101 AAA0101 10/01/2001 0303 Bóris 0203 DDD0404 20/02/2002 Produto cartesiano Tuplas que satisfazem equi-junção em CliId Equi-Junção - exemplo CP CliIdC CliId Nome CliId Placa Data 0101 Nina 0101 AAA0101 10/01/2001 Conjunto Completo de Operadores � {pi, σσσσ , ∪∪∪∪, -, X} � Qualquer outro operador pode ser expresso através dos operadores deste conjunto � R ∩∩∩∩ S = (R ∪∪∪∪ S) - ((R-S) ∪∪∪∪ (S-R)) � R |X|<condição>S = σσσσ<condição>(R X S) Sumário � Linguagens de consulta � Exemplo � Álgebra Relacional � Seleção � Projeção � Renomeação � União � Intersecção � Diferença � Produto Cartesiano � Junção � Divisão � Exemplos Divisão � Não é tem um operador primitivo � É útil para expressar consultas como: � Encontre clientes que tenham andado em táxis de uma certa marca Divisão � x e y podem ser quaisquer listas de campos � x ∪∪∪∪ y é a lista de campos na relação A � y é a lista de campos na relação B � A/B � A/B = { <x> | ∃ <x,y> ∈ A ∀ <y> ∈ B} � A/B contém todas tuplas x (clientes) tal que para cada tupla y (táxi de marca MA1) em B, há uma tupla xy em A. � Ou: Se o conjunto de valores y (marca do táxi) associados com valores x (clientes) em A contiverem todos os valores y em B, o valor x está em A/B. Divisão - exemplo X Y x1 y1 X1 y2 X1 y3 X1 y4 x2 y1 x2 y2 x3 y2 X4 y2 x4 y4 Y y2 Y y2 y4 Y y1 y2 y4 X x1 x2 x3 x4 X x1 x4 X x1 A B3 B2 B1 A/B1 A/B2 A/B3 Divisão CliId Placa Data 0101 AAA0101 10/01/2001 0101 FFF0606 0202 FFF0606 0202 BBB0202 0303 DDD0404 0404 AAA0101 0404 FFF0606 19/02/2002 0404 DDD0404 20/02/2002 TY Corrida (C) Placa Marca Modelo Ano AAA0101 Ma1 Mo1 2000 FFF0606 Ma1 Mo2 2004 Consulta: Encontrar clientes que tenham andado em táxis da marca Ma1 Divisão CliId Placa 0101 AAA0101 0101 FFF0606 0202 FFF0606 0202 BBB0202 0303 DDD0404 0404 AAA0101 0404 FFF0606 0404 DDD0404 Corrida2 Placa AAA0101 FFF0606 ρρρρ(Corrida2,pipipipiClId,Placa(Corrida)) ρρρρ(Taxi2,pipipipiPlaca(TY)) Taxi2 Divisão CliId Placa 0101 AAA0101 0101 FFF0606 0202 FFF0606 0202 BBB0202 0303 DDD0404 0404 AAA0101 0404 FFF0606 0404 DDD0404 Corrida2 Placa AAA0101 FFF0606 Taxi2 Corrida2/Taxi2 CliId 0101 0404 Sumário � Linguagens de consulta � Exemplo � Álgebra Relacional � Seleção � Projeção � Renomeação � União � Intersecção � Diferença � Produto Cartesiano � Junção � Divisão � Exemplos Exercícios – Funcionários e Dependentes � F(numfd,nomef) � D(numfd,nomed,par) D numfd nomed par 01 Alice filha 02 Alice esposa 02 Clara filha 03 José filho F numfd nomef 01 F1 02 F2 03 F3 04 F4 Exercícios � Quais os nomes e parentescos de todos os dependentes? Exercícios � Quais os nomes e parentescos de todos os dependentes? �pinomed,par (D) Exercícios � Quais funcionários possuem dependentes filhas? Exercícios � Quais funcionários possuem dependentes filhas? �pinumfd (σpar=‘filha’ (D)) Exercícios � Quais funcionários não possuem dependentes? Exercícios � Quais funcionários não possuem dependentes? �pinumfd (F) - pinumfd (D) Exercícios � Dê os nomes dos funcionários que possuem algum dependente. � Dê o nome de cada funcionário que possui uma dependente chamada Alice. � Quais funcionários não têm Alice como dependente? Exercícios � Dê os nomes dos funcionários que possuem algum dependente. �pinomef (F |X| D) Exercícios � Dê o nome de cada funcionário que possui uma dependente chamada Alice. �pinomef (F |X|(σnomed=‘Alice’ (D))) Exercícios � Quais funcionários não têm Alice como dependente? � pinumfd (D) - pinumfd (σnomed=‘Alice’ (D)) Exercícios Banco branch (branch-name, branch-city, assets) customer (customer-name, customer-street, customer-only) account (account-number, branch-name, balance) loan (loan-number, branch-name, amount) depositor (customer-name, account-number) borrower (customer-name, loan-number) Banco - consultas � Determinar todos os empréstimos superiores a $1200 � Encontrar os números dos empréstimos de montante superior a $1200 � Listar os nomes de todos os clientes que têm um empréstimo, uma conta, ou ambas as coisas � Encontrar os clientes que têm um empréstimo e uma conta no banco. � Determinar todos os clientes que têm um empréstimo na agência de Perryridge. � Listar os nomes dos clientes que possuem um empréstimo na agência de Perryridge mas que não tem nenhuma conta no banco. � Determinar todos os clientes que têm um empréstimo na agência de Perryridge. � Determinar o saldo mais elevado entre todas as contas Clínica médicos(nEmpr,nomeM,especialidade) pacientes(nBI,nomeP,telefone,morada,idade) fármacos(codF,nomeF) consultas(nConsulta,data,nBI,nEmpr) receitas(codF,nConsulta,quantidade) Clínica - consultas � Quais os pacientes com mais de 50 anos de idade? � Quais os nomes dos pacientes com mais de 50 anos de idade? � Quais os fármacos que já foram receitados em consultas da clínica? � Quais os fármacos que nunca foram receitados? � Qual a idade do paciente mais velho? � E quais os (nomes dos) pacientes com essa idade? Banco de Dados I/Cap�tulo 1.ppt © Korth • Silberschatz • Sundarshan * Sistema de Banco de Dados, 5/E © Korth • Silberschatz • Sundarshan * Sistema de Banco de Dados, 5/E Capítulo 1: Introdução Finalidade dos sistemas de banco de dados Visão dos dados Linguagens de banco de dados Bancos de dados relacionais Projeto de banco de dados Bancos de dados semiestruturados e baseados em objeto Armazenamento e consulta de dados Gerenciamento de transação Arquitetura do banco de dados Usuários e administradores de banco de dados Estrutura geral História dos sistemas de banco de dados © Korth • Silberschatz • Sundarshan * Sistema de Banco de Dados, 5/E Sistema de gerenciamento de banco de dados (DBMS) Um DBMS contém informações sobre uma determinada empresa. Coleção de dados inter-relacionados Conjunto dos programas para acessar os dados Um ambiente que é conveniente e eficiente de usar Aplicações de banco de dados: Banco: todas as transações Linhas aéreas: reservas, horários Universidades: matrículas, registros, notas Vendas: clientes, produtos, compras Revendedores on-line: acompanhamento de pedidos, recomendações personalizadas Indústria: produção, estoque, pedidos, cadeia de suprimento Recursos humanos: registros de empregados, salários, deduções de impostos Os bancos de dados tocam todos os aspectos das nossas vidas © Korth • Silberschatz • Sundarshan * Sistema de Banco de Dados, 5/E Finalidade dos sistemas de banco de dados Antigamente, as aplicações de banco de dados eram construídas diretamente sobre os sistemas de arquivo. Desvantagens de usar sistemas de arquivo para armazenar dados: Redundância e inconsistência de dados Múltiplos formatos de arquivo, duplicação de informações em diferentes arquivos Dificuldade de acessar os dados Necessidade de escrever um novo programa para realizar cada nova tarefa Isolamento dos dados — vários arquivos e formatos Problemas de integridade Restrições de integridade (por exemplo, saldo de conta > 0) se tornam “enterrados” no código do programa em vez de serem declarados explicitamente Difícil de acrescentar novas restrições ou modificar as existentes © Korth • Silberschatz • Sundarshan * Sistema de Banco de Dados, 5/E Finalidade dos sistemas de banco de dados (cont.) Desvantagens de usar sistemas de arquivo (cont.) Atomicidade das atualizações Falhas podem deixar o banco de dados em um estado inconsistente com atualizações parciais realizadas Exemplo: A transferência de fundos de uma conta para outra deve ser completa ou não deve ocorrer Acesso concorrente por vários usuários Acesso concorrente necessário para o desempenho Acessos concorrentes não controlados podem levar a inconsistências Exemplo: Duas pessoas lendo um saldo e atualizando-o ao mesmo tempo Problemas de segurança Difícil de fornecer ao usuário o acesso a alguns, mas nem todos, os dados Os sistemas de banco de dados oferecem soluções para todos os problemas acima © Korth • Silberschatz • Sundarshan * Sistema de Banco de Dados, 5/E Níveis de abstração Nível físico: descreve como um registro (por exemplo, cliente) é armazenado. Nível lógico: descreve os dados armazenados no banco de dados e as relações entre eles. type cliente = registro id_cliente : string; nome_cliente : string; rua_cliente : string; cidade_cliente : string; end; Nível de view: os programas de aplicação ocultam detalhes dos tipos de dados. As views também podem ocultar informações (como o salário de um funcionário) por motivos de segurança. © Korth • Silberschatz • Sundarshan * Sistema de Banco de Dados, 5/E Visão dos dados © Korth • Silberschatz • Sundarshan * Sistema de Banco de Dados, 5/E Instâncias e esquemas Semelhantes aos tipos e variáveis nas linguagens de programação Esquema – a estrutura lógica do banco de dados Exemplo: O banco de dados consiste nas informações sobre um conjunto de clientes e contas e na relação entre eles Análogo às informações de tipo de uma variável em um programa Esquema físico: projeto de banco de dados no nível físico Esquema lógico: projeto de banco de dados no nível lógico Instância – o conteúdo real do banco de dados em um determinado ponto no tempo Análogo ao valor de uma variável Independência de dados física – a capacidade de modificar o esquema físico sem mudar o esquema lógico Aplicações dependem do esquema lógico Em geral, as interfaces entre os vários níveis e componentes devem ser bem-definidas de modo que as mudanças em algumas partes não influenciem seriamente outras. © Korth • Silberschatz • Sundarshan * Sistema de Banco de Dados, 5/E Modelos de dados Uma coleção de ferramentas conceituais para descrever Dados Relacionamentos de dados Semântica de dados Restrições de dados Modelo relacional Modelo de relação de entidade (principalmente para projeto de banco de dados) Modelo de dados baseado em objeto (orientado a objeto e relacional de objeto) Modelo de dados semiestruturado (XML) Outros modelos mais antigos: Modelo de rede Modelo hierárquico © Korth • Silberschatz • Sundarshan * Sistema de Banco de Dados, 5/E Linguagens de manipulação de dados (DML) Linguagem para acessar e manipular os dados organizados pelo modelo de dados apropriado A DML também é conhecida como linguagem de consulta Duas classes de linguagem Procedurais – usuário especifica que dados são necessários e como obter esses dados Declarativas (não procedurais) – usuário especifica que dados são necessários sem especificar como obter esses dados SQL é a linguagem de consulta mais utilizada © Korth • Silberschatz • Sundarshan * Sistema de Banco de Dados, 5/E Linguagem de definição de dados (DDL) Notação de especificação para definir o esquema de banco de dados Exemplo: create table conta ( número_conta char(10), saldo integer) O compilador DDL gera um conjunto de tabelas armazenado em um dicionário de dados O dicionário de dados contém metadados (ou seja, dados sobre os dados) Esquema de banco de dados Linguagem de armazenamento e definição de dados Especifica a estrutura de armazenamento e os métodos de acesso usados Restrições de integridade Registros de domínio Integridade referencial (restrição de referências na SQL) Afirmações Autorização © Korth • Silberschatz • Sundarshan * Sistema de Banco de Dados, 5/E Modelo relacional Exemplo de dados tabulares no modelo relacional Atributos © Korth • Silberschatz • Sundarshan * Sistema de Banco de Dados, 5/E Exemplo de banco de dados relacional © Korth • Silberschatz • Sundarshan * Sistema de Banco de Dados, 5/E Exemplo de banco de dados relacional (Cont.) © Korth • Silberschatz • Sundarshan * Sistema de Banco de Dados, 5/E SQL SQL: linguagem não procedural amplamente usada Exemplo: encontre o nome do cliente com id_cliente 192-83-7465 select cliente.nome_cliente from cliente where cliente.id_cliente = ‘192-83-7465’ Exemplo: encontre os saldos de todas as contas pertencentes ao cliente com id_cliente 192-83-7465 select conta.saldo from depositante, conta where depositante.id_cliente = ‘192-83-7465’ and depositante.número_conta = conta.número_conta Os programas de aplicação geralmente acessam banco de dados através de Extensões de linguagem para permitir SQL embutida Interface de programa de aplicação (por exemplo, ODBC/JDBC), que permite que consultas SQL sejam enviadas a um banco de dados. © Korth • Silberschatz • Sundarshan * Sistema de Banco de Dados, 5/E Projeto de banco de dados O processo de projetar a estrutura geral do banco de dados. Projeto lógico – Decidir sobre o esquema de banco de dados. O projeto de banco de dados exige encontrar uma “boa” coleção de esquemas de relação. Decisão empresarial – Que atributos devemos registrar no banco de dados? Decisão de ciência da computação – Que esquemas de relação devemos ter e como os atributos devem ser distribuídos entre os vários esquemas de relação? Projeto físico – Decidir sobre o layout físico do banco de dados. © Korth • Silberschatz • Sundarshan * Sistema de Banco de Dados, 5/E O modelo entidade-relacionamento Modela uma empresa como uma coleção de entidades e relacionamentos Entidade: uma “coisa” ou “objeto” na empresa que é distinguível dos outros objetos Descrito por um conjunto de atributos Relacionamento: uma associação entre várias entidades Representado graficamente por um diagrama entidade-relacionamento: © Korth • Silberschatz • Sundarshan * Sistema de Banco de Dados, 5/E Modelos de dados relacionais de objeto Estendem o modelo de dados relacional incluindo orientação a objeto e construções para lidar com tipos de dados inseridos. Permitem que atributos de tuplas tenham tipos complexos, incluindo valores não atômicos como relações aninhadas. Preservam as fundações relacionais, em especial o acesso declarativo aos dados, enquanto estendem a capacidade de modelagem. Fornecem compatibilidade com linguagens relacionais posteriores existentes. © Korth • Silberschatz • Sundarshan * Sistema de Banco de Dados, 5/E XML: Extensible Markup Language Definida pelo WWW Consortium (W3C) Originalmente criada como uma linguagem de marcação de documento, não como uma linguagem de banco de dados A capacidade de especificar novas tags e criar estruturas de tag aninhadas tornaram a XML uma excelente maneira de trocar dados, não apenas documentos. A XML se tornou a base para todos os formatos de intercâmbio de dados da nova geração. Uma ampla variedade de ferramentas está disponível para análise, navegação e consulta de dados/documentos XML. © Korth • Silberschatz • Sundarshan * Sistema de Banco de Dados, 5/E Gerenciamento de armazenamento Gerenciador de armazenamento é um módulo de programa que fornece a interface entre os dados de baixo nível armazenados no banco de dados e os programas de aplicação e consultas submetidos ao sistema. O gerenciador de armazenamento é responsável pelas seguintes tarefas: Interagir com o gerenciador de arquivos Armazenar, recuperar e atualizar dados eficientemente. Problemas: Acesso ao armazenamento Organização de arquivos Indexação e hashing © Korth • Silberschatz • Sundarshan * Sistema de Banco de Dados, 5/E Processamento de consulta 1. Análise e tradução 2. Otimização 3. Avaliação © Korth • Silberschatz • Sundarshan * Sistema de Banco de Dados, 5/E Processamento de consulta (cont.) Maneiras alternativas de avaliar uma consulta dada Expressões equivalentes Diferentes algoritmos para cada operação A diferença de custo entre um bom e um mau método de avaliar uma consulta pode ser enorme Necessidade de estimar o custo das operações Depende profundamente das informações sobre relações que o banco de dados precisa manter Necessidade de estimar estatísticas para resultados intermediários para calcular custo de expressões complexas © Korth • Silberschatz • Sundarshan * Sistema de Banco de Dados, 5/E Gerenciamento de transação Uma transação é um conjunto de operações que realiza uma única função lógica em uma aplicação de banco de dados. O componente de gerenciamento de transação garante que o banco de dados permanece em um estado consistente (correto) apesar de falhas do sistema (por exemplo, interrupções de energia e falhas do sistema operacional) e falhas de transação. O gerenciador de controle de concorrência controla a interação entre as transações concorrentes para assegurar a consistência do banco de dados. © Korth • Silberschatz • Sundarshan * Sistema de Banco de Dados, 5/E Arquitetura do banco de dados A arquitetura de um sistema de banco de dados é bastante influenciada pelo sistema de computador subjacente em que o sistema de banco de dados é executado: Centralizado Cliente-servidor Paralelo (multiprocessador) Distribuído © Korth • Silberschatz • Sundarshan * Sistema de Banco de Dados, 5/E Usuários de banco de dados Os usuários são diferenciados pela forma como esperam interagir com o Sistema Programadores de aplicação – interagem com o sistema através de chamadas de DML Usuários avançados — interagem com o sistema formulando suas requisições em uma linguagem de consulta de banco de dados Usuários especializados — interagem com o sistema escrevendo aplicações de banco de dados especializadas que não se encaixam na estrutura de processamento de dados tradicional Usuários leigos — interagem com o sistema chamando um dos programas de aplicação previamente escritos Exemplos, pessoas acessando bancos de dados através da Web, caixas bancários, equipe de contabilidade © Korth • Silberschatz • Sundarshan * Sistema de Banco de Dados, 5/E Administrador de banco de dados Coordena todas as atividades do sistema de banco de dados; o administrador de banco de dados tem um bom conhecimento dos recursos e necessidades de informação da empresa. As responsabilidades do administrador de banco de dados incluem: Definição de esquema Estrutura de armazenamento e definição de método de acesso Modificação de esquema e de organização física Concessão de autorização para acesso ao banco de dados Especificar restrições de integridade Agir como ligação com os usuários Monitorar o desempenho e responder a mudanças em requisições © Korth • Silberschatz • Sundarshan * Sistema de Banco de Dados, 5/E Estrutura geral do sistema © Korth • Silberschatz • Sundarshan * Sistema de Banco de Dados, 5/E História dos sistemas de banco de dados Década de 1950 e início da década de 1960: Processamento de dados usando fitas magnéticas para armazenamento Fitas fornecem apenas acesso seqüencial Cartões perfurados para entrada Final da década de 1960 e década de 1970: Discos rígidos permitem acesso direto aos dados Modelos de dados de rede e hierárquico em largo uso Ted Codd define o modelo de dados relacional Ganharia o ACM Turing Award por este trabalho IBM Research inicia o protótipo do System UC Berkeley inicia o protótipo do Ingres Processamento de transação de alto desempenho (para a época) © Korth • Silberschatz • Sundarshan * Sistema de Banco de Dados, 5/E História (cont.) Década de 1980: Protótipos relacionais de pesquisa evoluem para sistemas comerciais SQL se torna o padrão do setor Sistemas de banco de dados paralelos e distribuídos Sistemas de banco de dados orientados a objeto Década de 1990: Grandes aplicações de suporte a decisão e exploração de dados Grandes data warehouses de vários terabytes Surgimento do comércio Web Década de 2000: Padrões XML e XQuery Administração de banco de dados automatizada © Korth • Silberschatz • Sundarshan * Sistema de Banco de Dados, 5/E Final do Capítulo 1 © Korth • Silberschatz • Sundarshan * Sistema de Banco de Dados, 5/E Figura 1.4 © Korth • Silberschatz • Sundarshan * Sistema de Banco de Dados, 5/E Figura 1.7 Banco de Dados I/Cap�tulo 10.ppt Korth • Silberschatz • Sundarshan * Sistema de Banco de Dados, 5/E Capítulo 10: XML Korth • Silberschatz • Sundarshan * Sistema de Banco de Dados, 5/E Introdução XML: Extensible Markup Language Definida pelo WWW Consortium (W3C) Idealizada originalmente como uma linguagem de marcação de documentos, e não como uma linguagem de banco de dados Documentos possuem tags dando informações extras sobre seções do documento Por exemplo: <title> XML </title> <slide> Introdução …</slide> Derivada da SGML (Standard Generalized Markup Language), porém mais simples de usar do que a SGML Extensível, diferente da HTML Os usuários podem acrescentar novas tags, e separadamente especificar como a tag deverá ser enviada para exibição O objetivo foi (é?) substituir a HTML como linguagem para a publicação de documentos na Web Korth • Silberschatz • Sundarshan * Sistema de Banco de Dados, 5/E Introdução (cont.) A capacidade de especificar novas tags e criar estruturas de tag aninhadas tornou a XML uma ótima maneira de trocar dados, não apenas documentos. Grande parte do uso dsa XML foi nas aplicações de troca de dados, não como substituição da HTML Tags tornam os dados (relativamente) auto-documentáveis Por exemplo: <banco> <conta> <número-conta> A-101 </número-conta> <nome-agência> Downtown </nome-agência> <saldo> 500 </saldo> </conta> <depositante> <número-conta> A-101 </número-conta> <nome-cliente> Johnson </nome-cliente> </depositante> </banco> Korth • Silberschatz • Sundarshan * Sistema de Banco de Dados, 5/E XML: Motivação O intercâmbio de dados é crítico no mundo interligado de hoje Exemplos: Banco: transferência de fundos Processamento de pedidos (especialmente pedidos entre empresas) Dados científicos Química: ChemML, … Genética: BSML (Bio-Sequence Markup Language), … O fluxo de informações de papel entre organizações está sendo substituído pelo fluxo eletrônico de informações Cada área de aplicação tem seu próprio conjunto de padrões para representar informações XML tornou-se a base para todos os formatos de intercâmbio de dados da nova geração Korth • Silberschatz • Sundarshan * Sistema de Banco de Dados, 5/E XML: Motivação (cont.) Os formatos da geração anterior eram baseados em texto puro, com cabeçalhos de linha indicando o significado dos campos Semelhante em conceito aos cabeçalhos de e-mail Não considera estruturas aninhadas, nenhuma linguagem de “tipo” padrão Bastante ligada à estrutura de baixo nível do documento (linhas, espaços etc.) Cada padrão baseado em XML define quais são elementos válidos, usando Linguagens de especificação de tipo XML para especificar a sintaxe DTD (Document Type Descriptors) XML Schema Mais descrições textuais da semântica XML permite que tags novas sejam definidas conforme a necessidade Porém, isso pode ser restrito por DTDs Uma grande variedade de ferramentas está disponível para análise, navegação e consulta de documentos/dados XML Korth • Silberschatz • Sundarshan * Sistema de Banco de Dados, 5/E Estrutura de dados XML Tag: rótulo para uma seção de dados Elemento: seção de dados começando com <nometag> e terminando com </nometag> correspondente Elementos precisam ser devidamente aninhados Aninhamento apropriado <conta> … <saldo> …. </saldo> </conta> Aninhamento impróprio <conta> … <saldo> …. </conta> </saldo> Formalmente: cada tag de início precisa ter uma tag de fim correspondente, que está no contexto do mesmo elemento pai. Cada documento precisa ter um único elemento de alto nível Korth • Silberschatz • Sundarshan * Sistema de Banco de Dados, 5/E Exemplo de elementos aninhados <banco-1> <cliente> <nome-cliente> Hayes </nome-cliente> <rua-cliente> Main </rua-cliente> <cidade-cliente> Harrison </cidade-cliente> <conta> <número-conta> A-102 </número-conta> <nome-agência> Perryridge </nome-agência> <saldo> 400 </saldo> </conta> <conta> … </conta> </cliente> . . </banco-1> Korth • Silberschatz • Sundarshan * Sistema de Banco de Dados, 5/E Motivação para aninhamento O aninhamento de dados é útil na transferência de dados Exemplo: elementos representando id-cliente, nome de cliente e endereço aninhados dentro de um elemento pedido O aninhamento não é aceito, ou é desencorajado, nos bancos de dados relacionais Com múltiplos pedidos, nome e endereço de cliente são armazenados de forma redundante A normalização substitui estruturas aninhadas em cada pedido por chave estrangeira na tabela armazenando dados de nome e endereço do cliente O aninhamento é aceito em bancos de dados objeto-relacional Mas o aninhamento é impróprio na transferência de dados A aplicação externa não tem acesso direto aos dados referenciados por uma chave estrangeira Korth • Silberschatz • Sundarshan * Sistema de Banco de Dados, 5/E Estrutura de dados XML (cont.) Mistura de texto com sub-elementos é válida em XML. Exemplo: <conta> Esta conta é pouco usada atualmente. <número-conta> A-102</número-conta> <nome-agência> Perryridge</nome-agência> <saldo>400 </saldo> </conta> Útil para marcação de documento, mas desencorajado para representação de dados Korth • Silberschatz • Sundarshan * Sistema de Banco de Dados, 5/E Atributos Elementos podem ter atributos <conta tipo-conta = “corrente” > <número-conta> A-102 </número-conta> <nome-agência> Perryridge </nome-agência> <saldo> 400 </saldo> </conta> Os atributos são especificados por pares nome=valor dentro da tag de início de um elemento Um elemento pode ter vários atributos, mas cada nome de atributo só pode ocorrer uma vez <conta tipo-conta = “corrente” taxa-mensal=“5”> Korth • Silberschatz • Sundarshan * Sistema de Banco de Dados, 5/E Atributos e sub-elementos Distinção entre sub-elemento e atributo No contexto dos documentos, atributos fazem parte da marcação, enquanto o conteúdo de sub-elemento faz parte do conteúdo básico do documento No contexto da representação de dados, a diferente não é clara A mesma informação pode ser representada de duas maneiras: <conta número-conta = “A-101”> …. </conta> <conta> <número-conta>A-101</número-conta> … </conta> Sugestão: use atributos para identificadores de elementos, e use sub-elementos para o conteúdo Korth • Silberschatz • Sundarshan * Sistema de Banco de Dados, 5/E Mais sobre sintaxe XML Elementos sem sub-elementos ou conteúdo de texto podem ser abreviados terminando a tag de fim com um /> e excluindo a tag de fim <conta número=“A-101” agência=“Perryridge” saldo=“200 /> Para armazenar dados de string que possam conter tags, sem que as tags sejam interpretadas como sub-elementos, use CDATA, como a seguir <![CDATA[<conta> … </conta>]]> Aqui, <conta> e </conta> são tratados como simples strings Korth • Silberschatz • Sundarshan * Sistema de Banco de Dados, 5/E Namespaces Dados XML precisam ser trocados entre as organizações O mesmo nome de tag pode ter um significado diferente em organizações diferentes, causando confusão na troca de documentos Especificar uma string exclusiva como nome de elemento evita confusão Solução melhor: use nome-exclusivo:nome-elemento Evite usar nomes exclusivos longos em todo o documento usando Namespaces XML <banco Xmlns:FB=‘http://www.FirstBank.com’> … <FB:agência> <FB:nome-agência>Downtown</FB:nome-agência> <FB:cidade-agência> Brooklyn </FB:cidade-agência> </FB:agência> … </banco> Korth • Silberschatz • Sundarshan * Sistema de Banco de Dados, 5/E Esquema de documento XML Os esquemas (schemas) de banco de dados restringem quais informações podem ser armazenadas e os tipos de dados dos valores armazenados Documentos XML não precisam ter um esquema associado Porém, os esquemas são muito importantes para a troca de dados XML Caso contrário, um site não pode interpretar automaticamente dados recebidos de outros site Dois mecanismos para especificar um esquema XML Document Type Definition (DTD) Mais usado XML Schema Mais novo, uso cada vez maior Korth • Silberschatz • Sundarshan * Sistema de Banco de Dados, 5/E Document Type Definition (DTD) O tipo de um documento XML pode ser especificado com uma DTD Estrutura de restrições DTD dos dados XML Quais elementos podem ocorrer Que atributos um elemento pode/deve ter Que sub-elementos podem/devem ocorrer dentro de cada elemento, e quantas vezes. DTD não restringe tipos de dados Todos os valores são representados como strings em XML Sintaxe da DTD <!ELEMENT elemento (especificação-sub-elementos) > <!ATTLIST elemento (atributos) > Korth • Silberschatz • Sundarshan * Sistema de Banco de Dados, 5/E Especificação de elemento em DTD Sub-elementos podem ser especificados como nomes de elementos, ou #PCDATA (parsed character data), isto é, strings de caracteres EMPTY (nenhum sub-elemento) ou ANY (qualquer coisa pode ser um sub-elemento) Exemplo <! ELEMENT depositante (nome-cliente número-conta)> <! ELEMENT nome-cliente (#PCDATA)> <! ELEMENT número-conta (#PCDATA)> Especificação de sub-elemento pode ter expressões regulares <!ELEMENT banco ( ( conta | cliente | depositante)+)> Notação: “|” - alternativas “+” - 1 ou mais ocorrência “*” - 0 ou mais ocorrências Korth • Silberschatz • Sundarshan * Sistema de Banco de Dados, 5/E DTD banco <!DOCTYPE banco [ <!ELEMENT banco ( ( conta | cliente | depositante)+)> <!ELEMENT conta (número-conta nome-agência saldo)> <! ELEMENT cliente(nome-cliente rua-cliente cidade-cliente)> <! ELEMENT depositante (nome-cliente número-conta)> <! ELEMENT número-conta (#PCDATA)> <! ELEMENT nome-agência (#PCDATA)> <! ELEMENT saldo(#PCDATA)> <! ELEMENT nome-cliente(#PCDATA)> <! ELEMENT rua-cliente(#PCDATA)> <! ELEMENT cidade-cliente(#PCDATA)> ]> Korth • Silberschatz • Sundarshan * Sistema de Banco de Dados, 5/E Especificação de atributo na DTD Especificação de atributo: para cada atributo Nome Tipo do atributo CDATA ID (identificador) ou IDREF (referência de ID) ou IDREFS (múltiplos IDREFs) mais sobre isso adiante Se é obrigatório (#REQUIRED) tem um valor padrão (value), ou nenhum destes (#IMPLIED) Exemplos <!ATTLIST conta tipo-conta CDATA “corrente”> <!ATTLIST cliente id-cliente ID # REQUIRED contas IDREFS # REQUIRED > Korth • Silberschatz • Sundarshan * Sistema de Banco de Dados, 5/E IDs e IDREFs Um elemento pode ter no máximo um atributo do tipo ID O valor do atributo ID de cada elemento em um documento XML precisa ser distinto Assim, o valor do atributo ID é um identificador de objeto Um atributo do tipo IDREF precisa conter o valor de ID de um elemento no mesmo documento Um atributo do tipo IDREFS contém um conjunto de (0 ou mais) valores de ID. Cada valor de ID precisa conter o valor de ID de um elemento no mesmo documento Korth • Silberschatz • Sundarshan * Sistema de Banco de Dados, 5/E DTD banco com atributos DTD banco com tipos de atributo ID e IDREF. <!DOCTYPE banco-2[ <!ELEMENT conta (agência, saldo)> <!ATTLIST conta número-conta ID # REQUIRED proprietários IDREFS # REQUIRED> <!ELEMENT cliente(nome-cliente, rua-cliente, cidade-cliente)> <!ATTLIST cliente id-cliente ID # REQUIRED contas IDREFS # REQUIRED> … declarações para agência, saldo, nome-cliente, rua-cliente e cidade-cliente ]> Korth • Silberschatz • Sundarshan * Sistema de Banco de Dados, 5/E Dados XML com atributos ID e IDREF <banco-2> <conta número-conta=“A-401” proprietários=“C100 C102”> <nome-agência> Downtown </nome-agência> <saldo> 500 </saldo> </conta> <cliente id-cliente=“C100” contas=“A-401”> <nome-cliente>Joe </nome-cliente> <rua-cliente> Monroe </rua-cliente> <cidade-cliente> Madison</cidade-cliente> </cliente> <cliente id-cliente=“C102” contas=“A-401 A-402”> <nome-cliente> Mary </nome-cliente> <rua-cliente> Erin </rua-cliente> <cidade-cliente> Newark </cidade-cliente> </cliente> </banco-2> Korth • Silberschatz • Sundarshan * Sistema de Banco de Dados, 5/E Limitações das DTDs Sem definição de tipo para elementos de texto e atributos Todos os valores são strings, e não integer, real etc. Difícil de especificar conjuntos não ordenados de sub-elementos A ordem normalmente é irrelevante nos bancos de dados (A | B)* permite a especificação de um conjunto não ordenado, mas Não pode garantir que cada um de A e B ocorre apenas uma vez IDs e IDREFs não definem tipo O atributo proprietários de uma conta pode conter uma referência a outra conta, o que não tem significado O ideal é que o atributo proprietários se refira a elementos cliente Korth • Silberschatz • Sundarshan * Sistema de Banco de Dados, 5/E XML Schema XML Schema é uma linguagem de esquema mais sofisticada, que resolve as desvantagens das DTD. Ela admite Tipos dos valores Por exemplo, integer, string etc Além disso, restringe valores mínimo/máximo Tipos definidos pelo usuário É especificada na sintaxe XML, ao contrário das DTDs Representação mais padronizada, porém com mais texto É integrada aos namespaces Muito mais recursos Tipos de lista, exclusividade e restrições de chave estrangeira, herança... MAS: muito mais complicada do que as DTDs, ainda não muito usada. Korth • Silberschatz • Sundarshan * Sistema de Banco de Dados, 5/E Versão XML Schema da DTD banco <xsd:schema xmlns:xsd=http://www.w3.org/2001/XMLSchema> <xsd:element name=“banco” type=“TipoBanco”/> <xsd:element name=“conta”> <xsd:complexType> <xsd:sequence> <xsd:element name=“número-conta” type=“xsd:string”/> <xsd:element name=“nome-agência” type=“xsd:string”/> <xsd:element name=“saldo” type=“xsd:decimal”/> </xsd:squence> </xsd:complexType> </xsd:element> ….. definições de cliente e depositante …. <xsd:complexType name=“TipoBanco”> <xsd:squence> <xsd:element ref=“conta” minOccurs=“0” maxOccurs=“unbounded”/> <xsd:element ref=“cliente” minOccurs=“0” maxOccurs=“unbounded”/> <xsd:element ref=“depositante” minOccurs=“0” maxOccurs=“unbounded”/> </xsd:sequence> </xsd:complexType> </xsd:schema> Korth • Silberschatz • Sundarshan * Sistema de Banco de Dados, 5/E Consulta e transformação de dados XML Tradução de informações de um esquema XML para outro Consulta de dados XML Os dois anteriores estão muito relacionados e são tratados pelas mesmas ferramentas Linguagens padrão para consulta/tradução de XML XPath Linguagem simples, consistindo em expressões de caminho XSLT Linguagem simples, projetada para a tradução de dados XML para XML, e XML para HTML XQuery Uma linguagem de consulta XML com um rico conjunto de recursos Muitas outras linguagens foram propostas, e algumas serviram como base para o padrão Xquery XML-QL, Quilt, XQL, … Korth • Silberschatz • Sundarshan * Sistema de Banco de Dados, 5/E Modelo de árvore dos dados XML Linguagens de consulta e transformação são baseadas em um modelo de árvore dos dados XML Um documento XML é modelado como uma árvore, com nós correspondentes a elementos e atributos Nós de elemento possuem nós filhos, que podem ser atributos ou sub-elementos O texto em um elemento é modelado como um filho de nó de texto do elemento Os filhos de um nó são ordenados de acordo com sua ordem no documento XML Nós de elemento e atributo (exceto pelo nó raiz) possuem um único pai, que é um nó de elemento O nó raiz tem um único filho, que é o elemento raiz do documento Usamos a terminologia de nós, filhos, pai, irmãos, ancestral, descendente etc., que devem ser interpretados nesse modelo de árvore dos dados XML. Korth • Silberschatz • Sundarshan * Sistema de Banco de Dados, 5/E XPath XPath é usada para endereçar (selecionar) partes dos documentos usando expressões de caminho Uma expressão de caminho é uma seqüência de etapas separadas por “/” Pense nos nomes de arquivo em uma hierarquia de diretórios Resultado da expressão de caminho: conjunto de valores que, junto com seus elementos/atributos de contenção, combinam com o caminho especificado Por exemplo: /banco-2/cliente/nome-cliente avaliado nos dados de banco-2 que vimos anteriormente, retorna <nome-cliente>Joe</nome-cliente> <nome-cliente>Mary</nome-cliente> Por exemplo: /banco-2/cliente/nome-cliente/text( ) retorna os mesmos nomes, mas sem as tags delimitadoras Korth • Silberschatz • Sundarshan * Sistema de Banco de Dados, 5/E XPath (cont.) A “/” inicial indica a raiz do documento (acima da tag de nível superior) Expressões de caminho são avaliadas da esquerda para a direita Cada etapa opera sobre o conjunto de ocorrências produzidas pela etapa anterior Predicados de seleção podem vir após qualquer etapa em um caminho, em [ ] Por exemplo: /banco-2/conta[saldo > 400] retorna elementos conta com valor de saldo maior que 400 /banco-2/conta[saldo] retorna elementos conta contendo um sub-elemento saldo Atributos são acessados com “@” Por exemplo: /banco-2/conta[saldo > 400]/@número-conta retorna os números de conta das contas com saldo > 400 Atributos IDREF não são desreferenciados automaticamente (veja mais obre isso adiante) Korth • Silberschatz • Sundarshan * Sistema de Banco de Dados, 5/E Funções em XPath XPath oferece várias funções A função count() no final de um caminho conta a quantidade de elementos no conjunto gerados pelo caminho Por exemplo: /banco-2/conta[cliente/count() > 2] Retorna contas com mais de 2 clientes Também funciona para testar a posição (1, 2, ..) dos irmãos do nó Os conectivos Booleanos and e or e a função not() podem ser usados nos predicados IDREFs podem ser referenciados por meio da função id() id() também pode ser aplicado a conjuntos de referências como IDREFS e até mesmo a strings contendo várias referências separadas por espaços Por exemplo: /banco-2/conta/id(@proprietário) retorna todos os clientes referenciados pelo atributo proprietário dos elementos conta. Korth • Silberschatz • Sundarshan * Sistema de Banco de Dados, 5/E Mais recursos da XPath Operador “|” usado para implementar união Por exemplo: /banco-2/conta/id(@proprietário) | /banco-2/empréstimo/id(@tomador) indica clientes com contas ou empréstimos Porém, “|” não pode estar aninhado dentro de outros operadores. “//” pode ser usado para pular vários níveis de nós Por exemplo: /banco-2//nome-cliente encontra qualquer elemento nome-cliente em qualquer lugar sob o elemento /banco-2, independente do elemento em que está contido. Uma etapa no caminho pode seguir para: pais, irmãos, ancestrais e descendentes dos nós gerados pela etapa anterior, não apenas aos filhos “//”, descrito acima, é uma abreviação para indicar “todos os descendentes” “..” especifica o pai Omitimos outros detalhes. Korth • Silberschatz • Sundarshan * Sistema de Banco de Dados, 5/E XSLT Uma folha de estilo (stylesheet) armazena opções de formatação para um documento, normalmente separadas do documento Por exemplo: a folha de estilo HTML pode especificar cores de fonte e tamanhos para cabeçalhos, etc. A XML Stylesheet Language (XSL) foi criada originalmente para gerar HTML a partir da XML A XSLT é uma linguagem de transformação de uso geral Pode traduzir XML para XML, e XML para HTML Transformações XSLT são expressas por meio de regras, denominadas templates Templates combinam a seleção usando XPath com a construção de resultados Korth • Silberschatz • Sundarshan * Sistema de Banco de Dados, 5/E Templates XSLT Exemplo de template XSLT com parte match e select <xsl:template match=“/banco-2/cliente”> <xsl:value-of select=“nome-cliente”/> </xsl:template> <xsl:template match=“*”/> O atributo match de xsl:template especifica um padrão em XPath Elementos no documento XML que combinam com o padrão são processados pelas ações dentro do elemento xsl:template xsl:value-of seleciona (gera) valores especificados (aqui, nome-cliente) Para os elementos que não combinam com uma template Atributos e conteúdo de texto são gerados literalmente Templates são aplicadas recursivamente aos sub-elementos A template <xsl:template match=“*”/> combina com todos os elementos que não combinam com qualquer outra template Usada para garantir que seu conteúdo não será gerado. Korth • Silberschatz • Sundarshan * Sistema de Banco de Dados, 5/E Templates XSLT (cont.) Se um elemento combinar com diversas templates, apenas uma é usada Aquela que será usada depende de um complexo esquema de prioridades e prioridades definidas pelo usuário Consideramos que apenas uma template combina com qualquer elemento Korth • Silberschatz • Sundarshan * Sistema de Banco de Dados, 5/E Criando saída XML Qualquer texto ou tag na folha de estilo XSL que não esteja no namespace xsl é gerado literalmente Por exemplo: para quebrar resultados em novos elementos XML. <xsl:template match=“/banco-2/cliente”> <cliente> <xsl:value-of select=“nome-cliente”/> </cliente> </xsl:template> <xsl:template match=“*”/> Exemplo de saída: <cliente> Joe </cliente> <cliente> Mary </cliente> Korth • Silberschatz • Sundarshan * Sistema de Banco de Dados, 5/E Criando saída XML (cont.) Nota: Não podemos inserir diretamente uma tag xsl:value-of dentro de outra tag Por exemplo, não se pode criar um atributo para <cliente> no exemplo anterior usando xsl:value-of diretamente XSLT oferece uma construção xsl:attribute para cuidar dessa situação xsl:attribute acrescenta atributo ao elemento anterior Por exemplo: <cliente> <xsl:attribute name=“id-cliente”> <xsl:value-of select = “id-cliente”/> </xsl:attribute> </cliente> resulta em uma saída no formato <cliente id-cliente=“….”> …. xsl:element é usado para criar elementos de saída com nomes calculados Korth • Silberschatz • Sundarshan * Sistema de Banco de Dados, 5/E Recursão estrutural A ação de uma template pode ser aplicar templates recursivamente ao conteúdo de um elemento combinado Por exemplo: <xsl:template match=“/banco”> <clientes> <xsl:template apply-templates/> </clientes> </xsl:template> <xsl:template match=“/cliente”> <cliente> <xsl:value-of select=“nome-cliente”/> </cliente> </xsl:template> <xsl:template match=“*”/> Exemplo de saída: <clientes> <cliente> John </cliente> <cliente> Mary </cliente> </clientes> Korth • Silberschatz • Sundarshan * Sistema de Banco de Dados, 5/E Junções em XSLT Chaves (keys) XSLT permitem que elementos sejam pesquisados (indexados) por valores de sub-elementos ou atributos As chaves precisam ser declaradas (com um nome) e a função key() pode ser usada para a pesquisa. Por exemplo: <xsl:key name=“numconta” match=“conta” use=“número-conta”/> <xsl:value-of select=key(“numconta”, “A-101”) Chaves permitem que (algumas) junções sejam expressas em XSLT <xsl:key name=“numconta” match=“account” use=“número-conta”/> <xsl:key name=“numcli” match=“cliente” use=“nome-cliente”/> <xsl:template match=“depositante”> <conta-cli> <xsl:value-of select=key(“numcli”, “nome-cliente”)/> <xsl:value-of select=key(“numconta”, “número-conta”)/> </conta-cli> </xsl:template> <xsl:template match=“*”/> Korth • Silberschatz • Sundarshan * Sistema de Banco de Dados, 5/E Classificação em XSLT O uso de uma diretiva xsl:sort dentro de uma template faz com que todos os elementos que combinam com a template sejam classificados A classificação é feita antes de se aplicar outras templates Por exemplo: <xsl:template match=“/banco”> <xsl:apply-templates select=“cliente”> <xsl:sort select=“nome-cliente”/> </xsl:apply-templates> </xsl:template> <xsl:template match=“cliente”> <cliente> <xsl:value-of select=“nome-cliente”/> <xsl:value-of select=“rua-cliente”/> <xsl:value-of select=“cidade-cliente”/> </cliente> <xsl:template> <xsl:template match=“*”/> Korth • Silberschatz • Sundarshan * Sistema de Banco de Dados, 5/E XQuery XQuery é uma linguagem de consulta de uso geral para dados XML Atualmente, está sendo padronizada pelo World Wide Web Consortium (W3C) A descrição do livro-texto é baseada no rascunho do padrão datado de março de 2001. A versão final pode diferir, mas os principais recursos provavelmente se manterão. Versão alfa do mecanismo XQuery disponível pela Microsoft XQuery é derivada da linguagem de consulta Quilt, que vem da SQL, XQL e XML-QL XQuery usa uma sintaxe do tipo for … let … where .. result … com as seguintes correspondências: for SQL from where SQL where result SQL select let permite variáveis temporárias, e não possui equivalente em SQL Korth • Silberschatz • Sundarshan * Sistema de Banco de Dados, 5/E Sintaxe FLWR na XQuery A cláusula for usa expressões XPath, e variável in percorre valores no conjunto retornado por XPath Expressão FLWE simples na XQuery encontre todas as contas com saldo > 400, com cada resultado delimitado em uma tag <número-conta> .. </número-conta> for $x in /banco-2/conta let $numconta := $x/@número-conta where $x/saldo > 400 return <número-conta> $numconta </número-conta> Cláusula let não é realmente necessária nessa consulta, e a seleção pode ser feita na XPath. A consulta pode ser escrita como: for $x in /banco-2/conta[saldo>400] return <número-conta> $x/@número-conta </número-conta> Korth • Silberschatz • Sundarshan * Sistema de Banco de Dados, 5/E Expressões e funções de caminho Expressões de caminho (path) são usadas para vincular variáveis na cláusula for, mas também podem ser usadas em outros lugares Por exemplo, expressões de caminho podem ser usadas na cláusula let, para vincular variáveis a resultados de expressões de caminho A função distinct( ) pode ser usada para remover duplicatas nos resultados de expressão de caminho A função document(nome) retorrna a raiz do documento indicado Por exemplo: document(“banco-2.xml”)/banco-2/conta Funções de agregação como sum( ) e count( ) podem ser aplicadas a resultados de expressão de caminho XQuery não admite group by, mas o mesmo efeito pode ser obtido por consultas aninhadas, com expressões FLWR aninhadas dentro de uma cláusula result Veja mais sobre consultas aninhadas adiante. Korth • Silberschatz • Sundarshan * Sistema de Banco de Dados, 5/E Junções Junções são especificadas de uma maneira muito semelhante à SQL for $a in /banco/conta, $c in /banco/cliente, $d in /banco/depositante where $a/número-conta = $d/número-conta and $c/nome-cliente = $d/nome-cliente return <conta-cli> $c $a </conta-cli> A mesma consulta pode ser expressa com as seleções especificadas como seleções XPath: for $a in /banco/conta $c in /banco/cliente $d in /banco/depositante[ número-conta = $a/número-conta and nome-cliente = $c/nome-cliente] return <conta-cli> $c $a</conta-cli> Korth • Silberschatz • Sundarshan * Sistema de Banco de Dados, 5/E Alterando a estrutura aninhada A consulta a seguir converte dados da estrutura de arquivo com informações de banco para a estrutura aninhada usada em banco-1 <banco-1> for $c in /banco/cliente return <cliente> $c/* for $d in /banco/depositante[nome-cliente = $c/nome-cliente], $a in /banco/conta[número-conta=$d/número-conta] return $a </cliente> </banco-1> $c/* indica todos os filhos do nó aos quais $c está ligado, sem a tag delimitadora de nível superior Exercício para o leitor: escreva uma consulta aninhada para achar a soma dos saldos de conta, agrupados por agência. Korth • Silberschatz • Sundarshan * Sistema de Banco de Dados, 5/E Expressões de caminho da XQuery $c/text() indica o conteúdo de texto de um elemento sem quaisquer sub-elementos/tags Expressões de caminho da XQuery admitem o operador “–>” para desreferenciar IDREFs Equivalente à função id( ) da XPath, porém mais simples de usar Pode ser aplicado a um conjunto de IDREFs para obter um conjunto de resultados A versão de junho de 2001 do padrão mudou de “–>” para “=>” Korth • Silberschatz • Sundarshan * Sistema de Banco de Dados, 5/E Classificação em XQuery A cláusula sortby pode ser usada no final de qualquer expressão. Por exemplo: para retornar clientes classificados por nome for $c in /banco/cliente return <cliente> $c/* </cliente> sortby(name) Pode classificar em vários níveis de aninhamento (por nome-cliente e por número-conta dentro de cada cliente) <banco-1> for $c in /banco/cliente return <cliente> $c/* for $d in /banco/depositante[nome-cliente=$c/nome-cliente], $a in /banco/conta[número-conta=$d/número-conta] return <conta> $a/* </conta> sortby(número-conta) </cliente> sortby(nome-cliente) </banco-1> Korth • Silberschatz • Sundarshan * Sistema de Banco de Dados, 5/E Funções e outros recursos da XQuery Funções definidas pelo usuário com o sistema de tipo da XMLSchema function saldos(xsd:string $c) returns list(xsd:numeric) { for $d in /banco/depositante[nome-cliente = $c], $a in /banco/conta[número-conta=$d/número-conta] return $a/saldo } Tipos são opcionais para parâmetros de função e valores de retorno Quantificação universal e existencial em predicados de cláusula where some $e in caminho satisfies P every $e in caminho satisfies P XQuery também admite cláusulas If-then-else Korth • Silberschatz • Sundarshan * Sistema de Banco de Dados, 5/E Interface de programa de aplicação Existem duas interfaces de programa de aplicação padrão para dados XML: SAX (Simple API for XML) Baseada no modelo de parser, o usuário oferece manipuladores de evento para eventos de parsing Por exemplo, início de elemento, fim de elemento Não adequado para aplicações de banco de dados DOM (Document Object Model) Dados XML são analisados em uma representação de árvore Variedade de funções fornecida para atravessar a árvore DOM Por exemplo: Java DOM API oferece a classe Node com os métodos getParentNode( ), getFirstChild( ), getNextSibling( ) getAttribute( ), getData( ) (for text node) getElementsByTagName( ), … Também oferece funções para atualizar árvore DOM Korth • Silberschatz • Sundarshan * Sistema de Banco de Dados, 5/E Armazenamento de dados XML Dados XML podem ser armazenados em Depósitos de dados não relacionais Arquivos puros Natural para armazenar XML Mas tem todos os problemas discutidos no Capítulo 1 (sem concorrência, sem recuperação...) Banco de dados XML Banco de dados montado especificamente para armazenar dados XML, dando suporte ao modelo DOM e consulta declarativa Atualmente, nenhum sistema de classe comercial Bancos de dados relacionais Os dados precisam ser traduzidos para a forma relacional Vantagem: sistemas de banco de dados maduros Desvantagens: sobrecarga de tradução de dados e consultas Korth • Silberschatz • Sundarshan * Sistema de Banco de Dados, 5/E Armazenamento de XML em bancos de dados relacionais Alternativas: Representação de string Representação de árvore Mapa para relações Korth • Silberschatz • Sundarshan * Sistema de Banco de Dados, 5/E Representação de string Armazene cada elemento de nível superior como um campo de string de uma tupla em um banco de dados relacional Use uma única relação para armazenar todos os elementos, ou Use uma relação separada para cada tipo de elemento de nível superior Por exemplo: relações conta, cliente, depositante Cada uma com um atributo com valor de string para armazenar o elemento Indexação: Armazene valores de sub-elementos/atributos a serem indexados como campos extras da relação, e monte índices sobre esses campos Por exemplo: nome-cliente ou número-conta Oracle 9 admite índices de função, que usam o resultado de uma função como valor de chave. A função deve retornar o valor do sub-elemento/atributo exigido Korth • Silberschatz • Sundarshan * Sistema de Banco de Dados, 5/E Representação de string (cont.) Benefícios: Pode armazenar qualquer dado XML, mesmo sem uma DTD Desde que haja muitos elementos de nível superior em um documento, as strings são pequenas em comparação com o documento inteiro Permite acesso rápido a elementos individuais. Desvantagem: Precisa analisar strings para acessar valores dentro dos elementos A análise é lenta. Korth • Silberschatz • Sundarshan * Sistema de Banco de Dados, 5/E Representação em árvore Representação em árvore: modele os dados XML como árvore e armazene usando relações nós(id, tipo, label, valor) filho (id-filho, id-pai) Cada elemento/atributo recebe um identificador exclusivo Tipo indica elemento/atributo Label especifica o nome de tag do elemento/nome do atributo Valor é o valor de texto do elemento/atributo A relação filho observa os relacionamentos pai-filho na árvore Pode acrescentar um atributo extra a filho para registrar a classificação dos filhos Korth • Silberschatz • Sundarshan * Sistema de Banco de Dados, 5/E Representação em árvore (cont.) Benefício: Pode armazenar qualquer dado XML, mesmo sem DTD Desvantagens: Os dados são desmembrados em muitas partes, aumentando as sobrecargas de espaço Até mesmo consultas simples exigem uma grande quantidade de junções, o que pode ser lento Korth • Silberschatz • Sundarshan * Sistema de Banco de Dados, 5/E Mapeando dados XML para relações Mapeando para relações Se a DTD do documento for conhecida, pode mapear dados para relações Uma relação é criada para cada tipo de elemento Elementos (do tipo #PCDATA), e atributos são mapeados para atributos de relações Outros detalhes no próximo slide … Benefícios: Armazenamento eficiente Pode traduzir consultas XML para SQL, executar de forma eficiente, e depois traduzir resultados SQL de volta para XML Desvantagens: precisa conhecer DTD, sobrecargas de tradução ainda presentes Korth • Silberschatz • Sundarshan * Sistema de Banco de Dados, 5/E Mapeando dados XML para relações (cont.) Relação criada para cada tipo de elemento contém Um atributo id para armazenar uma id exclusiva para cada elemento Um atributo relation correspondente a cada atributo do elemento Um atributo parent-id para registrar o elemento pai Assim como na representação em árvore A informação de posição (iº filho) também pode ser armazenada Todos os sub-elementos que só ocorrem uma vez podem se tornar atributos de relação Para sub-elementos com valor de texto, armazene o texto como valor de atributo Para sub-elementos, pode armazenar id do sub-elemento Sub-elementos que podem ocorrer várias vezes representadas em uma tabela separada Semelhante ao tratamento de atributos com múltiplos valores quando converter diagramas ER para tabelas Korth • Silberschatz • Sundarshan * Sistema de Banco de Dados, 5/E Mapeando dados XML para relações (cont.) Por exemplo: Para a DTD banco-1 com elementos conta aninhados em elementos cliente, crie relações cliente(id, parent-id, nome-cliente, rua-cliente, cidade-cliente) parent-id pode ser descartado aqui, pois o pai é o único elemento raiz Todos os outros atributos foram sub-elementos do tipo #PCDATA, e ocorrem apenas uma vez conta (id, parent-id, número-conta, nome-agência, saldo) parent-id registra sob qual cliente ocorre uma conta A mesma conta pode ser representada muitas vezes com diferentes pais Banco de Dados I/Cap�tulo 11.ppt Korth • Silberschatz • Sundarshan * Sistema de Banco de Dados, 5/E Capítulo 11: Armazenamento e estrutura de arquivos Korth • Silberschatz • Sundarshan * Sistema de Banco de Dados, 5/E Armazenamento e estrutura de arquivos Visão geral dos meios de armazenamento físicos Discos magnéticos RAID Armazenamento terciário Acesso ao armazenamento Organização de arquivos Organização de registros em arquivos Armazenamento do dicionário de dados Estruturas de armazenamento para bancos de dados orientados a objeto Korth • Silberschatz • Sundarshan * Sistema de Banco de Dados, 5/E Classificação dos meios de armazenamento físicos Velocidade com que os dados podem ser acessados Custo por unidade de dados Confiabilidade perda de dados em falta de energia ou falha do sistema falha física do dispositivo de armazenamento Pode diferenciar o armazenamento em: armazenamento volátil: perde o conteúdo quando a emergia é desligada armazenamento não volátil: Conteúdo persiste mesmo quando a energia é desligada. Inclui armazenamento secundário e terciário, além de memória principal alimentada com bateria. Korth • Silberschatz • Sundarshan * Sistema de Banco de Dados, 5/E Meios de armazenamento físicos Cache – forma mais rápida e mais dispendiosa de armazenamento; volátil; controlado pelo hardware do sistema de computador. Memória principal: acesso rápido (décimos a centésimos de nanossegundos; 1 nanossegundo= 10–9 segundos) geralmente muito pequena (ou muito cara) para armazenar o banco de dados inteiro capacidades de até alguns gigabytes muito usadas atualmente Capacidades aumentaram e os custos por byte diminuíram constante e rapidamente (fator aproximado de 2 a cada 2 ou 3 anos) Volátil — conteúdo da memória principal normalmente é perdido se houver falta de energia ou falha do sistema. Korth • Silberschatz • Sundarshan * Sistema de Banco de Dados, 5/E Meios de armazenamento físicos (cont.) Memória flash Dados sobrevivem à falta de energia Dados podem ser escritos em um local apenas uma vez, mas o local pode ser apagado e escrito novamente Só pode aceitar uma quantidade limitada de ciclos de escrever/apagar A memória precisa ser apagada como um banco de memória inteiro As leituras são tão rápidas quanto a memória principal Mas as escritas são lentas (alguns microssegundos), e o apagamento é mais lento O custo por unidade de armazenamento é aproximadamente semelhante à memória principal Muito usada em dispositivos embutidos, como câmeras digitais Também conhecida como EEPROM (Electrically Erasable Programmable Read-Only Memory) Korth • Silberschatz • Sundarshan * Sistema de Banco de Dados, 5/E Meios de armazenamento físicos (cont.) Disco magnético Os dados são armazenados em disco giratório, e lidos/escritos magneticamente O meio principal para armazenamento de dados a longo prazo; normalmente, armazena banco de dados inteiro Os dados precisam ser movidos do disco para a memória principal para acesso, e escritos para armazenamento Acesso muito mais lento do que a memória principal (veja mais sobre isso adiante) acesso direto – possível ler dados no disco em qualquer ordem, diferente da fita magnética Discos rígidos versus disquetes Capacidades vão até cerca de 100GB atualmente Capacidade e custo/byte muito maior do que a memória principal/memória flash Crescendo constante e rapidamente com as melhorias da tecnologia (fator de 2 a 3 a cada 2 anos) Sobrevive a faltas de energia e falhas do sistema A falha de disco pode destruir dados, mas isso e muito raro Korth • Silberschatz • Sundarshan * Sistema de Banco de Dados, 5/E Meios de armazenamento físicos (cont.) Armazenamento óptico Não volátil, os dados são lidos opticamente de um disco giratório usando um laser CD-ROM (640 MB) e DVD (4,7 a 17 GB) são as formas mais populares Discos ópticos Write-One, Read-Many (WORM) usados para arquivamento (CD-R e DVD-R) Múltiplas versões escritas também disponíveis (CD-RW, DVD-RW e DVD-RAM) Leituras e escritas são mais lentas do que com disco magnético Sistemas de jukebox, com grandes quantidades de discos removíveis, algumas unidades e um mecanismo para carregamento/descarregamento automático de discos disponíveis para armazenar grandes volumes de dados Korth • Silberschatz • Sundarshan * Sistema de Banco de Dados, 5/E Meios de armazenamento físicos (cont.) Armazenamento de fita Não volátil, usado principalmente para backup (para recuperar-se de falha de disco), e para dados de arquivamento acesso seqüencial – muito mais lento que o disco capacidade muito alta (fitas de 40 a 300GB disponíveis) a fita pode ser removida da unidade custos de armazenamento muito menores que o disco, mas as unidades são caras jukeboxes de fita disponíveis para armazenar quantidades imensas de dados Centenas de terabytes (1 terabyte = 109 bytes) até um petabyte (1 petabyte = 1012 bytes) Korth • Silberschatz • Sundarshan * Sistema de Banco de Dados, 5/E Hierarquia de armazenamento Korth • Silberschatz • Sundarshan * Sistema de Banco de Dados, 5/E Hierarquia de armazenamento (cont.) armazenamento principal: Meio mais rápido, porém volátil (cache, memória principal). armazenamento secundário: próximo nível na hierarquia, não volátil, tempo de acesso moderadamente rápido também chamado armazenamento on-line Por exemplo: memória flash, discos magnéticos armazenamento terciário: nível mais baixo na hierarquia, não volátil, tempo de acesso lento também chamado armazenamento off-line Por exemplo: fita magnética, armazenamento óptico Korth • Silberschatz • Sundarshan * Sistema de Banco de Dados, 5/E Mecanismo de disco rígido magnético Korth • Silberschatz • Sundarshan * Sistema de Banco de Dados, 5/E Discos magnéticos Cabeça de leitura/escrita Posicionada muito próxima da superfície da placa (quase tocando nela) Lê ou escreve informações codificadas magneticamente. Superfície da placa dividida em trilhas circulares Mais de 16.000 trilhas por placa nos discos rígidos típicos Cada trilha é dividida em setores Um setor é a menor unidade de dados que pode ser lida ou escrita O tamanho do setor normalmente é de 512 bytes Setores por trilha típicos: 200 (nas trilhas internas) a 400 (nas trilhas externas) Parra ler/escrever um setor braço do disco move-se para posicionar a cabeça na trilha certa placa gira continuamente, dados são lidos/escritos enquanto o setor passa sob a cabeça Montagens de cabeça de disco várias placas de disco em um único eixo (normalmente, de 2 a 4) uma cabeça por placa, montada em um braço comum. Cilindro i consiste na iª trilha de todas as placas Korth • Silberschatz • Sundarshan * Sistema de Banco de Dados, 5/E Discos magnéticos (cont.) Discos da antiga geração eram suscetíveis a quebras de cabeça A superfície dos discos da antiga geração tinham coberturas de óxido metálico, que poderiam desintegrar nas quebras de cabeça e danificar todos os dados no disco Os discos da geração atual são menos suscetíveis a essas falhas desastrosas, embora os setores individuais possam ser adulterados Controladora de disco – interface entre o sistema de computador e o hardware da unidade de disco. aceita comandos de alto nível para ler ou escrever um setor inicia ações como mover o braço do disco para a trilha correta e realmente ler ou escrever os dados Calcula e acrescenta somas de verificação a cada setor para verificar se os dados são lidos corretamente de volta Se os dados estiverem adulterados, com uma probabilidade muito alta, a soma de verificação armazenada não combinará com a soma de verificação recalculada Garante a escrita bem sucedida lendo o setor de volta após sua escrita Realiza remapeamento de setores defeituosos Korth • Silberschatz • Sundarshan * Sistema de Banco de Dados, 5/E Subsistema de disco Vários discos conectados a um sistema de computador por meio de uma controladora Funcionalidade das controladoras (soma de verificação, remapeamento de setor defeituoso) normalmente executada por discos individuais; reduz o trabalho do controlador Famílias de padrões de interface de disco Padrões ATA (AT Adaptor) Padrões SCSI (Small Computer System Interconnect) Diversas variantes de cada padrão (diferentes velocidades e capacidades) Korth • Silberschatz • Sundarshan * Sistema de Banco de Dados, 5/E Medidas de desempenho dos discos Tempo de acesso – o tempo gasto desde quando uma solicitação de leitura ou escrita é emitida até quando a transferência é iniciada. Consiste em: Tempo de busca – tempo gasto para reposicionar o braço sobre a trilha correta. O tempo de busca médio é 1/2 do tempo de busca no pior caso. Seria 1/3 se todas as trilhas tivessem o mesmo número de setores, e ignorássemos o tempo para iniciar e parar o movimento
Compartilhar