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"입니다. 지정된 관계에 대해 관계 표시 이름은 동일하지만 역할 표시 이름과 uuid가 다른 두 개의 뷰를 갖습니다.
주: Oracle 데이터베이스의 경우 이름 지정 규칙이 이와 다릅니다. relationship_display_namerole_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 번호 아니오

예제

여기에 제공된 이 예제는 세 개의 엔터프라이즈 응용프로그램에서 가져온 세 개의 데이터 세트가 있는 ID 관계입니다.
  • Clarify
  • SAP
  • Siebel
데이터는 WebSphere® ESB 관계 서비스를 사용하여 상관시킵니다. 각 응용프로그램에는 각 응용프로그램 간 정보를 상관시키기 위해 ID 관계를 사용하는 유사한 고객 정보가 있습니다.

다음 세 개의 표는 각 데이터베이스에 저장된 데이터를 나타냅니다.

표 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 문자열 firstName 문자열 fullName 문자열
lastName 문자열 lastName 문자열    
homePhone 문자열 homePhone 문자열 homePhone 문자열
clarifyId 문자열 sapId 문자열 siebelId 문자열
각 데이터베이스 간 고객 정보를 상관시키기 위해 ID 관계가 정의됩니다. 이 관계(이 예제에서는 ID라고 함)에서는 비즈니스 오브젝트 요소 clarifyId, sapIdsiebelId를 사용합니다. 이러한 요소에는 각 데이터베이스의 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
정의된 관계를 사용하여 세 데이터베이스 모두에 포함된 비즈니스 오브젝트에서 데이터를 상관시킬 수 있습니다. 각 데이터베이스의 고객 ID 데이터는 인스턴스 ID를 공유하여 다른 데이터베이스의 고객 데이터와 상관됩니다. 예를 들어, Tara McLean은 Clarify에서는 clarify_3 ID로, SAP에서는 sap_8로, Siebel에서는 siebel_8로 식별됩니다. 고유 ID는 WebSphere ESB 관계 서비스에서 생성됩니다.
주: Derby 데이터베이스에서 뷰를 사용하여 관계 인스턴스를 조작할 수는 없습니다. 그러나 뷰를 사용하여 관계 테이블 내용을 찾아볼 수 있습니다.
Common 데이터베이스에서 작성된 뷰를 사용하여 여러 관계 인스턴스를 정의할 수 있습니다. 해당 관계 역할에 대한 뷰 이름(이전에 설명한 이름 지정 규칙 사용)의 맵핑은 Common 데이터베이스의 RELN_VIEW_META_T 테이블에서 캡처됩니다. 다음 표에서는 ClarifyCustomer, SapCustomerSiebelCustomer 역할에 대한 뷰 이름의 예제에 대해 설명합니다.
표 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
표 1에 설명된 뷰 열 정의에는 다음 특성이 있는 ROLE_ATTRIBUTE_COLUMN이 포함됩니다.
표 8. 뷰 열 정의
열 이름 데이터 유형 설명
KEY_ATTRIBUTE_NAME 키 속성 유형에 따라 다름 널이 아님 역할 인스턴스 데이터가 저장됩니다. ID 관계의 경우 열 이름은 키 속성 이름으로 지정됩니다. 예를 들어, SAPCUSTOMER_SAPID에서는 sapid를 키 속성 이름으로 사용하고 sapcustomer를 비즈니스 오브젝트 이름으로 사용합니다. 각각의 키 속성에 대해 하나의 열이 정의됩니다. 정적 관계의 경우 열 이름은 DATA로 지정됩니다.
다음 표에서는 ID 관계에 대한 Common 데이터베이스의 뷰에 대해 설명합니다.
표 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문을 사용하여 데이터를 복사할 수 있습니다.
//Create a table to store ID values from all three applications for each customer, 
//and associate a unique instance ID with each customer. Use this table as a base 
//source table to populate relationship tables.
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)

//Compare the name and home phone number across the three application tables. 
//If a match is found, insert that person's ID value from each application table 
//into the joint_t table. Associate the three ID values to a unique ID; this 
//ID will be used later as the relationship instance 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

//Create a sequence for each application; this sequence will be 
//used later as a role ID in each role table.
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

//Populate the role instance table for the CLARIFY role.
INSERT INTO V_ID_CLARIFYCUSTOMER_098 (instanceid, roleid,
  clarifycustomer_clarifyid, status, logical_state, logical_state_timestamp,
  create_timestamp, update_timestamp)
FROM joint_t

//Populate the role instance table for the SAP role.
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

//Populate the role instance table for the SIEBEL role.
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년 7월 7일 수요일


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.
이 Information Center는 Eclipse 기술을 기반으로 합니다(http://www.eclipse.org 웹 사이트 참조).