Armazenamento de Dados
e Indexação
Armazenamento
Introdução
●
Dados: O que é?
– Qualquer coisa contendo informação
● Enciclopédia
● Fita cassete
● Cartas
Introdução
●
Dados: O que é?
– Tudo que um computador processa ou é capaz de processar
● E-mails
● Arquivos texto
● Fotos digitais
● Base de dados
Armazenamento de Dados
●
Informação estruturada em uma forma que pode ser armazenada, e consequentemente, utilizada
– Armazenamento Primário
– Armazenamento Secundário
Armazenamento Primário
●
Principal dispositivo
●
Corrente elétrica
●
Alta velocidade
●
Acesso direto por CPUs
– Barramento de memória
Armazenamento Secundário
●
Armazenamento magnético
●
Mantém dados até que sejam apagados
●
Não são diretamente conetados à CPU
●
Não são tão rápidos
Armazenamento de Base de Dados
●
Crescente aumento de armazenamento
– Dobra a cada 2-3 anos
●
Aumento de custo
– Elementos mais caros
●
Queda no desempenho
– Muitos dados
Orçamento vs Desempenho
Armazenamento de Base de Dados
●
Empresas possuem DB gigantes
– Muitos dados poucos acessados
– Outros sempre utilizados
●
Manter qualidade de acesso para todos os dados
– Muito custoso
– Ineficiente
– Arquiteturalmente impossível
Armazenamento de Base de Dados
●
STORAGE TIERING (ST)
– Dividir dados em blocos/camadas
– Dados “frios” são movidos
● Retirados dos blocos mais custosos e rápidos
● Continuam disponíveis
● Acesso mais lento
● Baixa velocidade de acesso
Armazenamento de Base de Dados
●
STORAGE TIERING (ST)
– Efeito mínimo do desempenho
● Dados “frios” são raramente acessados
● Dados “frios” também são comprimidos
– Information Lifecycle Management (ILM)
● Classifica os dados e estabelece políticas de migração de dados em um TIER apropriado
● ILM inclui todas as fases de um registro, desde o início até o fim
STORAGE TIERING (ST)
Armazenamento de Base de Dados
●
STORAGE TIERING
– Diferentes porções de dados são atribuídos à diferentes TIERS baseado em:
● Demanda
● Custo
● Desempenho
● Disponibilidade
● Segurança
Armazenamento de Base de Dados
●
COMPRESSION TEARING (CT)
– Usada além de ST
– Dados “frios” são comprimidos:
● Ganho de espaço
● Perca de desempenho
– IML:
Super Ativo → Ativo → Pouco Ativo → Histórico
Armazenamento de Base de Dados
●
TIERING
– Mesmo com ST e CT é um grande desafio decidir qual aonde e quando um conjunto de dados deve se manter ou migrar para outro TIER
– Métodos:
● Heat Map
● Automatic Data Optimization
Armazenamento de Base de Dados
●
HEAT MAP (HM)
– Otimiza a organização dos dados
– Forma que dados estão sendo acessados
– Informa como os padrões de acesso mudam com o tempo
– Utilização feita por PL/SQL
Armazenamento de Base de Dados
●
HEAT MAP (HM)
Armazenamento de Base de Dados
●
Automatic Data Optimization (ADO)
– Usuário cria políticas para compressão e deslocamento de dados – SmartCompression
– SmartCompression
● Utiliza HM para determinar momento de execução de uma operação
● ADOs criadas, avaliadas e executadas a qualquer momento por um DBA
– Políticas ADOs especificam condições para inicializar uma Operação ADO
Armazenamento de Base de Dados
●
Automatic Data Optimization (ADO)
– Reduz espaço utilizado por dados antigos
– Aumenta o desempenho de Queries
Armazenamento de Base de Dados
●
Automatic Data Optimization (ADO)
– Exemplo 1
ALTER TABLE orders ILM ADD POLICY
ROW STORE COMPRESS ADVANCED SEGMENT AFTER 30 DAYS OF NO MODIFICATION;
– Um segmento é um conjunto de extensões que contém todos os dados para uma estrutura de armazenamento lógico específico dentro de uma tabela.
Armazenamento de Base de Dados
●
Automatic Data Optimization (ADO)
– Exemplo 2
ALTER TABLE orders ILM ADD POLICY
ROW STORE COMPRESS ADVANCED ROW AFTER 3 DAYS OF NO MODIFICATION;
Armazenamento de Base de Dados
●
Automatic Data Optimization (ADO)
– Exemplo 3
ALTER TABLE orders ILM ADD POLICY tier to low_cost_store;
Indexação
Conceito
●
Um índice é uma estrutura de dados que associa
uma determinada propriedade de um registro(chave de pesquisa) à sua localização.
●
Dessa forma a indexação permite encontrar e acessar um registro mais rapidamente.
●
Índices podem ser densos ou esparsos.
Estruturas de índices
●
Índice primário;
●
Índice de agrupamento (clustering);
●
Índice secundário;
●
Índices multiníveis;
●
Arvores B e B+;
●
Tabelas Hash;
Tabela Hash
●
Hashing é uma forma de indexação de dados onde o índice é gerado à partir da chave de cada registro, utilizando uma função.
●
Os possíveis índices são inicialmente fixos.
●
A função hash deve distribuir as chaves o mais
uniformemente possível nos índices.
Tabela Hash
●
O algoritmo deve tratar colisões de chaves em um mesmo índice.
●
Os registros podem ser armazenados em:
– Vetor simples
– Vetor de listas
– Vetor de Buckets
Tabela Hash
●
Tabelas Hash podem ser estáticas ou dinâmicas.
●
É rápido para busca, inserção e remoção, desde que hajam muitas colisões.
●
Pode usar espaço desnecessário.
Tabela Hash
Árvore B
●
Consegue armazenar índice e dados na mesma estrutura (mesmo arquivo físico)
●
Características de uma árvore B de ordem d
– A raiz é uma folha ou tem no mínimo 2 filhos
– Cada nó interno (não folha e não raiz) possui no mínimo d + 1 filhos
– Cada nó tem no máximo 2d + 1 filhos
– Todas as folhas estão no mesmo nível
●
Um nó de uma árvore B é também chamado de página
●
Uma página armazena diversos nós da tabela
Árvore B+
●
É semelhante a árvore B, exceto por duas características muito importantes:
– Armazena dados somente nas folhas – os nós internos servem apenas de ponteiros
– As folhas são encadeadas
●
Isso permite o armazenamento dos dados em um arquivo, e do índice em outro arquivo separado
●
Árvore B+ na prática
Referências
●
Automatic Data Optimiization with Oracle Database 12c
– August, 2013
– Author: Kevin Jernigan
– Contributing Authors:
– Gregg Christman, Cris Pedregal
Referências
●
Slides Módulo V: Indexação em Banco de Dados
● http://www.inf.unioeste.br/~clodis/BDI/BDI_2007_Modulo5_1.pdf
●
Hash-Based Indexes Chapter 10
●
Database Management Systems 3ed
●