O que é fragmentação de banco de dados?

A fragmentação de banco de dados é o processo de armazenamento de um grande banco de dados em várias máquinas. Uma única máquina, ou servidor de banco de dados, pode armazenar e processar apenas uma quantidade limitada de dados. A fragmentação de banco de dados soluciona essa limitação dividindo os dados em partes menores, chamadas fragmentos, e armazenando-os em vários servidores de banco de dados. Todos os servidores de banco de dados geralmente têm as mesmas tecnologias subjacentes e trabalham juntos para armazenar e processar grandes volumes de dados.

Por que a fragmentação de banco de dados é importante?

À medida que uma aplicação cresce, o número de usuários da aplicação e a quantidade de dados que ela armazena aumentam com o tempo. O banco de dados torna-se um gargalo quando o volume de dados fica muito grande e muitos usuários tentam usar a aplicação para ler ou salvar informações simultaneamente. A aplicação fica mais lenta, afetando a experiência do cliente. A fragmentação de banco de dados é um dos métodos para resolver esse problema, pois permite o processamento paralelo de conjuntos de dados menores em fragmentos.

Quais são os benefícios da fragmentação de banco de dados?

Organizações usam a fragmentação de banco de dados para obter os seguintes benefícios:

Melhorar o tempo de resposta

A recuperação de dados leva mais tempo em um único banco de dados grande. O sistema de gerenciamento de banco de dados precisa pesquisar várias linhas para recuperar os dados corretos. Por outro lado, os fragmentos de dados têm menos linhas do que todo o banco de dados. Portanto, recuperar informações específicas ou executar uma consulta de um banco de dados fragmentado leva menos tempo. 

Evitar a interrupção total do serviço

Se o computador que hospeda o banco de dados falhar, a aplicação que depende do banco de dados também falhará. A fragmentação de banco de dados impede isso distribuindo partes do banco de dados em computadores diferentes. A falha em um dos computadores não desliga a aplicação porque ela pode operar com outros fragmentos funcionais. A fragmentação também costuma ser feita junto com a replicação de dados entre fragmentos. Portanto, se um fragmento ficar indisponível, os dados poderão ser acessados e restaurados de um fragmento alternativo.

Escalar com eficiência

Um banco de dados em crescimento consome mais recursos de computação e, por fim, atinge a capacidade de armazenamento. As organizações podem usar fragmentação de banco de dados para adicionar mais recursos de computação para dar suporte à escalabilidade do banco de dados. Elas podem adicionar novos fragmentos em tempo de execução sem desligar a aplicação para manutenção.

Como funciona a fragmentação de banco de dados?

Um banco de dados armazena informações em vários conjuntos de dados formados por colunas e linhas. A fragmentação de banco de dados divide um único conjunto de dados em partições ou fragmentos. Cada fragmento contém linhas exclusivas de informações que podem ser armazenadas separadamente em vários computadores, chamados nós. Todos os fragmentos são executados em nós separados, mas compartilham o esquema ou o design do banco de dados original. 

Por exemplo, um banco de dados não fragmentado contendo um conjunto de dados para registros de clientes pode ser desta maneira.

ID do cliente

Nome

Estado

1

John

Califórnia

2

Jane

Washington

3

Paulo

Arizona

4

Wang

Geórgia

A fragmentação envolve separar diferentes linhas de informações da tabela e armazená-las em máquinas diferentes, como mostra o exemplo a seguir.

Computador A

ID do cliente

Nome

Estado

1

John

Califórnia

2

Jane

Washington

Computador B

ID do cliente

Nome

Estado

3

Paulo

Arizona

4

Wang

Geórgia

Estilhaços

Os fragmentos de dados particionados são chamados de fragmentos lógicos. A máquina que armazena o fragmento lógico é chamada de fragmento físico ou nó de banco de dados. Um fragmento físico pode conter vários fragmentos lógicos. 

Chave de fragmento

Os desenvolvedores de software usam uma chave de fragmento para determinar como particionar o conjunto de dados. Uma coluna no conjunto de dados determina quais linhas de dados serão agrupadas para formar um fragmento. Os designers de banco de dados escolhem uma chave de fragmento em uma coluna existente ou criam uma nova.

Arquitetura sem compartilhamento

A fragmentação de banco de dados opera em uma arquitetura sem compartilhamento. Cada fragmento físico opera de forma independente e desconhece os outros fragmentos. Somente os fragmentos físicos que contêm os dados solicitados processarão os dados em paralelo para você. 

Uma camada de software coordena o armazenamento de dados e o acesso com base nesses vários fragmentos. Por exemplo, alguns tipos de tecnologia de banco de dados têm recursos de fragmentação automática integrados. Os desenvolvedores de software também podem escrever código de fragmentação na aplicação para armazenar ou recuperar informações do fragmento ou fragmentos corretos. 

Quais são os métodos de fragmentação de banco de dados?

Os métodos de fragmentação de banco de dados aplicam regras diferentes à chave de fragmento para determinar o nó correto de uma linha de dados específica. Veja a seguir arquiteturas de fragmentação comuns.

Fragmentação baseada em intervalo

A fragmentação baseada em intervalo, ou fragmentação dinâmica, divide as linhas do banco de dados com base em um intervalo de valores. Em seguida, o designer do banco de dados atribui uma chave de fragmento ao respectivo intervalo. Por exemplo, o criador do banco de dados particiona os dados coforme a primeira letra no nome do cliente, como mostrado abaixo. 

 

Nome

Chave de fragmento

Começa com letras de A a I

A

Começa com letras de J a S

B

Começa com letras de T a Z

C

 

Quando está gravando um registro de cliente no banco de dados, a aplicação determina a chave de fragmento correta verificando o nome do cliente. Em seguida, a aplicação combina a chave com seu nó físico e armazena a linha nessa máquina. Da mesma forma, a aplicação executa uma correspondência inversa ao pesquisar um registro específico.

Prós e contras

Dependendo dos valores dos dados, a fragmentação baseada em intervalo pode resultar na sobrecarga de dados em um único nó físico. Em nosso exemplo, o fragmento A (contendo nomes que começam com letras de A a I) pode conter um número muito maior de linhas de dados do que o fragmento C (contendo nomes que começam com letras de T a Z). Porém, é mais fácil de implementar.

Fragmentação com hash

A fragmentação com hash atribui a chave de fragmento a cada linha do banco de dados usando uma fórmula matemática chamada função hash. A função hash pega as informações da linha e produz um valor de hash. A aplicação usa o valor de hash como uma chave de fragmento e armazena as informações no fragmento físico correspondente.

Os desenvolvedores de software usam fragmentação com hash para distribuir uniformemente as informações em um banco de dados entre vários fragmentos. Por exemplo, o software separa os registros do cliente em dois fragmentos com valores de hash alternativos de 1 e 2. 

Nome

Valor de hash

John

1

Jane

2

Paulo

1

Wang

2

Prós e contras

Embora resulte na distribuição uniforme de dados entre fragmentos físicos, a fragmentação com hash não separa o banco de dados com base no significado das informações. Portanto, os desenvolvedores de software podem enfrentar dificuldades para reatribuir o valor do hash ao adicionar mais fragmentos físicos ao ambiente de computação. 

Fragmentação de diretório

A fragmentação de diretório usa uma tabela de pesquisa para fazer a correspondências entre as informações do banco de dados e o respectivo fragmento físico. Uma tabela de pesquisa é como uma tabela de planilha que vincula uma coluna de banco de dados a uma chave de fragmento. Por exemplo, o diagrama a seguir mostra uma tabela de pesquisa sobre cores de roupas.

Cor

Chave de fragmento

Azul

A

Vermelha

B

Amarelo 

C

Preto

D

Ao armazenar informações de roupas no banco de dados, a aplicação referencia a tabela de pesquisa. Se o vestido for azul, a aplicação armazenará as informações no fragmento correspondente. 

Prós e contras

Os desenvolvedores de software usam fragmentação de diretório porque é flexível. Cada fragmento é uma representação relevante do banco de dados e não é limitado por intervalos. Porém, a fragmentação de diretório falhará se a tabela de pesquisa contiver informações incorretas. 

Fragmentação geográfica

A fragmentação geográfica divide e armazena informações do banco de dados conforme a localização geográfica. Por exemplo, um site de serviço de namoro usa um banco de dados para armazenar informações de clientes de várias cidades da forma a seguir. 

Nome

Chave de fragmento

John

Califórnia

Jane

Washington

Paulo

Arizona

Os desenvolvedores de software usam cidades como chaves de fragmento. Eles armazenam as informações de cada cliente em fragmentos físicos localizados geograficamente nas respectivas cidades. 

Prós e contras

A fragmentação geográfica permite que as aplicações recuperem informações mais rapidamente devido à menor distância entre o fragmento e o cliente que faz a solicitação. Se os padrões de acesso a dados forem predominantemente baseados em geografia, não haverá problemas. Porém, a fragmentação geográfica também pode resultar em distribuição desigual de dados. 

Como otimizar a fragmentação de banco de dados para uma distribuição uniforme de dados

A ocorrência de uma sobrecarga de dados em fragmentos físicos específicos, embora outros permaneçam subcarregados, resulta em hotspots de banco de dados. Os hotspots retardam o processo de recuperação no banco de dados, anulando o propósito da fragmentação de dados. 

Uma boa seleção de chave de fragmento é capaz de distribuir dados uniformemente em vários fragmentos. Ao escolher uma chave de fragmento, os designers de banco de dados devem considerar os fatores a seguir. 

Cardinalidade 

A cardinalidade descreve os possíveis valores da chave de fragmento. Ela determina o número máximo de fragmentos possíveis em bancos de dados orientados por colunas separados. Por exemplo, se o criador do banco de dados escolher um campo de dados sim/não como chave de fragmento, o número de fragmentos será restrito a dois.

Frequência

A frequência é a probabilidade de armazenar informações específicas em um fragmento específico. Por exemplo, um designer de banco de dados escolhe a idade como uma chave de fragmento para um site de fitness. A maioria dos registros pode entrar em nós para assinantes com idade entre 30 e 45 anos e resultar em hotspots de banco de dados. 

Alteração monotônica

A alteração monotônica é a taxa de mudança da chave de fragmento. Uma chave de fragmento monotonicamente crescente ou decrescente resulta em fragmentos desequilibrados. Por exemplo, um banco de dados de feedback é dividido em três fragmentos físicos diferentes da seguinte forma:

  • O fragmento A armazena o feedback dos clientes que fizeram de 0 a 10 compras.
  • O fragmento B armazena feedback de clientes que fizeram de 11 a 20 compras.
  • O fragmento C armazena feedback de clientes que fizeram 21 ou mais compras.

À medida que a empresa cresce, os clientes farão mais de 21 compras. A aplicação armazena seus comentários no fragmento C. Isso resulta em um fragmento desbalanceado, pois o fragmento C contém mais registros de feedback do que outros fragmentos.

Quais são as alternativas à fragmentação de banco de dados?

A fragmentação de banco de dados é uma estratégia de escalabilidade horizontal que aloca nós ou computadores adicionais para compartilhar a workload de uma aplicação. As organizações se beneficiam da escalabilidade horizontal por causa de sua arquitetura tolerante a falhas. Quando um computador falha, os outros continuam operando sem interrupção. Os designers de banco de dados espalham fragmentos lógicos em vários servidores para reduzir o tempo de inatividade. 

No entanto, a fragmentação é uma entre várias outras estratégias de escalabilidade de banco de dados. Explore algumas outras técnicas e veja comparações entre elas.

Escalabilidade vertical

A escalabilidade vertical aumenta a capacidade de computação de uma única máquina. Por exemplo, a equipe de TI adiciona uma CPU, RAM e um disco rígido a um servidor de banco de dados para lidar com o aumento do tráfego. 

Comparação entre fragmentação de banco de dados e escalabilidade vertical  

A escalabilidade vertical custa menos, mas há um limite para os recursos de computação que podem ser escalados verticalmente. Enquanto isso, a fragmentação, uma estratégia de escalabilidade horizontal, é mais fácil de implementar. Por exemplo, a equipe de TI instala vários computadores em vez de atualizar o hardware antigo.

Replicação

A replicação é uma técnica que faz cópias exatas do banco de dados e as armazena em computadores diferentes. Os designers de banco de dados usam a replicação para criar um sistema de gerenciamento de banco de dados relacional tolerante a falhas. Quando um dos computadores que hospedam o banco de dados falha, outras réplicas permanecem em operação. A replicação é uma prática comum em sistemas de computação distribuídos.

Comparação entre fragmentação e replicação de banco de dados

A fragmentação de banco de dados não cria cópias das mesmas informações. Em vez disso, ela divide o banco de dados em várias partes e as armazena em computadores diferentes. Diferentemente da replicação, a fragmentação de banco de dados não resulta em alta disponibilidade. A fragmentação pode ser usada em combinação com a replicação para obter escala e alta disponibilidade.

Em alguns casos, a fragmentação de banco de dados pode consistir em replicações de conjuntos de dados específicos. Por exemplo, uma loja de varejo que vende produtos para clientes dos Estados Unidos e da Europa pode armazenar réplicas de tabelas de conversão de tamanho em fragmentos diferentes para ambas as regiões. A aplicação pode usar as cópias duplicadas da tabela de conversão para converter o tamanho da medida sem acessar outros servidores de banco de dados. 

Particionamento

O particionamento é o processo de dividir uma tabela de banco de dados em vários grupos. O particionamento é classificado em dois tipos: 

  • O particionamento horizontal divide o banco de dados por linhas.
  • O particionamento vertical cria partições diferentes das colunas do banco de dados. 

Comparação entre fragmentação e particionamento de banco de dados

A fragmentação de banco de dados é como o particionamento horizontal. Os dois processos dividem o banco de dados em vários grupos de linhas exclusivas. O particionamento armazena todos os grupos de dados no mesmo computador, mas a fragmentação de banco de dados os distribui em computadores diferentes.

Quais são os desafios da fragmentação de banco de dados?

As organizações podem enfrentar esses desafios ao implementar a fragmentação de banco de dados.

Hotspots de dados

Alguns fragmentos ficam desequilibrados por causa da distribuição desigual dos dados. Por exemplo, um único fragmento físico que contém nomes de clientes que começam com a letra A recebe mais dados do que outros. Esse fragmento físico usará mais recursos de computação do que os outros.

Solução

É possível distribuir dados uniformemente usando chaves de fragmento ideais. Alguns conjuntos de dados são mais adequados para fragmentação do que outros.

Complexidade operacional

A fragmentação de banco de dados cria complexidade operacional. Em vez de gerenciar um único banco de dados, os desenvolvedores precisam gerenciar vários nós de banco de dados. Ao recuperarem informações, os desenvolvedores devem consultar vários fragmentos e combinar as informações. Essas operações de recuperação podem complicar a análise.

Solução

No portfólio de banco de dados da AWS, a configuração e as operações do banco de dados foram automatizadas em grande parte. Isso simplifica trabalho com uma arquitetura de banco de dados fragmentada.

Custos de infraestrutura

As organizações pagam mais pelos custos de infraestrutura quando adicionam mais computadores como fragmentos físicos. Os custos de manutenção poderão aumentar se você aumentar o número de máquinas em seu datacenter on-premises.

Solução

Os desenvolvedores usam o Amazon Elastic Compute Cloud (Amazon EC2) para hospedar e escalar fragmentos na nuvem. Você pode economizar dinheiro usando a infraestrutura virtual totalmente gerenciada pela AWS.

Complexidade da aplicação 

A maioria dos sistemas de gerenciamento de banco de dados não conta com recursos de fragmentação integrados. Isso significa que designers de banco de dados e desenvolvedores de software devem dividir, distribuir e gerenciar o banco de dados manualmente.

Solução

Você pode migrar seus dados para os devidos bancos de dados com propósito específico da AWS, que têm vários recursos integrados que oferecem suporte à escalabilidade horizontal.

Como a AWS pode ajudar com a fragmentação de banco de dados?

A AWS é uma plataforma global de gerenciamento de dados que pode ser usada para criar uma estratégia de dados moderna. Com a AWS, você pode escolher o banco de dados com propósito específico certo, obter performance em escala, executar bancos de dados totalmente gerenciados e contar com alta disponibilidade e segurança.

Comece a usar a gerenciamento de dados na AWS criando uma conta da AWS hoje mesmo.

Próximas etapas da AWS

Confira outros recursos relacionados a produtos
Saiba mais sobre serviços de banco de dados 
Cadastre-se para obter uma conta gratuita

Veja os serviços de banco de dados gratuitos.

Cadastre-se 
Comece a criar no console

Comece a criar no Console de Gerenciamento da AWS.

Faça login