Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/sschonss/b-tree-e-hash-index
B-TREE e HASH INDEX — Qual a diferença?
https://github.com/sschonss/b-tree-e-hash-index
Last synced: 18 days ago
JSON representation
B-TREE e HASH INDEX — Qual a diferença?
- Host: GitHub
- URL: https://github.com/sschonss/b-tree-e-hash-index
- Owner: sschonss
- Created: 2023-01-02T23:48:51.000Z (about 2 years ago)
- Default Branch: main
- Last Pushed: 2023-01-02T23:49:15.000Z (about 2 years ago)
- Last Synced: 2024-11-13T02:13:39.643Z (3 months ago)
- Size: 1000 Bytes
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
---
B-TREE e HASH INDEX - Qual a diferença?
Hoje em dia, a maioria dos bancos de dados relacionais utiliza índices para melhorar a performance de consultas. Esses índices podem ser de duas formas: B-tree e Hash. Neste artigo, vamos entender a diferença entre eles e quando utilizar cada um.---
O que é um índice?
Um índice é uma estrutura de dados que permite a busca de um registro em um arquivo de dados. Ele é composto por uma chave e um ponteiro para o registro correspondente. A chave é um valor que identifica o registro e o ponteiro é o endereço do registro no arquivo de dados.---
O que é um índice B-Tree?
O índice B-Tree funciona como uma árvore binária de busca, onde cada nó pode ter no máximo um número fixo de filhos. A árvore é balanceada, ou seja, a diferença de altura entre os filhos de um nó não pode ser maior que 1. A árvore é balanceada através de operações de rotação e redistribuição.
Exemplo de um índice B-Tree:
Fonte: How Database B-Tree Indexing Works
Onde é utilizado?
O índice B-Tree é utilizado em bancos de dados relacionais, como o MySQL, PostgreSQL, Oracle, etc. Ele é utilizado para otimizar a busca de registros em tabelas.
Devido a sua estrutura, o índice B-Tree é utilizado para buscas de registros que contenham valores de chaves próximas.
Dessa forma, fica mais fácil encontrar um registro que contenha a chave 100, do que um registro que contenha a chave 1000000, por exemplo.---
O que é um índice Hash?
O índice Hash funciona como uma tabela de dispersão, onde cada chave é mapeada para um valor de dispersão. O valor de dispersão é um número que indica a posição do registro no arquivo de dados.
Talvez você esteja se perguntando: "Mas como o índice Hash funciona se não é uma árvore?". Bom, o índice Hash funciona como uma árvore, mas a árvore é virtual. Ou seja, a árvore não é armazenada em memória, mas sim o índice Hash.
Funciona assim: cada nó da árvore é um índice Hash. Cada índice Hash é um vetor de ponteiros para os registros. O índice Hash é um vetor de tamanho fixo, onde cada posição do vetor é um ponteiro para um registro. O valor de dispersão é o índice do vetor.
O Index Hash é como se fosse uma função, onde cada chave é mapeada para um valor de dispersão. Esse valor de dispersão é o índice do vetor de ponteiros.
Exemplo de um índice Hash:
Fonte: All About Indexes, Part 2: MySQL Index Structure and Performance
Onde é utilizado?
O índice Hash é utilizado em bancos de dados não relacionais, como o MongoDB, Redis, etc. Ele é utilizado para otimizar a busca de registros em tabelas, porém, também é utilizado em bancos de dados relacionais, como o MySQL, PostgreSQL, Oracle, etc.
Devido a sua estrutura, o índice Hash é utilizado para buscas de registros que contenham valores de chaves aleatórias.---
Qual a diferença entre o índice B-Tree e o índice Hash?
O índice B-Tree é utilizado para buscas de registros que contenham valores de chaves próximas, enquanto o índice Hash é utilizado para buscas de registros que contenham valores de chaves aleatórias.
O índice B-Tree é uma árvore binária de busca, enquanto o índice Hash é uma tabela de dispersão.
O índice B-Tree é utilizado em bancos de dados relacionais, enquanto o índice Hash é mais utilizado em bancos de dados não relacionais.
O Index Hash fica armazenado em memória, enquanto o índice B-Tree fica armazenado em disco.---
Referências
All About Indexes, Part 2: MySQL Index Structure and Performance
How Database B-Tree Indexing Works