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:
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.
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.