Sobre a Amostra Data Warehouse

A amostra Data Warehouse é um aplicativo de amostra do fluxo de mensagens que demonstra um cenário no qual um fluxo de mensagens é utilizado para executar o arquivamento de dados, como dados de vendas, em um banco de dados.   Os dados são armazenados para análise posterior por outro fluxo de mensagens ou aplicativo.

Como os dados de vendas são analisados em uma data posterior, o armazenamento das mensagens foi organizado de uma forma que facilita a seleção de registros para horas especificadas.  A data e a hora em que a mensagem do WebSphere MQ, que contém o registro de vendas, foi gravada são armazenadas como valores de coluna separados quando a mensagem é inserida no banco de dados.  A tabela de banco de dados contém quatro colunas:

Ao armazenar os dados dessa forma, é possível recuperar registros entre períodos de tempo específicos, digamos entre 9:00 a.m. e 12:00  ou 12:01 e 17:00, o que permitiria fazer a comparação de vendas no período da manhã e à tarde.

Sem o uso das colunas de data e hora adicionais, um aplicativo teria que ler todos os registros do banco de dados, examiná-los, processar os que forem de interesse e descartar o restante. A capacidade de recuperar registros de uma maneira controlada e precisa evita potencialmente o desperdício de uma grande quantidade de processamento, o que resultaria se todos os registros precisassem ser lidos.

A amostra ilustra uma técnica para arquivar uma mensagem, ou parte dela, em um banco de dados. Esse é o tipo de processamento que normalmente seria incluído como parte de um fluxo de mensagens mais complexo quando houvesse necessidade de arquivar dados.

O processamento na amostra consiste em dois fluxos de mensagens.  Os fluxos de mensagens são:

Os detalhes dos fluxos de mensagens e o processamento que eles executam estão descritos abaixo.

Fluxo de Mensagens WarehouseData

O fluxo de mensagens Warehousedata executa o seguinte processamento.

  1. Lê uma mensagem do WebSphere MQ que contém uma carga útil XML.  A carga útil contém os dados a serem arquivados.
  2. Converte uma parte da árvore de mensagens em um BLOB pronto para inserção no banco de dados.
  3. Insere o BLOB de mensagem junto com a data e a hora em que a mensagem do WebSphere MQ foi gravada em um banco de dados.
  4. Envia uma mensagem de confirmação do WebSphere MQ para sinalizar a inserção bem-sucedida da mensagem no banco de dados.

O fluxo de mensagens WarehouseData consiste dos seguintes nós:

Uma Captura de Tela do Fluxo de Mensagens WarehouseData.

O nó MQInput DATAWAREHOUSE_IN_Q lê a mensagem XML. Como a mensagem que chega está em um formato XML autodefinido, não existe necessidade de especificar um conjunto de mensagens ou formato para ela ser analisada com êxito.

O nó Compute Warehouse_Input_Message converte toda a carga útil da mensagem (ROOT.XML) em um BLOB utilizando a função ASBITSTREAM, insere a mensagem em um banco de dados e, finalmente, formata a mensagem de confirmação.

O nó MQOutput DATAWAREHOUSE_OUT_Q grava a mensagem de saída como uma mensagem do WebSphere MQ.

Se surgir um erro durante o processamento do banco de dados, uma mensagem será formatada no nó Compute Create_Error_Message e gravada no nó MQOutput DATAWAREHOUSE_FAILURE_Q como uma mensagem do WebSphere MQ.

Fluxo de Mensagens VerifyDatabaseContents

O fluxo de mensagens VerifyDatabaseContents  executa o seguinte processamento:

  1. Lê uma mensagem do WebSphere MQ contendo uma carga útil XML que especifica o intervalo (hora de início e de encerramento) para o qual uma contagem de registros deve ser obtida.
  2. Consulta o banco de dados para determinar quantos registros estão presentes para as horas especificadas.
  3. Formata a mensagem de resposta.
  4. Grava uma mensagem do WebSphere MQ.

O fluxo de mensagens VerifyDatabaseContents consiste em um dos seguintes nós:

Uma Captura de Tela do Fluxo de Mensagens VerifyDatabaseContents.

O nó MQInput DATAWAREHOUSE_VERIFY_CONTENTS_IN_Q lê a mensagem XML. Como a mensagem que chega está em um formato XML autodefinido, não existe necessidade de especificar um conjunto de mensagens ou formato para ela ser analisada com êxito.

O nó Compute Verify_Contents executa as seguintes ações:

  1. Extrai a data e a hora de início e de encerramento a serem utilizadas na consulta do banco de dados a partir da mensagem que chega.
  2. Emite uma instrução SQL SELECT na tabela de banco de dados de archive para determinar como os registros estão presentes no intervalo de hora determinado.
  3. Formata uma mensagem de resposta

O nó MQOutput DATAWAREHOUSE_VERIFY_CONTENTS_OUT_Q grava a mensagem de saída do WebSphere MQ.

Se surgir um erro durante o processamento do banco de dados, uma mensagem será formatada no nó Compute Create_Error_Message e gravada no nó MQOutput DATAWAREHOUSE_FAILURE_Q como uma mensagem do WebSphere MQ.

Mensagens de Teste

Duas mensagens são utilizadas nesta amostra.  A primeira é uma mensagem que será arquivada e a segunda é uma mensagem para especificar a data e a hora a a serem utilizadas pelo fluxo de mensagens Verificar o Conteúdo do Banco de Dados. Seguem abaixo exemplos para as duas mensagens.

Mensagem a Ser Arquivada

<SaleEnvelope>
<Header>
<SaleListCount>1</SaleListCount>
</Header>
<SaleList>
<Invoice>
<Initial>K</Initial>
<Initial>A</Initial>
<Surname>Braithwaite</Surname>
<Item>
<Code>00</Code>
<Code>01</Code>
<Code>02</Code>
<Description>Twister</Description>
<Category>Games</Category>
<Price>00.30</Price>
<Quantity>01</Quantity>
</Item>
<Item>
<Code>02</Code>
<Code>03</Code>
<Code>01</Code>
<Description>The Times Newspaper</Description>
<Category>Books and Media</Category>
<Price>00.20</Price>
<Quantity>01</Quantity>
</Item>
<Balance>00.50</Balance>
<Currency>Sterling</Currency>
</Invoice>
<Invoice>
<Initial>T</Initial>
<Initial>J</Initial>
<Surname>Dunnwin</Surname>
<Item>
<Code>04</Code>
<Code>05</Code>
<Code>01</Code>
<Description>The Origin of Species</Description>
<Category>Books and Media</Category>
<Price>22.34</Price>
<Quantity>02</Quantity>
</Item>
<Item>
<Code>06</Code>
<Code>07</Code>
<Code>01</Code>
<Description>Microscope</Description>
<Category>Miscellaneous</Category>
<Price>36.20</Price>
<Quantity>01</Quantity>
</Item>
<Balance>81.84</Balance>
<Currency>Euros</Currency>
</Invoice>
</SaleList>
<Trailer>
<CompletionTime>12.00.00</CompletionTime>
</Trailer>
</SaleEnvelope>

Mensagem para Especificar Data e Hora da Procura

<Archive_Query>
<Start_Time>
<Day>mm/dd/yyyy</Day>
<Time>hh:mm:ss</Time>
</Start_Time>
<End_Time>
<Day>mm/dd/yyyy</Day>
<Time>hh:mm:ss</Time>
</End_Time>
</Archive_Query>

Ícone Página Principal   Voltar para Home da Amostra