Partition Table (Definições/Terminologias) – Parte#3

Fala galera, para implementar o particionamento horizontal de tabelas, é importante conhecer as definições e terminologias utilizadas. Para alinharmos, vou falar do que é fundamental para você entender e aplicar essa tecnologia nos seus projetos.

Para começar, vamos entender a estrutura de armazenamento do Partition Table. Esta forma de trabalhar se aplica desde SQL Server 2005 até o 2012, antes disso, com o SQL Server 7 ou 2000, até onde me lembro, tinha que fazer manualmente a quebra dos dados nas tabelas particionadas e a consulta era feita através de uma VIEW com UNION ALL de todas as tabelas particionadas… um verdadeiro parto!

Desde o SQL Server 2005, quando criamos uma tabela e/ou índice no nosso banco e não definimos onde ele será armazenado, ele fica no filegroup default. Porém, podemos criar a tabela e/ou índice em um partition schema. O partition schema faz um mapeamento de um ou mais filegroups, mas para armazenar os dados nos arquivos físicos corretos (nos filegroups) ele usa o partition function, que por sua vez, contém o algoritmo que realmente identifica onde determinada linha será armazenada. A ordem cronológica é mais ou menos assim:

image

Ok, agora que entendemos de forma macro a estrutura de armazenamento, vamos entender conceitualmente como o SQL Server quebra os dados baseado em uma coluna da tabela.

Para isso, é necessário definir o Range que o algoritmo de particionamento irá usar para separar os dados de forma correta e informar o partition function (que irá armazenar no local indicado). Esse Range atua juntamente ao Partition Key, que é uma coluna única existente na tabela e é utilizada como separador lógico dos dados. Depois dos dados separados em tabelas específicas, é possível trabalhar com os dados das tabelas não só fazendo consultas, mas também juntando (Merge) e/ou particionando ainda mais as tabelas (Split). Também usa-se o Switch para “converter” uma tabela que estava sendo usada como atual, com dados quentes, para ser entendida como histórico.

image

Pegando como base o database criado no post Partition Table (Particionamento de Tabelas) – Parte#1 se for separar os dados com base em cada mês, o Partition Key seria a coluna Data e o Range seria cada período que quero utilizar, baseado em um início e fim da coleção de dados. Seria algo assim:

Range

Inicio

Fim

1

01/01/2012

31/01/2012

2

01/02/2012

28/02/2012

12

01/12/2012

31/12/2012

Fiquem atentos à essas nomenclaturas, a medida que precisarmos usar cada uma delas vou explicar em detalhes suas caracteristicas e funcionamento.

Sobre Diego Nogare 346 Artigos
Diego Nogare é Gerente Técnico de Engenharia de Machine Learning no Itaú-Unibanco. Também é professor em programas de pós graduação no Mackenzie e na FIAP, em São Paulo. Foi nomeado como Microsoft MVP por 11 anos seguidos, e hoje faz parte do programa Microsoft Regional Director.