particionamento de dados oracle

Particionamento de dados em SGBD Oracle

Particionamento refere-se a um recurso disponível em banco de dados relacionais, que é o processo de dividir fisicamente os dados em armazenamentos separados, dividindo as tabelas em partes menores, agilizando e facilitando as consultas aos dados.

Como mostra a Figura 1, possui valores estabelecidos com uma ou mais colunas, denominada chave de partição, que em conjunto ao critério de particionamento, determina em que partição um registro específico residirá.

particionamento de dados oracle
Figura 1 – Particionamento de dados Oracle – Adaptado de Josko (2016)

 

Através dessa técnica, um Administrador de Banco de Dados (DBA) pode prover à aplicação uma solução de baixo custo sem a necessidade de grandes alterações de código, sendo uma solução inteligente e eficaz para o auxílio no ganho de desempenho em termos de funcionalidade e atuação das aplicações que acessam o banco. Também possui facilidade em se adaptar a situações onde seja necessário gerenciar com qualidade o ciclo de vida das informações e até mesmo “organizar” a forma em que os dados estão armazenados nas tabelas.

Na visão do DBA, uma tabela ou índice particionado possui várias partes, que podem ser gerenciadas em conjunto ou isoladamente, ou seja, a consulta pode ser realizada somente na partição desejada, tornando o tempo de retorno mais rápido.

Porém, na visão da aplicação (usuário), uma tabela ou índice particionado é idêntico a uma tabela ou índice não particionado, ou seja, não há necessidade em modificar comandos SQL Data Manipulation Language (DML) para acessar os dados.

O Sistema de Gerenciamento de Banco de Dados (SGBD) Oracle, utilizado nesta pesquisa como estudo, permite que partições sejam criadas com base em um intervalo específico de dados, que podem ser valores numéricos, datas, lista de valores e, até mesmo baseado na combinação destas estratégias.  

Tipos de Particionamento no Oracle Database

Range partitioning (particionamento por faixa de valores)

As partições são divididas em faixas lógicas de valores de colunas. Por exemplo, é possível realizar a partição de uma tabela de acordo com as estações do ano, dividindo em 4 partições, utilizando como intervalo as datas de mudança de estação.

Há três critérios que devem ser informados ao realizar este modo: o método (Range), a (s) coluna (s) e os limites de cada partição.

A Figura 2 demonstra um exemplo, em SQL, por faixa de valores, onde existe uma tabela denominada funcionários, que é particionada em 3 faixas de acordo com a data de nascimento dos funcionários (valores: menores que 1950, entre 1950 e 1970 e maiores que 1970):

 

Particionamento por Faixa de Valores - Oracle
Figura 2 – Particionamento por Faixa de Valores – Adaptado de Loney e Bryla (2005)

 

Hash Partitioning (particionamento por função hash)

Utiliza um algoritmo de hash para realizar a partição, onde os registros são distribuídos de forma idêntica para duas ou mais partições.

Um exemplo em que seria interessante adotar este modelo de particionamento seria em uma tabela de produtos, onde é possível realizar o particionamento em, por exemplo, quatro tabelas que possuirão o mesmo número de produtos.

Ao adicionar novos produtos, os registros serão distribuídos nas quatro tabelas de forma a deixá-las com o mesmo número de itens.

A Figura 3 mostra um exemplo com função de hash, onde uma tabela de vendedores é dividida em 3 partições.

Exemplo de Particionamento por Hash Oracle
Figura 3 – Exemplo de Particionamento por Hash (Adaptado de Loney e Bryla (2005))

List Partitioning (particionamento por lista de valores)

É indicado para valores discretos, cujos intervalos não são naturais.

A exemplo deste modelo, seria realizar o particionamento de acordo com as siglas de um estado, seria possível dividir uma tabela que contém todos os estados do Brasil por regiões.

A região sul, por exemplo, seria composta pelas siglas SC, PR e RG.

A Figura 4 demonstra um exemplo do método por lista, particionada por regiões, de acordo com o estado do gerente.

Exemplo de Particionamento por List Oracle
Figura 4 – Exemplo de Particionamento por Lista (Adaptado de Loney e Bryla (2005))

Composite partitioning (particionamento composto)

Combinação de dois métodos, sendo os mais utilizados o particionamento composto por range-hash e o particionamento composto por range-list.

Extensões de particionamento

Além das estratégias de particionamento já citadas, o Oracle Database 11g oferece mais três tipos de extensões com o intuito de ampliar a flexibilidade na hora de definir uma chave ou estratégia de particionamento:

    1. Intervalo: possui uma definição de faixas igualmente particionadas. Ao invés de especificar faixas isoladas, o Oracle cria partições conforme a necessidade de maneira automática;
    2. Referência: permite que uma tabela filho herde de forma transparente todas as configurações de uma tabela pai;
    3. Coluna virtual: permitem que a chave de particionamento seja definida por uma expressão, utilizando uma ou mais colunas já existentes da tabela, e armazenando a expressão somente como metadados.

Conclusão

O projeto descrito neste artigo apresenta um método eficiente e de pouca complexidade para implementar tabelas particionadas utilizando o sistema de gerenciamento de banco de dados Oracle.

Na história da computação, armazenar dados sempre foi relevante, e com o avanço da tecnologia, novos métodos para agilizar as consultas a esses dados foram surgindo.

O método de particionamento realiza o processo de dividir os dados de uma tabela em partes menores com a mesma estrutura da tabela, e utiliza uma das colunas para ser a chave de identificação de cada partição.

Oferece enormes vantagens, melhorando a capacidade de gerenciamento, desempenho e disponibilidade, além de permitir realizar o backup e a recuperação das partições de maneira individual.

 

Bibliografia

BAER, Hermann. Particionamento com o Oracle Database 11g Release 2. 2009.

JOSKO, João Marcelo Borovina. Particionamento de Dados: Uma introdução aos conceitos e aplicação. 2016.

LONEY, Kevin; BRYLA, BOB. Oracle 11g: O Manual do DBA. Tradução de: Altair Caldas Dias de Morais. Porto Alegre: Art Med Editora SA, 2009.

 
Aline Castro

Aline Castro

Full Stack Developer at Sciensa

4 comments

Deixe uma resposta

Your Header Sidebar area is currently empty. Hurry up and add some widgets.

%d blogueiros gostam disto: