Data Warehouse 샘플 정보

Data Warehouse 샘플은 메시지 플로우를 사용하여 판매 데이터와 같은 데이터를 데이터베이스에 아카이브하는 시나리오를 예시하는 메시지 플로우 샘플 응용프로그램입니다. 이 데이터는 나중에 다른 메시지 플로우나 응용프로그램에서 분석되기 위해 저장됩니다.

판매 데이터가 이후 날짜에 분석되므로 메시지의 저장영역은 지정된 시간의 레코드를 선택하기 쉬운 방법으로 구성되었습니다. 판매 레코드가 들어 있는 WebSphere MQ 메시지가 쓰여진 날짜 및 시간은 메시지가 데이터베이스에 삽입될 때 별도의 열 값으로 저장됩니다. 데이터베이스 테이블에는 네 개의 열이 있습니다.

이 방법으로 데이터를 저장하면 특정 기간의 시간 간의 레코드를 검색할 수 있습니다. 예를 들어, 오전 9시 정각부터 오후 12시 정각  또는 오후 12시 1분과 오후 5시 정각의 시간 사이를 말하며 오전과 오후 판매를 비교해 볼 수 있도록 합니다.

추가 날짜 및 시간 열을 사용하지 않으면 응용프로그램은 데이터베이스에서 모든 레코드를 읽고 이들 레코드를 모두 조사한 후, 해당 레코드는 처리하고 나머지는 버려야 합니다. 정확하고 제어된 방법으로 레코드를 검색할 수 있으면 모든 레코드를 읽어야 할 경우 나타나는 대량의 처리를 낭비하지 않을 수 있습니다.

이 샘플에서는 메시지 또는 메시지의 일부를 데이터베이스로 아카이브하기 위한 한 가지 기술을 설명합니다. 이는 데이터를 아카이브할 필요가 있을 때 일반적으로 보다 복잡한 메시지 플로우의 일부로 포함되는 처리 유형입니다.

이 샘플에서 처리는 두 개의 메시지 플로우로 구성됩니다. 메시지 플로우는 다음과 같습니다.

메시지 플로우의 세부사항 및 이들 메시지 플로우가 수행하는 처리는 다음과 같습니다.

WarehouseData 메시지 플로우

WarehouseData 메시지 플로우는 다음 처리를 수행합니다.

  1. XML 페이로드를 포함하는 WebSphere MQ 메시지를 읽습니다. 이 페이로드는 아카이브될 데이터를 포함합니다.
  2. 메시지 트리의 일부를 데이터베이스에 삽입하기 위한 BLOB로 변환합니다.
  3. 메시지 BLOB를 메시지 WebSphere MQ가 쓰여진 날짜 및 시간과 함께 데이터베이스에 삽입합니다.
  4. WebSphere MQ 확인 메시지를 송신하여 데이터베이스에 메시지가 성공적으로 삽입되었음을 신호합니다.

WarehouseData 메시지 플로우는 다음 노드로 구성됩니다.

WarehouseData 메시지 플로우의 화면 캡처.

MQInput 노드 DATAWAREHOUSE_IN_Q는 XML 메시지를 읽습니다. 수신되는 메시지가 자체 정의 XML 형식이므로 메시지 세트를 지정하거나 올바르게 구문 분석되도록 형식화할 필요가 없습니다.

Compute 노드 Warehouse_Input_Message는 ASBITSTREAM 기능을 사용하여 전체 메시지 페이로드(ROOT.XML)를 BLOB으로 변환한 후, 이 메시지를 데이터베이스에 삽입하고 마지막으로 확인 메시지를 형식화합니다.

MQOutput 노드 DATAWAREHOUSE_OUT_Q는 WebSphere MQ 메시지로 출력 메시지를 씁니다.

데이터베이스 처리 중 오류가 발생하면 메시지는 Compute 노드 Create_Error_Message에서 형식화되어 WebSphere MQ 메시지로 MQOutput 노드 DATAWAREHOUSE_FAILURE_Q에 쓰여집니다.

VerifyDatabaseContents 메시지 플로우

VerifyDatabaseContents  메시지 플로우는 다음 처리를 수행합니다.

  1. 레코드 수를 확보할 간격(시작 및 종료 시간)을 지정하는 XML 페이로드가 들어 있는 WebSphere MQ 메시지를 읽습니다.
  2. 데이터베이스를 조회하여 지정된 시간 동안 몇 개의 레코드가 표시되는지 판별합니다.
  3. 응답 메시지를 형식화합니다.
  4. WebSphere MQ 메시지를 씁니다.

VerifyDatabaseContents 메시지 플로우는 다음 노드로 구성됩니다.

VerifyDatabaseContents 메시지 플로우의 화면 캡처.

MQInput 노드 DATAWAREHOUSE_VERIFY_CONTENTS_IN_Q는 XML 메시지를 읽습니다. 수신되는 메시지가 자체 정의 XML 형식이므로 메시지 세트를 지정하거나 올바르게 구문 분석되도록 형식화할 필요가 없습니다.

Compute 노드 Verify_Contents는 다음 조치를 수행합니다.

  1. 수신되는 메시지에서 데이터베이스 조회에 사용할 시작 및 종료 날짜와 시간을 추출합니다.
  2. 아카이브 데이터베이스 테이블에 대해 SQL SELECT문을 발행하여 지정된 시간 범위에 레코드가 표시되는 방법을 판별합니다.
  3. 응답 메시지를 형식화합니다.

MQOutput 노드 DATAWAREHOUSE_VERIFY_CONTENTS_OUT_Q는 WebSphere MQ 출력 메시지를 씁니다.

데이터베이스 처리 중 오류가 발생하면 메시지는 Compute 노드 Create_Error_Message에서 형식화되어 WebSphere MQ 메시지로 MQOutput 노드 DATAWAREHOUSE_FAILURE_Q에 쓰여집니다.

테스트 메시지

이 샘플에서는 두 개의 메시지가 사용됩니다. 첫 번째 메시지는 아카이브될 메시지이고 두 번째 메시지는 Verify Database Content 메시지 플로우에서 사용되는 날짜 및 시간을 지정하기 위한 메시지입니다. 이들 두 메시지의 예는 다음과 같습니다.

아카이브될 메시지

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

기본 페이지 아이콘   샘플 홈으로 돌아가기