Pular para o conteúdo

Particionamento em Banco de Dados Oracle

O objetivo deste artigo é oferecer informações sobre a solução de particionamento do banco de dados Oracle, sem se aprofundar em detalhes técnicos. Assim, conhecimentos básicos sobre banco de dados já são capazes oferecer entendimento do texto a seguir, que mostra as principais vantagens, desvantagens e por que utilizar este recurso.

Por MARCOS SANTOS

Dúvidas recorrentes que empresas com alto volume de dados, armazenados em seus bancos de dados produtivos, eventualmente tem são:

  1. Como manter, e até melhorar, a performance operacional dos sistemas  computacionais diante de um crescimento constante no volume de dados?

  2. Como reduzir custos com armazenamento desses dados?

A primeira opção que vem a mente e pode parecer mais simples, é a operação de expurgo de dados. Ela pode ocorrer com a eliminação de dados ou movimentação dos mesmos para tabelas históricas. Mas nem sempre isso é possível ou simples de se implementar: seja por regras rígidas de período mínimo de armazenamento, seja pela dificuldade de conciliar informações de  fontes diferentes, entre outros.

Uma possível solução, que endereça uma excelente combinação de desempenho, suporte ao crescimento do volume de dados e economia de espaço físico nos discos mais caros, frente a possibilidade de utilização de discos mais baratos, utilizados com baixa frequência, é o particionamento de tabelas e índices do banco de dados Oracle.

O particionamento é transparente para as aplicações, isso quer dizer que não há necessidade de revisão ou qualquer ajuste de código, o mesmo pode permanecer inalterado.

O particionamento permite que estruturas de dados, como tabelas e índices, sejam subdivididas em partes menores, permitindo que esses objetos sejam gerenciados e acessados de forma mais especializada. A Oracle fornece uma rica variedade de estratégias e possibilidades de formas de particionamentos para atender a diferentes requisitos de negócios. 

No exemplo a seguir imagine a tabela Pedido, a esquerda, a tabela possui uma coluna data, que pode ser utilizada como chave de particionamento, onde poderíamos criar partições para cada ano, coluna a direita. Observe que as partições têm a mesma estrutura lógica que a tabela, mas tem menos dados, dessa forma uma aplicação que precise de dados de um período específico não precisa varrer a tabela inteira, mas sim apenas os dados que interessam.

post-blog-oracle

A título de exemplo, foi selecionado a coluna data como chave de particionamento, mas poderia ser outra coluna, e em vez de ter particionado por uma faixa de valor, poderia ser outra técnica que melhor atenda a necessidade do negócio.

Segundo a recomendação da Oracle, o particionamento melhora o desempenho, a capacidade de gerenciamento e a disponibilidade de uma ampla variedade de aplicativos e ajuda a reduzir o custo total de propriedade para armazenar grandes quantidades de dados.

A Oracle sugere as seguintes situações onde se deve utilizar o Particionamento:

  • Tabelas com mais de 2 GB devem sempre ser consideradas candidatas ao particionamento

  • Tabelas contendo dados históricos, nos quais novos dados são adicionados à partição mais recente. Um exemplo típico é uma tabela histórica em que apenas os dados do mês atual são atualizáveis e os outros 11 meses são somente leitura.

  • Quando o conteúdo de uma tabela precisa ser distribuído entre diferentes tipos de dispositivos de armazenamento.

Os principais benefícios são:

  • Escalabilidade: viabiliza mais oportunidades de crescimento saudável;

  • Economia em Custo de Armazenamento: dados podem estar em diferentes discos, com desempenho, tamanho e custo diferentes. Dados mais recentes ou mais acessados podem ficar nos discos mais rápidos;

  • Economia em Espaço de Armazenamento: compressão de dados em partições específicas menos utilizadas;

  • Desempenho: limita quantidade de dados por partição;

  • Gerenciabilidade: Uma vez que permite dividir tabelas e índices em unidades menores de dados, esse blocos de dados podem ser gerenciados de forma individualizada;

  • Manutenção: Concentra dados em partições específicas;

Pontos de atenção a serem considerados:

  • Custo de aquisição junto a Oracle, licença (Partitioning)

  • Administração: o processo de administração de uma tabela muito particionada tende a ser mais complexo conforme aumentam as partições.

  • Esforço: quando trabalhamos com tabelas já populadas, e que necessitam de particionamento, teremos que verificar qual será a forma de transição, o banco de dados Oracle possui uma variedade de alternativas, que devem ser cuidadosamente analisadas. Qualquer migração deve ser muito bem planejada e administrada.

Vale destacar que a Matera possui know-how em particionamento obtido através de projetos complexos que apresentaram grande sucesso. Clientes que já iniciaram o processo de particionamento estão experimentando ambientes com alto desempenho e liberdade para aumento considerável volume de dados.