Organização dos Dados e Índices - Aula 04/11 - Bancos de Dados 2020.2

Organização dos Dados e Índices - Aula 04/11 - Bancos de Dados 2020.2

Como os Bancos de Dados Organizam e Indexam Dados?

Introdução ao Tema

  • André introduz o tema do vídeo, que é a organização e indexação de dados em bancos de dados, dando continuidade a um vídeo anterior sobre armazenamento.
  • O foco principal será nos bancos de dados relacionais, que são os mais populares e eficientes para grandes volumes de dados.

Conceitos Fundamentais

  • Definições importantes:
  • Arquivo: referência a uma porção de dados no disco.
  • Registro: segmentação dos elementos dentro do arquivo.
  • A estrutura lógica do banco de dados (como tabelas) não se alinha diretamente com os arquivos físicos no disco.

Organização dos Dados em Tabelas

  • A discussão se concentra em como os registros das tabelas são armazenados no disco, ignorando inicialmente a ideia de arquivo.
  • Cada tupla da tabela é considerada um registro. A forma como esses registros são organizados impacta na recuperação dos dados.

Importância da Ordem na Armazenagem

  • A ordem em que os registros são guardados influencia diretamente na eficiência da recuperação.
  • Exemplo prático: se registros estão espalhados pelo disco, o banco precisa "andar" para recuperá-los, tornando o processo mais lento.

Exemplos Práticos de Armazenamento Sequencial

  • Uma tabela exemplo mostra registros ordenados sequencialmente por ID. Essa gravação sequencial facilita a recuperação eficiente.

Estruturas de Armazenamento e Ordenação de Dados

Conceito de Arquivo Hip

  • O arquivo Hip é caracterizado pela ausência de uma ordenação lógica nos registros, onde a ordem de gravação não possui relevância para o acesso ou organização dos dados.
  • A definição do arquivo Hip implica que os registros são armazenados sem qualquer referência a uma sequência significativa, sendo considerados aleatórios.

Estratégias de Ordenação

  • É possível ter diferentes tipos de ordenação além da sequencial; a escolha da estratégia depende do contexto e das necessidades específicas do sistema.
  • A ordenação RESH permite que espaços vazios sejam mantidos no disco, utilizando uma função hash para determinar a posição dos registros.

Função Hash (RESH)

  • A proposta é criar uma função hash baseada em um identificador (ID), onde se calcula a posição na qual o registro deve ser gravado.
  • Um exemplo simples de função hash: somar os dígitos numéricos do ID para determinar sua posição. Por exemplo, para o ID 2223, a soma seria 7.

Colisões e Alocação

  • Ao usar funções hash, podem ocorrer colisões (quando dois registros tentam ocupar a mesma posição). Isso será abordado em discussões futuras sobre RESH.
  • Sistemas que utilizam RESH frequentemente pré-alocam blocos com registros vazios para facilitar o armazenamento eficiente à medida que novos dados são gravados.

Índices e Eficiência no Acesso

  • Existem três possibilidades principais para gravar registros fisicamente: RIPH (sem ordenação), sequencial e RESH. Cada método tem suas vantagens em termos de eficiência no acesso aos dados.
  • O índice serve como uma estrutura auxiliar que aponta onde os dados estão armazenados no disco, facilitando buscas rápidas sem necessidade de percorrer todos os registros.

Organização do Índice

  • As entradas do índice podem ser organizadas por características específicas dos dados. Exemplos incluem chaves primárias ou listas encadeadas.
  • Sem um índice adequado, seria necessário ler todos os registros associados até encontrar as informações desejadas, tornando o processo ineficiente.

Armazenamento e Indexação em Bancos de Dados

Estrutura de Índices

  • A entrada do índice é composta por uma chave (kr) e um ponteiro que indica a posição no arquivo de dados.
  • O índice pode apontar para registros em diferentes ordens, permitindo acesso eficiente aos dados. A chave primária deve ser única.
  • Cada entrada no índice contém a chave, resultando em redundância na estrutura, mas possibilitando múltiplos registros associados à mesma chave.

Tipos de Índices

  • Um índice pode ter uma lista de registros que correspondem a uma chave específica, como no caso de espécies animais.
  • É possível ter mais de um índice para o mesmo arquivo, dependendo da ordenação desejada dos dados.
  • A ordem do arquivo está relacionada ao índice; isso permite localizar rapidamente os registros desejados.

Redundância e Consistência

  • A introdução da redundância através da cópia da chave para o índice impacta a consistência dos dados.
  • É importante distinguir entre índices primários (de agrupamento), onde a ordem do arquivo é definida pela chave, e índices secundários.

Exemplos Práticos

  • Um exemplo prático é um arquivo sequencial onde os registros estão ordenados por ID. Isso ilustra como um índice primário organiza os dados eficientemente.
  • Um índice secundário não possui relação direta com a ordem dos dados no arquivo, sendo mais flexível na busca.

Tipos de Índice: Denso vs. Esparso

  • O conceito de "índice denso" refere-se à presença de uma entrada para cada valor da chave; já o "índice esparso" tem entradas para múltiplos valores da mesma chave.
  • Em bancos de dados relacionais, cada registro tem uma entrada correspondente no índice, facilitando consultas eficientes.

O que é um índice espaço?

Conceitos de Índice e Estruturas de Dados

  • O conceito de índice espaço é introduzido, onde uma chave pode ter múltiplas entradas no índice para a mesma entrada.
  • A diferença entre índices densos e esparsos é discutida; o denso possui uma entrada para cada valor possível da chave, enquanto o esparso tem entradas apenas para chaves únicas.
  • É questionado sobre o número máximo de índices primários e secundários em uma relação com cinco atributos, encerrando a explicação sobre estrutura de arquivo e índices.

Gravação Sequencial e Organização dos Dados

Estrutura da Tabela Exemplo

  • Uma tabela exemplo com registros de animais pré-históricos é apresentada, destacando que o número do catálogo é único, enquanto a espécie não é.
  • A gravação sequencial dos dados no disco é explicada; os registros são armazenados em ordem crescente pelo ID.
  • A importância da manutenção da ordem na gravação dos arquivos é discutida, mencionando as dificuldades ao inserir novos registros.

Tipos de Ordenação: Hip e RESH

Conceito de Arquivo Hip

  • O termo "Hip" refere-se à falta de ordenação significativa nos registros gravados; a ordem não está relacionada a nenhuma chave relevante.
  • A ideia do arquivo Hip implica que mesmo que os registros sejam gravados em sequência, isso não significa que tenham uma organização lógica ou útil.

Estratégia de Ordenação RESH

  • Introduz-se o conceito de ordenação RESH, permitindo espaços vazios nos discos. Essa técnica utiliza funções hash para determinar onde gravar os registros.

Introdução ao RESH e Estruturas de Índice

O que é o RESH?

  • O RESH (Registro Estruturado Hash) é uma política para ordenar dados em arquivos, onde posições podem estar vazias inicialmente.
  • Sistemas RESH pré-alocam blocos com registros vazios e gravam nas posições conforme os cálculos são realizados.
  • Questões como colisão serão abordadas posteriormente, mas a ideia principal é entender que o RESH é uma das opções para organização de dados.

Métodos de Gravação de Registros

  • Existem três métodos principais para gravar registros fisicamente no disco: RIPH (sem ordenação), sequencial e RESH.
  • É importante ter estratégias auxiliares para melhorar o acesso aos dados, especialmente quando não estão ordenados.
  • A eficiência do acesso aos registros não ordenados é um desafio que pode ser superado com técnicas adequadas.

Conceito de Índice

  • Um índice é uma estrutura separada que melhora a eficiência do acesso aos dados armazenados no disco.
  • Cada entrada do índice contém uma chave e um ponteiro que indica onde está o registro correspondente no disco.
  • O índice funciona como um índice de livro, permitindo localizar rapidamente informações sem ler todos os registros.

Organização do Índice

Tipos de Estruturas de Índice

  • As entradas do índice podem ser organizadas de diferentes maneiras, conforme classificado por Christmadeu em três tipos: casterístico, krd e krd list.

1. Casterístico

  • No caso casterístico, o arquivo está organizado pela chave, sem necessidade de uma estrutura separada para o índice; cada registro inteiro da tabela serve como entrada.

2. Estrutura Separada

  • Quando há uma estrutura separada, cada entrada do índice consiste em uma chave e um ponteiro indicando a posição do registro correspondente no arquivo.

3. Chaves Não Únicas

Estruturas de Índice em Banco de Dados

Chaves e Estruturas de Índice

  • A chave é única em algumas estruturas, enquanto em outras pode haver múltiplas entradas para uma mesma chave. A redundância da chave no índice é um ponto importante a ser discutido.
  • Em casos onde há repetições, como espécies de animais, o índice deve apontar para várias entradas correspondentes à mesma chave, permitindo a busca eficiente por registros duplicados.

Tipos de Índices

  • Existem três formas principais de estruturação:
  • Característica (registro original com chave e dados).
  • KRD (um ponto para um registro).
  • KRD (uma chave apontando para vários registros).
  • As alternativas 2 e 3 permitem múltiplos índices para o mesmo arquivo, possibilitando diferentes ordenações dos dados. No entanto, não incluem todos os dados do registro, apenas chaves e ponteiros.

Eficiência dos Índices

  • O uso eficiente da memória é possível ao carregar um índice inteiro na RAM antes de acessar os registros no disco. Isso melhora a velocidade de leitura.
  • É viável criar estruturas mais complexas além das listas ordenadas simples mencionadas anteriormente.

Redundância e Consistência dos Dados

  • A introdução da redundância através dos índices pode impactar a consistência dos dados e as velocidades de leitura e gravação. É essencial analisar esses efeitos nos exercícios propostos.

Nomenclatura dos Índices

  • Introduz-se uma nomenclatura que distingue entre índices primários (ou agrupamento) e secundários. O índice primário requer que o arquivo esteja ordenado sequencialmente pela chave.
  • Um exemplo prático é quando os registros estão organizados por ID; isso caracteriza um índice primário devido à relação direta entre ordem do arquivo e chave.

Exemplos Práticos

  • Mesmo com índices separados, se o arquivo estiver ordenado sequencialmente pela espécie, ainda pode ser considerado um índice primário.

Estruturas de Índices em Banco de Dados

Tipos de Índices

  • O índice secundário é mencionado como uma estrutura onde os dados não têm ordem associada ao índice, resultando em ponteiros cruzados.
  • O índice denso é definido como tendo uma entrada para cada valor da chave, enquanto o índice espaço possui entradas para mais de um valor da chave.
  • A confusão entre as definições de índices denso e espaço é abordada, destacando que um índice denso tem uma entrada para cada valor da chave, mesmo que haja múltiplos registros associados.

Exemplos Práticos

  • Um exemplo prático ilustra que um índice denso pode ter várias entradas para a mesma chave, mas ainda assim mantém a relação 1:1 com os valores das chaves.
  • No caso do índice espaço, há múltiplas chaves associadas à mesma entrada no índice. Isso demonstra a flexibilidade dos índices em lidar com dados duplicados.

Resumo e Conclusão

  • A distinção entre índices densos e espaços é reiterada: o primeiro tem uma entrada por cada possível valor de chave; o segundo permite múltiplas chaves por entrada no índice.
Video description

Continuação da aula anterior de Armazenamento e Indexação. Apresentação de um problema prático envolvendo animais pré-históricos. Tipos de organização de dados em arquivo: heap, sequencial e hash. Conceito de índice, entrada de índice e tipos de entrada de índice. Índices primários e secundários, densos e esparsos. Este vídeo é parte da disciplina “MC536 - Bancos de Dados: Teoria e Prática” lecionada na graduação da Unicamp. Veja detalhes em: https://www.ic.unicamp.br/~santanche/teaching/db/2020-2/index.html