Pergunta

Estou pensando em usar o armazenamento de tabela para armazenar alguns dados transacionais, no entanto, preciso suportar alguns relatórios de nível muito alto, basicamente totais por dia / mês.

Algumas opções que eu tenho:

  • Use uma estrutura de chave de partição / linha e execute dinamicamente a soma
    Por exemplo, 20101101_Itemid_xxxxxxxx (x = Guid ou tempo, para ser exclusivo), então eu consultaria dados de meses usando uma parte da tecla de linha (itemId_201011) e para um total na propriedade "custo" no tipo.

    Como o limite de consulta de 1000 registros seria gerenciado por isso? (ou seja, se houver mais de 1000 transações para o dia, o total seria difícil)

  • Use outro registro para armazenar o total para o dia e atualize -o como novos registros são adicionados
    Por exemplo, a chave da linha "20101101_itemid_total", em seguida, consulte isso para os totais dos dias, ou meses ou anos.

Qual é a melhor maneira de fazer isso? Existe uma 'prática recomendada' para esse tipo de requisito usando armazenamento de tabela?

Foi útil?

Solução

Não tenho certeza de qual é a melhor prática, mas posso comentar que temos uma situação semelhante Azurewatch e definitivamente estão usando valores pré-agregados em tabelas.

Principalmente por razões de desempenho-o armazenamento de tabela não é instantâneo, mesmo se você consultar a chave de partição única e um alcance na tecla de linha. O tempo que leva para baixar os registros é um pouco significativo e, dependendo dos registros, pode aumentar a CPU, porque precisa despersar os dados em objetos. Se você viajar para o armazenamento de mesa várias vezes devido ao limite de registro de 1000, estará pagando mais.

Alguns outros pensamentos a serem considerados:

Seus totais agregados mudarão? Se não, isso é outro cutucar em relação à pré-agregação

Você precisará manter os valores agregados após o desaparecimento dos dados brutos ou precisará eliminar dados brutos? Se sim, então é outra cutucada em relação à pré-agregação

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top