WebSphere Enterprise Service Bus バージョン 6.2.0 オペレーティング・システム: AIX、HP-UX、i5/OS、Linux、Solaris、Windows


データベース・ビューを使用したリレーションシップ・データの照会

データベースのビューを使用して、リレーションシップ・マネージャーを使用せずにリレーションシップ・データを照会することができます。

データベース・ビューを使用して、データベースに保管されたリレーションシップ・データを直接照会できます。 新規のリレーションシップ・データベース表を作成すると、対応する SQL ビューが自動的に作成されます。これらのビューは基本的に、データベース表に保管されたリレーションシップ・データをカプセル化したものです。 これらのビューを以下の方法で使用すると、リレーションシップ・データの取り込みや照会を実行できます。 いずれの場合も、表と同じように SQL ビューを使用できます。 この手法をリレーションシップ・マネージャー・アプリケーションに代わる方法として使用すると、SQL ステートメントを使用して、アプリケーション固有の大量のデータ一式をリレーションシップ・データベースに直接取り込むことができます。この手法は、フラット・テキスト・ファイルからデータベース表へデータをインポートするときにも使用できます。
リレーションシップ・データベース SQL ビューは、データ・ソースの他の場所に配置された表に含まれるデータに基づいて作成されます。 このビューは、データベース表自体が空であったとしても存在します。 ビューにはそれぞれに固有の名前があります。名前は "V_"+relationship_display_name+"_"role_display_name+"_"+uuid という命名規則に従います (変数は下線文字 "_" で連結されることに注意してください)。 表示名は両方とも最大 20 文字の英数字で、UUID は両方の表示名の組み合わせから生成された数値です。 したがって、各ビュー名は、データ・ソース内で固有となります。 この命名規則に従って、例えば以下の変数を使用したとします。 この場合、ビュー名は "V_SAMPLECUSTID_MYCUSTOMER_80C" となります。 それぞれのリレーションシップには、2 つの対応するビューがあります。この 2 つのビューには同じリレーションシップ表示名が含まれる一方、ロールの表示名と UUID はそれぞれに異なります。
注: Oracle データベースの場合の命名規則は、relationship_display_name および role_display_name の最初の 10 文字のみが使用されるという点で異なります。

各ビューには、以下の表に記載する列 (タイプ、値、ヌル可能の関連プロパティーを含む) が含まれます。

表 1. リレーションシップ・データベース・ビューの列
名前 データ・タイプ ヌル可能かどうか
INSTANCEID 整数 異なるアプリケーション間でインスタンス・データを相関させるために使用する ID 番号。 いいえ
ROLE_ATTRIBUTE
_COLUMNS
  • 動的リレーションシップ - ビジネス・オブジェクトで定義
  • 静的リレーションシップ - DATA
  • 動的リレーションシップ - ビジネス・オブジェクトで定義
  • 静的リレーションシップ - VARCHAR
列名と列タイプはロール定義に依存します。 列名はキー属性名に基づく一方、列タイプは、ロール定義で定義されたキー属性タイプを基にマップされたデータベース・データ・タイプです。 いいえ
STATUS 整数 0-4
  • 0 – 作成
  • 1 – 更新
  • 2 – 削除
  • 3 – アクティブ化
  • 4 – 非アクティブ化
注: ビューを使用してインスタンスを設定する場合には、この列の値が 0 であることを確認してください。
はい
LOGICAL_STATE 整数
  • 0 = アクティブ化
  • 1 = 非アクティブ化

データベースにデータを設定するときには、適切な値が設定されることを確実にしてください。

いいえ
LOGICAL_STATE_TIMESTAMP タイム・スタンプ 論理状態列のデータが最後に更新された日時。 はい
CREATE_TIMESTAMP タイム・スタンプ ロール・インスタンスが作成された日時。 はい
UPDATE_TIMESTAMP タイム・スタンプ ロール・インスタンスが最後に更新された日時。 はい
ROLEID 整数 ロール・インスタンスを識別するために使用する ID 番号。 いいえ

以下に示す例は、次の 3 つのエンタープライズ・アプリケーションから出力される 3 組のデータを含む ID リレーションシップです。
  • Clarify
  • SAP
  • Siebel
データは、WebSphere® ESB リレーションシップ・サービスにより関係付けられます。各アプリケーションには、類似したカスタマー情報と、各アプリケーション間の情報を関係付ける ID リレーションシップが格納されます。

以下の 3 つの表に、各データベース内部に保管されるデータを示します。

表 2. Clarify カスタマー
自宅電話番号 ID
Jessica Reed 111 111 11111 clarify_1
Tara McLean 333 333 33333 clarify_2
表 3. SAP カスタマー
自宅電話番号 ID
Jessica Reed 111 111 11111 sap_10
Tara McLean 333 333 33333 sap_8
表 4. Siebel カスタマー
氏名 自宅電話番号 ID
Jessica Reed 111 111 11111 siebel_6
Tara McLean 333 333 33333 siebel_8

カスタマー・ビジネス・オブジェクト定義の名前およびエレメント (WebSphere Integration Developer でデータベースごとに作成される) を次の表に示します。

表 5. 各データベースでのカスタマーのビジネス・オブジェクト定義
ClarifyCustomer SapCustomer SiebelCustomer
エレメント タイプ エレメント タイプ エレメント タイプ
givenName string firstName string fullName string
lastName string lastName string    
homePhone string homePhone string homePhone string
clarifyId string sapId string siebelId string
ID リレーションシップは、各データベース間の情報を関係付けるために定義されます。このリレーションシップ (この例での呼び方は ID) では、ビジネス・オブジェクト・エレメント clarifyIdsapId、および siebelId を使用します。これらのエレメントが使用される理由は、エレメントに各データベースの ID データが含まれており、そのデータがカスタマーごとに固有であるためです。以下の表は、リレーションシップ内の異なるデータベースを、WebSphere ESB で使用される共通 ID に関係付けるために使用されるロールについて説明しています。
表 6. ID リレーションシップの定義
リレーションシップ名 ロール名 ビジネス・オブジェクト名 キー
ID GenCustomer GenCustomer genId
ClarifyCustomer ClarifyCustomer clarifyId
SapCustomer SapCustomer sapId
SiebelCustomer SiebelCustomer siebelId
フル・リレーションシップ名は http://CustomerModule/ID です。フル・ロール名は以下のとおりです。
  • http://CustomerModule/ClarifyCustomer
  • http://CustomerModule/SapCustomer
  • http://CustomerModule/SiebelCustomer
3 つのデータベースすべてに格納されているビジネス・オブジェクト内部のデータを、定義済みのリレーションシップを使用することによって互いに関係付けることができます。各データベースのカスタマー ID データは、インスタンス ID を共用することにより、他のデータベースのカスタマー・データと関係付けることができます。例えば、Tara McLean は Clarify では clarify_3 ID で、SAP では sap_8 で、Siebel では siebel_8 で、それぞれ識別されます。固有の ID は、WebSphere ESB リレーションシップ・サービスによって生成されます。
注: Derby データベースのビューを使用してリレーションシップ・インスタンス表を操作することはできません。ただし、このビューを使用してリレーションシップ表の内容を表示することはできます。
共通データベースで作成したビューを使用することにより、複数のリレーションシップ・インスタンスを定義できます。(前述の命名規則を使用した) ビュー名からそれに対応するリレーションシップ・ロールへのマッピングは、共通データベースの RELN_VIEW_META_T 表に取り込まれます。以下の表に、ClarifyCustomerSapCustomer、および SiebelCustomer ロールのビュー名の例を示します。
表 7. RELN_VIEW_META_T 表
VIEW_NAME RELATIONSHIP_NAME ROLE_NAME
V_ID_CLARIFYCUSTOMER_098 http://CustomerModule/ID http://CustomerModule/ClarifyCustomer
V_ID_SAPCUSTOMER_515 http://CustomerModule/ID http://CustomerModule/SapCustomer
V_ID_SIEBELCUSTOMER_411 http://CustomerModule/ID http://CustomerModule/SiebelCustomer
V_USASTATE_ ABBREVIATION_DE8 http://CustomerModule/USASTATE http://CustomerModule/Abbreviation
V_USASTATE_CODE_B32 http://CustomerModule/USASTATE http://CustomerModule/Code
V_USASTATE_NAME_933 http://CustomerModule/USASTATE http://CustomerModule/FullName
表 14 に説明されているビューの列定義には、以下のプロパティーと共に ROLE_ATTRIBUTE_COLUMN が入ります。
表 8. ビューの列定義
列名 データ型 説明
KEY_ATTRIBUTE_NAME キー属性タイプにより異なる ヌル以外 これは、ロール・インスタンス・データの格納先です。ID リレーションシップの場合、列の名前はキー属性の名前になります。例えば、SAPCUSTOMER_SAPID では、キー属性名として sapid を使用し、ビジネス・オブジェクト名として sapcustomer を使用します。キー属性ごとに 1 つの列を定義します。 静的リレーションシップの場合、列の名前は DATA になります。
以下の表では、ID リレーションシップの共通データベースでのビューを示します。
表 9. ビューの列定義
Clarify ロールのビュー SAP ロールのビュー Siebel ロールのビュー
INSTANCEID INSTANCEID INSTANCEID
CLARIFYCUSTOMER_CLARIFYID SAPCUSTOMER_SAPID SIEBELCUSTOMER_SIEBELID
STATUS STATUS STATUS
LOGICAL_STATE LOGICAL_STATE LOGICAL_STATE
LOGICAL_STATE_TIMESTAMP LOGICAL_STATE_TIMESTAMP LOGICAL_STATE_TIMESTAMP
CREATE_TIMESTAMP CREATE_TIMESTAMP CREATE_TIMESTAMP
UPDATE_TIMESTAMP UPDATE_TIMESTAMP UPDATE_TIMESTAMP
ROLEID ROLEID ROLEID
注: このビューの列名は、キー属性の列名を除き、すべて一致します。
ビューに対して SQL を実行し、ロール・インスタンス・データを操作するには、ロールの実行時テーブル・ビューの名前を知っておく必要があります。以下の SQL スクリプトは、DB2 Universal Database™ の使用例を示しています。この例では、各データベースのすべてのデータがリレーションシップ・データベースにコピーされていることが前提になっています。データをコピーするには、SELECT INTO SQL ステートメントを使用します。
// 3 つすべてのアプリケーションからの ID 値をカスタマーごとに保管する表を作成し、
// 固有のインスタンス ID を各カスタマーと関連付けます。
// この表を基本のソース表として使用し、
// リレーションシップ表にデータを取り込みます。
CREATE TABLE joint_t (instanceid INTEGER NOT NULL GENERATED ALWAYS AS IDENTITY,
clarify_id VARCHAR(10) NOT NULL,
sap_id VARCHAR(10) NOT NULL,
siebel_id VARCHAR(10) NOT NULL)

// 名前と自宅電話番号を 3 つのアプリケーション表にまたがって比較します。
// 一致する人物が見つかったら、その人物の ID 値を各アプリケーション表から
// joint_t 表に挿入します。3 つの ID 値を固有 ID に関連付けます。この ID は、
// 後でリレーションシップ・インスタンス ID として使用します。
INSERT INTO joint_t (clarify_id,sap_id,siebel_id)
SELECT A.ID, B.ID, C.ID
FROM clarifycustomer A,sapcustomer B, siebelcustomer C
WHERE A.homephone=B.homephone AND
B.homephone=C.homephone, AND
B.givenname=C.firstname AND
B.lastname=C.lastname AND 
A.fullname=C.firstname CONCAT ' ' CONCAT C.lastname

// 各アプリケーションのシーケンスを作成します。このシーケンスは、後で
// 各ロール表のロール ID として使用します。
CREATE SEQUENCE clarify_roleid MINVALUE 1 ORDER CACHE 100
CREATE SEQUENCE sap_roleid MINVALUE 1 ORDER CACHE 100
CREATE SEQUENCE siebel_roleid MINVALUE 1 ORDER CACHE 100

// CLARIFY ロールのロール・インスタンス表にデータを取り込みます。
INSERT INTO V_ID_CLARIFYCUSTOMER_098 (instanceid, roleid,
  clarifycustomer_clarifyid, status, logical_state, logical_state_timestamp,
  create_timestamp, update_timestamp)
FROM joint_t

// SAP ロールのロール・インスタンス表にデータを取り込みます。
INSERT INTO V_ID_SAPCUSTOMER_515 (instanceid, roleid, sapcustomer_sapid,
  status, logical_state, logical_state_timestamp, create_timestamp,
  update_timestamp)
SELECT instanceid NEXTVAL FOR sap_roleid, sap_id, 0, 0, current
  timestamp, current timestamp, current timestamp
FROM joint_t

// SIEBEL ロールのロール・インスタンス表にデータを取り込みます。
INSERT INTO V_ID_SIEBELCUSTOMER_AFC (instanceid, roleid, siebelcustomer_siebelid,
  status, logical_state, logical_state_timestamp, create_timestamp, update_timestamp)
SELECT instanceid, NEXTVAL FOR siebel_roleid, sap_id, 0, 0, current timestamp,
  current timestamp, current timestamp
FROM joint_t
joint_t 表は、キー値を一時的に保管するために作成されます。リソースの保存が終了したら、必要に応じて表を削除できます。または、ビュー・テーブルまたは一時テーブルを作成することもできます。

concept 概念トピック

ご利用条件 | フィードバック


タイムスタンプ・アイコン 最終更新: 2010/07/05


http://publib.boulder.ibm.com/infocenter/dmndhelp/v6r2mx/topic//com.ibm.websphere.wesb620.doc/doc/cadm_relationship_database.html
Copyright IBM Corporation 2005, 2010. All Rights Reserved.
このインフォメーション・センターでは Eclipse テクノロジーが採用されています (http://www.eclipse.org)。