O que é Particionamento em Bancos de Dados

Particionamento em Bancos de Dados

O particionamento de dados é uma abordagem empregada para estender o armazenamento de dados dentro de um esquema existente. Na verdade, trata-se de um conceito relativamente simples – se você tiver problemas para acessar grandes volumes de dados, simplesmente divida os objetos de armazenamento (geralmente, as tabelas) em objetos menores.

O processo de particionamento de bancos de dados também é conhecido como fragmentação por alguns autores.

O processo de particionamento divide uma tabela em um conjunto de partições ou fragmentos para fins de armazenamento físico.
Permite melhorar o desempenho no acesso aos dados, pois eles podem ser armazenados no local em que são mais frequentemente utilizados.

Na prática, a divisão dos dados em um banco de dados pode trazer diversos benefícios, tais como:

  • É bem mais fácil manter, realizar backups e desfragmentar um conjunto de dados dividido.
  • Conjuntos de dados divididos significam índices de tamanho menor, menos páginas intermediárias, e, assim, melhor performance
  • Os dados divididos podem residir em servidores físicos separados, diminuindo custos aumentando ainda mais a performance de acesso aos dados.

No geral, cada partição recebe a atribuição de recursos de hardware mais ou menos dedicados, como CPU e acesso a disco, o que diminui a competição por esses recursos entre as próprias partições.

 

Particionamento em Bancos de Dados

Particionamento Horizontal de uma tabela

Existem duas maneiras de se realizar particionamento de bancos de dados:

  • Particionamento Vertical: As colunas de uma tabelas são divididas e armazenadas em tabelas separadas (ou bancos de dados separados). É uma estratégia menos comum que o particionamento horizontal, e não é considerada melhor prática.
  • Particionamento Horizontal: As linhas de uma tabela são divididas e armazenadas em tabelas distintas no bancos de dados. O particionamento horizontal também é conhecido como Sharding.

O particionamento pode ser realizado de várias formas. Uma delas é pegar uma tabela e dividi-la em várias tabelas menores, com dados que são acessados com maior frequência armazenados em uma das tabelas, e com as demais tabelas mantendo as informações que não são tão solicitadas. Essa abordagem também é conhecida como “row-splitting” (Divisão de Linhas).

A tabela original, completa, pode ser recriada usando-se uma view que reúna as tabelas divididas. Evidentemente, esta atividade pode aumentar o uso de recursos do sistema, e assim seu emprego vai depender do que exatamente você precisa extrair do banco de dados, para se certificar de que essa divisão vale a pena.

Uma outra forma de particionamento é a subdivisão de dados na qual uma tabela é “quebrada” em partes lógicas baseadas em um valor de chave. Por exemplo, em uma tabela de fornecedores, dados relativos a fornecedores de um país determinado podem ser armazenados em uma tabela, ao passo que os dados relativos aos demais fornecedores ficam em outras tabelas. Ou ainda, poderíamos particionar os dados de forma que os dados do mês atual sejam armazenados em uma tabela, ao passo que os dados de meses anteriores – os quais não podem ser mais atualizados – são armazenados em tabelas localizadas em discos somente-leitura, cujo acesso é mais rápido.

A reconstrução das tabelas originais a partir das tabelas fragmentadas pode ser realizada por meio de operações de junção e união – a junção para partições verticais, e a união para partições horizontais.

Independente da abordagem empregada, o particionamento requer que o DBA identifique critérios para dividir a estrutura, e nem sempre essa técnica é útil, como por exemplo em situações nas quais a distribuição dos dados muda constantemente. O particionamento é mais indicado em casos onde há previsibilidade e regularidade na distribuição de dados entre as novas estruturas que serão criadas, para que haja sucesso na operação.

Independência de Fragmentação

Um conceito importante em particionamento de tabelas é o da Independência de Fragmentação, que significa que, para os usuários, os dados não podem aparecer como estando fragmentados. Ou seja, é apresentado aos usuários uma visão dos dados na qual as partições estão combinadas logicamente por meio de operações de junção e união adequadas.

Para que o particionamento de dados funcione de forma adequada, o software que acessa esss dados deve ser capaz de procurar por qualquer dado independente de sua localização física, ou seja, o processo deve ser totalmente transparente ao usuário que os acessa.

No próximo artigo vamos explorar mais a fundo o conceito de Particionamento Horizontal em Bancos de Dados.

 

Sobre Fábio dos Reis (1337 Artigos)
Fábio dos Reis trabalha com tecnologias variadas há mais de 25 anos, tendo atuado nos campos de Eletrônica, Telecomunicações, Programação de Computadores e Redes de Dados. É um entusiasta de Unix, Linux e Open Source em geral, adora Eletrônica e Música, e estuda idiomas, além de ministrar cursos e palestras sobre diversas tecnologias em São Paulo e outras cidades do Brasil.
Contato: Website

Escreva um comentário

Seu e-mail não será divulgado


*