Nunca trabalhei com o particionamento do SQL Server, mas atualmente enfrento o design de um banco de dados para o qual os volumes provavelmente o justificam. O sistema é para cupons. Os cupons devem ser emitidos periodicamente, geralmente a cada seis semanas, embora também haja emissão ad-hoc - por exemplo, para um evento especial. Existem 15 milhões de clientes e, para cada evento de emissão, cada cliente receberá 6 tipos diferentes de cupom, totalizando 90 milhões de ocorrências. Precisamos rastrear os dados de resgate da instância do cupom e mantê-lo por 6 meses, embora normalmente um cupom seja válido apenas por seis semanas. Qualquer solicitação de resgate de um cupom inválido não chegará ao banco de dados, pois será validada pelo PDV até.
Durante um período de seis meses, precisaremos armazenar 360 milhões de linhas na tabela Instância de cupom e até 72 milhões (assumindo uma taxa máxima de resgate de 20%) na tabela de resgate. Tenho a sensação de que esses números são grandes demais para uma única partição?
Minha pergunta é - o que usar como chave de partição? Um candidato óbvio seria por evento de emissão, fornecendo aproximadamente 6 partições. Mas acho que talvez isso daria um tamanho de partição muito grande para permitir o desempenho ideal? Seria possível particionar por duas chaves, por exemplo, por evento de emissão + último dígito do ID do cliente? Então a lógica seria:
If issuance event = 1 and last digit of customer id < 5 then
Store in partition 1
Else if issuance event = 1 and last digit of customer id >4 then
Store in partition 2
Else if issuance event =2 and last digit of customer id <5 then
Store in partition 3
Else if issuance event =2 and last digit of customer id >4 then
Store in partition 4
Etc...
Além disso, não tenho certeza das especificações do servidor de banco de dados que precisaremos. 16gb e 8CPUs serão suficientes? O banco de dados precisa poder retornar um resultado da tabela de instância de cupom, digitada em um valor numérico de código de barras em menos de meio segundo. A solicitação de transação esperada para validar (selecionar) e resgatar (inserir) deve atingir um pico de aproximadamente 3.500 por minuto.
O servidor SQL Server 2008r2 de 64 bits db será provisionado como VM a partir de um host muito poderoso com acesso a uma SAN de alto desempenho e grande capacidade.
Ficaria muito grato por qualquer conselho daqueles que implantaram uma solução do SQL Server para gerenciar volumes semelhantes.
Saudações
Roubar.