Tópico anterior: Criando exemplos de lógica de negócios efetivas

Próximo tópico: Estudo de caso 16: padrões de design da lógica de negócios

Estudo de caso 15: Métricas agrupadas

Normalmente, ao descrever um determinado item de software, a descrição pode ser dividida em duas partes, O QUE e COMO. A parte O QUE significa a descrição do que este item de código faz. Já a parte COMO significa como ele faz isso. Há uma tendência para se concentrar na parte O QUE e ignorar a parte COMO. O motivo para que seja simples e, em muitos casos, justificável. Ao fazer isso, você reduz o acoplamento entre os componentes e não precisa se preocupar com informações que, em muitos casos, são irrelevantes. Em muitos casos, o custo de ignorar a parte COMO é um desempenho ruim.

Este estudo de caso aborda a maneira como o mecanismo calcula as métricas agrupadas (responder a parte COMO) e descreve o custo de desempenho que ele implica em algumas implementações. Também aborda várias maneiras de reduzir o custo alterando a implementação.

O que são métricas agrupadas

Métricas agrupadas são métricas que se incluem na definição de um determinado grupo de recursos. Esse grupo é chamado de agrupamento da métrica e cada um dos recursos deste grupo é chamado de item de agrupamento. Ao calcular uma métrica agrupada, um cálculo à parte é executado para cada item de agrupamento. Os cálculos para estes itens são semelhantes entre si, exceto:

Como as métricas agrupadas são calculadas

Um fato importante de se entender sobre o cálculo de uma métrica agrupada é que todos os itens do agrupamento são calculados em paralelo. O termo em paralelo não significa que eles são calculados por segmentos diferentes, mas que durante o processamento de vários eventos que devem ser tratados por vários itens de agrupamento, os eventos são processados em sequência, e para cada evento, os itens de agrupamento relevantes são chamados e processam esse evento. Por exemplo, existem muitos eventos que devem ser tratados por muitos itens de agrupamento. Há duas maneiras de fazer isso:

Exemplo: opção 1

Para cada item de agrupamento C
     Para cada evento E que deve ser tratado por C
          Permitir que C gerencie E

Exemplo: opção 2

Para cada evento E
     Para cada item de agrupamento C que deve gerenciar E
          Permitir que C gerencie E

O mecanismo manipula as métricas agrupadas usando a opção 2.

Outro ponto importante de se entender é que a execução do VBScript em PslWriter é realizada por um componente chamado Script Control. Existe apenas uma única instância deste componente por cada métrica e a instância é reutilizada para o cálculo de vários itens de agrupamento. Conforme mencionado anteriormente, uma vez que os itens de agrupamento são calculados em paralelo e o componente Script Control pode conter somente os dados de um único item de agrupamento em cada momento, é necessário alterar os dados do Script Control com frequência.

Para explicar isso, um pseudo código que executa o cálculo, é apresentado a seguir com mais detalhes.

1-     Para cada métrica M
2-          Permitir que X seja o evento mais recente , não controlado ainda por M
3-          Permitir que T seja a data/hora do estado mais recente antes de X
4-           Permitir que L seja a lista de todos os eventos registrados por M (todos os itens de agrupamento) a partir da data e hora T até a hora atual.
5-          Para cada evento E em L
6-               Para cada item de agrupamento C que deve manipular E
7-                    Permitir que C seja o item de agrupamento atualmente carregado no controle de script
8-                    Pegue os valores das variáveis globais do scrip control e armazene-os à parte para C
9-                    Pegue os valores das variáveis globais armazenados à parte para C e carregue-os no Script control.
10-                   Manipule o evento E

Todo o processo de localizar qualquer tempo de um evento que ainda não foi considerado, e executar o cálculo a partir desse ponto em diante é chamado de Recálculo. O processo de substituição de valores das variáveis globais (etapas 8 e 9 no código acima) é chamado de alternância de contexto.

Os dois principais problemas que podem ser facilmente identificados no código acima são:

Recálculo de métricas agrupadas

Alternância de contexto