Data Warehouse サンプルについて

Data Warehouse サンプルは、メッセージ・フローを使用して売上データなどのデータをデータベースにアーカイブするシナリオを例示する、メッセージ・フロー・サンプル・アプリケーションです。データは、後で別のメッセージ・フローまたはアプリケーションがこれを分析できるよう、保管されます。

売上データは後日分析されるので、メッセージの保管は、指定された時間のレコードを容易に選択できるような方法で編成されます。 メッセージがデータベースに挿入される時点で、売上レコードの入った WebSphere MQ メッセージが書き込まれた日時は、独立した列値として保管されます。データベース表には以下の 4 つの列が含まれています。

この方法でデータを保管すると、特定の期間のレコードを取り出せます。 例えば午前 9:00 から午後 12:00 までの間、および午後 12:01 から午後 5:00 の間を指定して、午前と午後の売上を比較できます。

付加的な日時列を使わない場合、アプリケーションはデータベースからレコードを全部読み取って全部調べ、関係のあるレコードだけを処理して、残りを廃棄する必要があります。 レコードを全部読まなければならないとすれば大量の処理を無駄にすることになりますが、制御された綿密な方法でレコードを取り出すことができるなら、その無駄を省ける可能性があります。

このサンプルは、メッセージまたはその一部をデータベースにアーカイブする手法の一例を示します。通常、このような処理は、データをアーカイブする必要がある場合に、より複雑なメッセージ・フローの一部として組み込まれます。

サンプルの処理は、2 つのメッセージ・フローで構成されています。

以下のセクションでは、メッセージ・フローの詳細と、メッセージ・フローが実行する処理を示します。

WarehouseData メッセージ・フロー

WarehouseData メッセージ・フローは、以下の処理を実行します。

  1. XML ペイロードが入った WebSphere MQ メッセージを読み取ります。このペイロードには、アーカイブするデータが入っています。
  2. メッセージ・ツリーの部分を BLOB に変換して、データベースに挿入できるようにします。
  3. BLOB メッセージと、WebSphere MQ メッセージがデータベースに書き込まれた日時を挿入します。
  4. WebSphere MQ 確認メッセージを送信し、データベースへのメッセージの挿入が成功したことを知らせます。

WarehouseData メッセージ・フローは、以下のノードから構成されています。

WarehouseData メッセージ・フローの画面取り

Data_Warehouse_In_Q MQInput ノードは XML メッセージを読み取ります。 着信メッセージは自己定義型 XML 形式なので、メッセージが正常に解析されるようにメッセージ・セットやメッセージ・フォーマットを指定する必要はありません。

Warehouse_Input_Message Compute ノードは、ASBITSTREAM 関数を使ってメッセージ・ペイロード (ROOT.XMLNSC) 全体を BLOB に変換し、メッセージをデータベースに挿入して、最後に確認メッセージをフォーマット設定します。

Data_Warehouse_Out_Q MQOutput ノードは出力メッセージを WebSphere MQ メッセージとして書き込みます。

データベースの処理中にエラーが起きた場合、メッセージが Create_Error_Message Compute ノードでフォーマット設定されて、Data_Warehouse_Failure_Q MQOutputノードで WebSphere MQ メッセージとして書き出されます。

VerifyDatabaseContents メッセージ・フロー

VerifyDatabaseContents メッセージ・フローは、以下の処理を実行します。

  1. WebSphere MQ メッセージを読み取ります。このメッセージには XML ペイロードが入っており、これはどの間隔 (開始時刻と終了時刻) のレコードのカウントを取得するかを指定します。
  2. データベースを照会し、指定された時間に関するレコードがいくつ存在するかを判別します。
  3. 応答メッセージをフォーマット設定します。
  4. WebSphere MQ メッセージを書き出します。

VerifyDatabaseContents メッセージ・フローは、以下のノードから構成されています。

VerifyDatabaseContents メッセージ・フローの画面取り

Data_Warehouse_Verify_Contents_In_Q MQInput ノードは XML メッセージを読み取ります。 着信メッセージは自己定義型 XML 形式なので、メッセージが正常に解析されるようにメッセージ・セットやメッセージ・フォーマットを指定する必要はありません。

Verify_Contents Compute ノードは、以下のアクションを実行します。

  1. 着信メッセージから、データベース照会に使用する開始日時と終了日時を抽出します。
  2. アーカイブ・データベース表に対して SQL SELECT ステートメントを発行して、指定された時刻範囲内に存在するレコードの数を判別します。
  3. 応答メッセージをフォーマット設定します。

Data_Warehouse_Verify_Contents_Out_Q MQOutput ノードは、WebSphere MQ 出力メッセージを書き出します。

データベースの処理中にエラーが起きた場合、メッセージが Create_Error_Message Compute ノードでフォーマット設定されて、Data_Warehouse_Failure_Q MQOutput ノードで WebSphere MQ メッセージとして書き出されます。

テスト・メッセージ

このサンプルでは、2 つのメッセージが使用されます。

以下の例は、両方の種類のメッセージを示しています。

アーカイブされるメッセージ

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

検索日時を指定するメッセージ

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

サンプルのホームに戻る