Administração e Optimização de BDs



Documentos relacionados
INSTITUTO SUPERIOR TÉCNICO Administração e Optimização de Bases de Dados

Consistem num conjunto de apontadores para instâncias especificas de cada relação.

Bases de Dados. Lab 1: Introdução ao ambiente

Bases de Dados. O ficheiro create-bank.sql contém um conjunto de instruções SQL para criar a base de dados de exemplo ilustrada na figura 1.

PostgreSQL Performance

Bases de Dados 2007/2008 Exame

Estruturas de Armazenamento e Indexação. Rafael Lage Moreira Barbosa

EXAME DE 1ª ÉPOCA Semestre de Verão 2004/ Junho 2005 duração: 2h30m

Bases de Dados. Lab 1: Introdução ao ambiente. Figura 1. Base de dados de exemplo

Bases de Dados 2008/2009

Bases de Dados 1º semestre

Tarefa Orientada 12 Junção Externa, Auto-Junção e União

Instituto Politécnico de Beja Escola Superior de Tecnologia e Gestão. GesStock. Engenharia Informática. Base de Dados II

INSTITUTO SUPERIOR TÉCNICO Administração e Optimização de Bases de Dados

Disciplina de Banco de Dados Parte V

Bases de Dados 2007/2008 Exame

DEPARTAMENTO DE ENGENHARIA INFORMÁTICA FACULDADE DE CIÊNCIAS E TECNOLOGIA DA UNIVERSIDADE DE COIMBRA

Bases de Dados. Parte IX: Organização Física dos Dados

Tarefa Orientada 16 Vistas

Hugo Pedro Proença, 2007

Bases de Dados 1º semestre

ESTRUTURA DE SERVER Lílian Simão Oliveira

Programador/a de Informática

Banco de Dados. Arquitetura e Terminologia. Prof. Walteno Martins Parreira Jr waltenomartins@yahoo.

Banco de Dados Profa. Dra. Cristina Dutra de Aguiar Ciferri. Banco de Dados Processamento e Otimização de Consultas

Junções e Índices em Tabelas

SQL Linguagem de Definição de Dados. Banco de Dados Profa. Dra. Cristina Dutra de Aguiar Ciferri

Prof. Daniela Barreiro Claro

Banco de Dados I Módulo V: Indexação em Banco de Dados. (Aulas 4) Clodis Boscarioli

BASES DE DADOS I LTSI/2. Universidade da Beira Interior, Departamento de Informática Hugo Pedro Proença, 2010/2011

Tarefa Orientada 19 Triggers

A VISTA BACKSTAGE PRINCIPAIS OPÇÕES NO ECRÃ DE ACESSO

Partitioning Partitioning table App. Partitioning SQL Server Partitioning Vantagens Partitioning Exemplo Passos a dar

Ex.: INSERT INTO tmpautor (CDAUTOR, NMAUTOR) VALUES (1, Renato Araújo )

Informática para Ciências e Engenharias 2012/13. Teórica 10

Arquitetura de SGBD Relacionais Previsão de Seletividade

Roteiro 9 - SQL Básico: chave estrangeira, operadores de comparação e operadores booleanos

Structured Query Language (SQL)

Guia de Consulta. Percorrer

Unidade 5 Armazenamento e Indexação

Busca. Pesquisa sequencial

Bases de Dados 2005/2006. Aula 5

MANUAL DO UTILIZADOR

PHP INTEGRAÇÃO COM MYSQL PARTE 1

Bases de Dados 2007/2008. Aula 9

Tarefa Orientada 11 Junção Interna

Principais Comandos SQL Usados no MySql

8. Outros tipos de Transação (Modo de Transação de Autoconfirmação e Modo Implícito)

Bases de Dados II Engª. Informática + Ensino Informática

Instalação do Sistema Operativo Windows XP

Pesquisa em Memória Primária. Prof. Jonas Potros

Processamento e Otimização de Consultas

Chaves. Chaves. O modelo relacional implementa dois conhecidos conceitos de chaves, como veremos a seguir:

Faculdade Pitágoras 16/08/2011. Curso Superior de Tecnologia: Banco de Dados Sistemas para Internet

- A crescente necessidade de sistemas inteligentes e de aquisição de conhecimento levaram à necessidade de implementação de Data Warehouses.

Persistência de Classe e Auto- Relacionamento em Tabelas de Banco de Dados

Programação SQL. Manipulação de Dados. DML Data Manipulation Language

Universidade Federal de Santa Maria Curso de Arquivologia. Disciplina de Banco de Dados Aplicados à Arquivística. Versao 1.

Desenvolvimento de uma base de dados. Relação. Modelo lógico: SGBD relacional

Memória de aula Semanas 15 e 16

EXCEL. Listas como Bases de Dados

Linguagem SQL Parte I

Banco de Dados. Maurício Edgar Stivanello

Disciplina de Banco de Dados Introdução

Guia de Estudo Folha de Cálculo Microsoft Excel

Tarefa Orientada 13 Agrupamento e sumário de dados

BD Oracle. Licenciatura em Engenharia Informática e Computação. Bases de Dados 2003/04

BANCO DE DADOS BANCO DE DADOS. Prof. Patrícia Lucas 3º Trimestre

NOME SEXO CPF NASCIMENTO SALARIO

SISTEMAS DE ARQUIVOS Sistemas operacionais

TRANSAÇÕES. Considerando que estes comandos fazem parte de uma TRANSAÇÃO (veremos como indicar isso):

SQL comando SELECT. SELECT [DISTINCT] <campos> FROM <tabela> [condição] [ ; ] Paulo Damico - MDK Informática Ltda.

Modelo de Dados. Modelos Conceituais

Faculdade Pitágoras. Curso Superior de Tecnologia: Banco de Dados. Disciplina: Banco de Dados Prof.: Fernando Hadad Zaidan SQL

Comandos DDL. id_modulo = id_m odulo

Esquema da Relação. Modelo Relacional. Instância da Relação. Exemplo. Uma base de dados é uma colecção de uma ou mais relações com nomes distintos

Definida pelo American National Standard Institute (ANSI) em 1986

INNER, CROSS, LEFT, RIGHT E FULL JOINS SIMPLES ASSIM! Wellyngton Luiz Cruz Moreira wlcmoreira@hotmail.com

Introdução à Engenharia da Computação. Banco de Dados Professor Machado

Faculdade Lourenço Filho - ENADE

AULA 5 Sistemas Operacionais

Organização Física. ... Header registo Base de Dados. Table Space. Página. Data Page. registo. Header Página...

Prof.: Clayton Maciel Costa

Engenharia de Software e Sistemas Distribuídos. Enunciado Geral do Projecto

EAD Árvore árvore binária

EXCEL TABELAS DINÂMICAS

Sistemas de Bases de Dados

Modelo de Dados Relacional Restrições de um Banco de Dados Relacional

Integridade dos Dados

Tarefa Orientada 15 Manipulação de dados

Programação SQL. Introdução

SQL Linguagem de Manipulação de Dados. Banco de Dados Profa. Dra. Cristina Dutra de Aguiar Ciferri

f. Vocês podem selecionar todos os campos indicando-os, ou seja, sem usar * (boa prática) g. Muito relevante na manutenção de BD e de aplicações.

Transcrição:

Departamento de Engenharia Informática 2010/2011 Administração e Optimização de BDs Mini-Projecto 1 2º semestre A resolução deve ser claramente identificada com o número de grupo e entregue sob a forma de um relatório impresso, seguindo o template dado na página da cadeira. Deve ainda ser feita uma entrega electrónica do mesmo relatório (em formato PDF). 1. Considerando o SGBD relacional SQL Server 2008, responda às seguintes questões: a. Indique qual o comando T-SQL que permite criar uma base de dados (BD) com o seguinte conjunto de características: A BD deve chamar-se BaseDeDadosAOBD e deve conter um ficheiro de log e cinco ficheiros de dados em três filegroups diferentes (i.e., dois ficheiros de dados no filegroup primário, dois ficheiros de dados num filegroup secundário, e um ficheiro de dados num segundo filegroup secundário). O ficheiro de log deve ter um tamanho inicial de 25MB e um tamanho máximo de 350MB, enquanto que os ficheiros de dados devem ter um tamanho máximo ilimitado. O ficheiro de dados no segundo filegroup secundário deve ter um tamanho inicial de 50MB, e os restantes devem ter um tamanho inicial de 180MB. Todos os ficheiros devem crescer a uma taxa de 20%, exceptuando-se o ficheiro de dados no segundo filegroup secundário que deve crescer em 51200KB, sempre que necessário. b. Ao criar uma tabela de nome TabelaNaBaseDeDadosAOBD na base de dados BaseDeDadosAOBD, seria possível associar explicitamente o armazenamento da tabela TabelaNaBaseDeDadosAOBD a um dos ficheiros de dados que formam a base de dados? Justifique a sua resposta. c. Seria possível efectuar a criação da base de dados BaseDeDadosAOBD sem a indicação de um ficheiro de log? Justifique a sua resposta. d. Indique uma potêncial vantagem (i.e., uma situação em que existisse um claro benefício na utilização) para cada uma das seguintes situações: i. Existência de uma base de dados no SQL Server 2008 com vários ficheiros de dados dentro de um único filegroup. ii. Existência de uma base de dados no SQL Server 2008 com vários filegroups distíntos. 2. Considerando a base de dados da alínea anterior, responda às seguintes questões: a. Qual o comando T-SQL para criar uma tabela sobre a base de dados BaseDeDadosAOBD, considerando as características: IST/DEI Pág. 1 de 11

A tabela deverá chamar-se TabelaNaBaseDeDadosAOBD, tendo um atributo alfanumérico com um tamanho máximo de 10 caracteres e o nome IdentificadorAlfanumérico, um atributo alfanumérico de nome Dados com um tamanho máximo de 50 caracteres, e um atributo de nome CodigoAuxiliar correspondente a um valor numérico que assume valores únicos na relação (i.e., permite identificar cada tuplo da relação). A tabela deve ser particionada por forma a que todos os tuplos cujo CodigoAuxiliar seja superior a 500 e inferior a 5000 fiquem no segundo filegroup, os tuplos cujo CodigoAuxiliar seja superior a 50 e inferior a 500 fiquem no terçeiro filegroup, e todos os restantes tuplos fiquem no filegroup primário. b. Indique se o SQL Server 2008 iria construir automáticamente algum índice sobre a tabela TabelaNaBaseDeDadosAOBD desta pergunta. Em caso afirmativo, indique o tipo do índice, indique se o mesmo seria clustered ou non-clustered, e indique se o mesmo poderia ser esparso, justificando a sua resposta. Em caso afirmativo, indique ainda qual a razão de fundo que levaria o sistema a executar esta operação sem intervenção explícita do utilizador. c. Indique uma vantagem em ter a tabela TabelaNaBaseDeDadosAOBD particionada da forma descrita na primeira alínea deste exercício. Exemplifique a vantagem através de um cenário concreto envolvendo diferentes dispositivos de armazenamento (e.g., discos rígidos SCSI e IDE). 3. Considere que na tabela da pergunta anterior poderia existir um índice do tipo B+Tree sobre o atríbuto alfanumérico de nome Dados. a. Indique um comando T-SQL para criar um índice B+Tree sobre o atríbuto de nome Dados, considerando que o índice deve incluir também o atributo IdentificadorAlfanumérico, embora este não faça parte da chave de pesquisa. b. Considere que a estrutura de dados do tipo B+Tree da alínea anterior usaria um número máximo de 3 apontadores em cada bucket, e que os valores se encontram ordenados alfabeticamente. Mostre a estrutura da árvore B+Tree resultante da inserção sequencial de cada um dos seguintes valores: D, F, C, E, F, A, B. Desenhe claramente a árvore resultante de cada passo de inserção. No contexto desta pergunta, pode ignorar os valores do atributo IdentificadorAlfanumérico. c. Sobre o resultado da alínea anterior, mostre qual a árvore resultante após a remoção sequencial de cada um dos seguintes valores: D, E, C, B, F, E, A. Desenhe a árvore resultante de cada passo de remoção. d. Sobre a árvore resultante da alínea b), indique os passos envolvidos no algoritmo de pesquisa sobre a árvore B+Tree para as seguintes duas situações: i. Encontrar os registos com uma chave de pesquisa com o valor F. IST/DEI Pág. 2 de 11

ii. Encontrar os registos com chaves de pesquisa tomando valores entre A e C, inclusive. 4. Considere uma estrutura de dados do tipo extendable hash onde cada bucket armazena 2 registos. Considere ainda os seguintes registos e a chaves de hash que lhes correspondem: Primeiro 0000 Segundo 1001 Terceiro 0010 Quarto 0100 Quinto 1011 Sexto 0110 Sétimo 1000 Indique qual a estrutura obtida após a inserção sequencial de cada um dos valores acima, em cada um dos passos. Assuma que a ordem para a qual devem considerar os bits das chaves de hash é do bit menos significativo (direita) para o bit mais significativo (esquerda). 5. Considere uma base de dados no sistema SQL Server 2008, por exemplo a base de dados Adventure Works usada como demonstrador do sistema. a. Dê um exemplo de uma interrogação T-SQL onde a existência de um índice B+Tree, criado com a opção INCLUDE (i.e., um covering index) e com uma ordenação específica das chaves de pesquisa, poderia trazer benefícios. Indique qual o esquema das relações envolvidas e justifique o porquê da sua escolha, apresentando também uma instrução T-SQL para criar o índice. b. Dê um exemplo de uma interrogação T-SQL onde, caso o SQL Server 2008 tivesse suporte para tal, seria mais útil um índice do tipo hash do que um índice do tipo B+Tree. Indique qual o esquema das relações envolvidas e justifique o porquê da sua escolha. c. Dê um exemplo de uma interrogação T-SQL onde a utilização de um índice bitmap poderia trazer benifícios. Indique qual o esquema das relações envolvidas e quais os valores que os atributos envolvidos podem tomar. Justifique a sua escolha. IST/DEI Pág. 3 de 11

Abaixo encontram-se as resoluções para os problemas propostos no Mini-Projecto 1. Resolução do Problema 1 Pergunta 1.A CREATE DATABASE BaseDeDadosAOBD ON PRIMARY (NAME = BaseDeDadosAOBD_Primary_1, FILENAME=BaseDeDadosAOBD_Primary_F1.mdf, size=180mb, FILEGROWTH=20%), (NAME = BaseDeDadosAOBD_Primary_2, FILENAME = BaseDeDadosAOBD_Primary_F2.mdf, size = 180MB, FILEGROWTH = 20%), FILEGROUP SECONDARY_FIRST (NAME = BaseDeDadosAOBD_Secondary_1_F1, FILENAME=BaseDeDadosAOBD_Secondary_1_F1.ndf, size=180mb, FILEGROWTH=20%), (NAME = BaseDeDadosAOBD_Secondary_1_F2, FILENAME=BaseDeDadosAOBD_Secondary_1_F2.ndf, size=180mb, FILEGROWTH=20%), FILEGROUP SECONDARY_SECOND (NAME = BaseDeDadosAOBD_Secondary_2_F1, FILENAME=BaseDeDadosAOBD_Secondary_2_F1.ndf, size=50mb, FILEGROWTH=51200KB), LOG ON (NAME = BaseDeDadosAOBD_Log, FILENAME=BaseDeDadosAOBD_Log.ldf, size=25mb, MAXSIZE=350MB, FILEGROWTH=20%); Pergunta 1.B Não seria possível associar explicitamente o armazenamento da tabela TabelaNaBaseDeDadosAOBD a um dos ficheiros de dados, dado que o SQL Server 2008 apenas permite que os utilizadores associem explicitamente tabelas, índices ou partições de tabelas/índices a filegroups existentes. Pergunta 1.C Não seria possível criar a base de dados sem pelo menos um ficheiro correspondente ao log transaccional, dado que esta informação è fundamental à realização das operações de recuperação associadas ao rollback de transacções e à recuperação de falhas. Pergunta 1.D No primeiro caso, i.e. vários ficheiros num único filegroup, o sistema pode particionar os dados por vários ficheiros, podendo-se desta forma ter base de dados maiores do que o tamanho disponível num único disco rígido e podendo o sistema realizar leituras/escritas em paralelo. No segundo caso, i.e. vários ficheiros em vários filegroups, temos todas as vantagens associadas ao primeiro caso, podendo ainda os utilizadores associar partições específicas dos dados a filegroups distintos, optimizando desta forma o armazenamento dos dados de acordo com os padrões de utilização associados aos mesmos (e.g., colocando informação frequentemente acedida em dispositivos de armazenamento mais rápidos). IST/DEI Pág. 4 de 11

Resolução do Problema 2 Pergunta 2.A USE BaseDeDadosAOBD; CREATE PARTITION FUNCTION BaseDeDadosAOBD_Range1(INT) AS RANGE LEFT FOR VALUES (50,500,5000); CREATE PARTITION SCHEME BaseDeDadosAOBD_PartScheme1 AS PARTITION BaseDeDadosAOBD_Range1 TO ([PRIMARY], SECONDARY_SECOND,SECONDARY_FIRST,[PRIMARY]); CREATE TABLE TabelaNaBaseDeDadosAOBD ( IdentificadorAlfanumérico VARCHAR(10), Dados VARCHAR(50), CodigoAuxiliar INT NOT NULL UNIQUE) ON BaseDeDadosAOBD_PartScheme1(CodigoAuxiliar); Pergunta 2.B O atributo CodigoAuxiliar foi definido como a única chave candidata (i.e., um atríbuto UNIQUE e a relação não tem uma chave primária) e, como tal, o SQL Server 2008 cria um índice primário (i.e., clustered) automáticamente sobre este atributo. A razão pela qual o sistema cria automáticamente este índice relacionase com o facto dos atributos chave serem frequentemente utilizados em várias operações de selecção, inclusívem em joins entre tabelas. Estes índices podem portanto optimizar significativamente o desempenho da base de dados. O índice poderia ser esparso, uma vez que é clustered (i.e., os tuplos da relação seguem a mesma ordem da chave de pesquisa do índice, e como tal não é estritamente necessário armazenar todas as chaves de pesquisa do índice). Pergunta 2.C Podemos utilizar as partições por intervalos de valores por forma a associar explicitamente as partições dos dados a filegroups, consoante os seus padrões de acesso. Por exemplo, o intervalo de valores correspondendo aos tuplos mais acedidos pode ser associado a um filegroup em que os ficheiros estejam colocados num dispositivo de armazenamento mais rápido, enquanto que os restantes intervalos de valores, eventualmente correspondendo a um número de tuplos maior e com um número de acessos mais reduzido, pode ser colocado num filegroup em que os ficheiros sejam maiores e se encontrem colocados em dispositivos de armazenamento diferentes, eventualmente mais lentos mas também mais baratos ou mais fiáveis. IST/DEI Pág. 5 de 11

Resolução do Problema 3 Pergunta 3.A USE BaseDeDadosAOBD; CREATE INDEX dados_index ON TabelaNaBaseDeDadosAOBD(Dados) INCLUDE(IdentificadorAlfanumérico) ON BaseDeDadosAOBD_PartScheme1 (Dados)); Pergunta 3.B Nota: As árvores B+ não suportam directamente o armazenamento de elementos repetidos, sendo necessária a realização de alterações nos algoritmos de inserção e remoção de valores. Soluções comuns para o armazenamento de valores duplicados em árvores B+ envolvem o uso de um mecanismo externo de resolução das colisões, por exemplo através de uma lista de valores ligados associada às folhas da árvore B+. Na resolução apresentada para este exercício não se tratar a inserção de elementos duplicados. IST/DEI Pág. 6 de 11

Pergunta 3.C IST/DEI Pág. 7 de 11

Pergunta 3.D.i Começar na raiz da árvore B+ e percorrer o nó raiz até se encontrar um valor maior que F. Como esse valor não existe, segue-se o ponteiro correspondente a nós >= E. Repete-se o processo de pesquisa em cada nó intermédio da árvore B+ até chegarmos aos nós folha. Ao chegarmos a um nó folha, inicia-se uma pesquisa sequencial até se encontrar o valor F, terminando nesse caso ou ao encontrar o primeiro valor >F. Pergunta 3.D.ii Começar na raiz da árvore percorrer o nó raiz até se encontrar um valor maior que A. Como na raiz só existe o valor E, e sendo este maior que A, segue-se o ponteiro correspondente a nós < E. Repete-se o processo de pesquisa em cada nó intermédio da árvore B+ até chegarmos aos nós folha. Ao chegarmos a um nó folha inicia-se uma pesquisa sequencial até se encontrar o primeiro valor >= A. De seguida, pesquisa-se sequencialmente os valores seguintes nos nós folha da árvore B+, até se encontrar um valor > C, retornando neste caso os valores A, B e C. IST/DEI Pág. 8 de 11

Resolução do Problema 4 IST/DEI Pág. 9 de 11

Resolução do Problema 5 Pergunta 5.A SELECT EmployeeID, AddressID FROM HumanResources.EmployeeAddress WHERE EmployeeID>10 and EmployeeID<12; CREATE INDEX index1 ON HumanResources.EmployeeAddress (EmployeeID ASC) INCLUDE (AddressID); Como a interrogação possui um intervalo na condição de pesquisa, e como a condição de pesquisa é muito selectiva, sería útil ter um índice B+Tree. Como além do atributo envolvido na chave de pesquisa a querie envolve também um segundo atributo, e como o número de atributos na relação é elevado, seria útil incluir esse segundo atributo na chave de pesquisa do índice. IST/DEI Pág. 10 de 11

Pergunta 5.B SELECT EmployeeID FROM HumanResources.EmployeeAddress WHERE EmployeeID=10; Como a interrogação possui um pesquisa por igualdade sobre um atríbuto chave, numa relação com muitos tuplos, seria sería útil ter um índice Hash. Pergunta 5.C SELECT EmployeeID FROM HumanResources.Employee WHERE SalariedFlag=0 and Gender='F' and MaritalStatus='S'; A querie envolve selecções sobre um conjunto de atributos que pode assumir um número de valores muito reduzido, tendo-se que a criação online de um índice bitmap poderia ajudar na filtragem dos resultados. IST/DEI Pág. 11 de 11