JDBC Sender - Advanced tab
- DB의 데이터를 JDBC로 access시, 데이터의 정합성/일치성 을 보장하기 위한 기능
- 데이터의 정합성과 관련된 3가지 이슈를 피하기 위한 방법
- Dirty / NonRepeatable / Phantom Read
Dirty / NonRepeatable / Phantom Read
- Dirty Read (Commit하지 않은 데이터에 대한 접근성 결정)
- 어떤 트랜잭션 T1이 다른 트랜잭션 T2의 commit하지 않은 데이터를 읽음
- 트랜잭션 T2가 실행한 쿼리를 rollback하는 경우 T1이 읽은 데이터는 Dirty
- NonRepeatable Read(동일한 트랜잭션에서 동일한 쿼리에 대한 검색되는 데이터의 일관성 여부 결정)
- 어떤 트랜잭션 T1이 쿼리를 수행중임 (commit하지 않은 생태)
- 다른 트랜잭션 T2가 데이터를 수정 후, T1이 같은 쿼리를 수행하면 다른 값을 얻게 됨 (트랜잭션 실행 중 Update 혹은 Delete로 데이터의 변형이 생기는 경우 발생)
- Phantom Read (트랜잭션 실행 중 Insert로 데이터 행이 추가된 경우)
- 어떤 트랜잭션 T1이 쿼리를 발생하여 조건에 맞는 row의 sets을 검색 중
- 다른 트랜잭션 T2가 같은 테이블에서 다른 row의 sets(T1이 검색하고 있지 않은 row의 sets)의 데이터를 변경 후 트랜잭션 종료
- T2가 변경한 값이 T1의 조건절에 영향을 주는 데이터 값으로, 종료되지 않은 T1이 같은 쿼리를 실행했을 경우, 처음보다 많은 row의 sets을 검색하게 되는 경우
Transaction Isolation Level 종류
- DB의 정합성을 위해 레코드 단위로 rock을 설정하면 되지만 심각한 성능저하 발생
- 상황에 맞는 적절한 설정 필요 함
구분 |
Dirty read |
Nonrepeatable read |
Phantom read |
Default (*) |
/ |
/ |
/ |
None (**) |
/ |
/ |
/ |
read_uncommitted |
Allowed |
Allowed |
Allowed |
read_committed(***) |
Prevented |
Allowed |
Allowed |
repeatable_read |
Prevented |
Prevented |
Allowed |
serializable |
Prevented |
Prevented |
Prevented |
- 데이터의 정합성이 어긋나는 상황을 피하기 위해 레코드 단위로 rock을 설정하면 병렬 처리 안됨
- read_uncommitted < read_committed < repeatable_read < serializable 순으로 성능 좋음
- (*) DB에 세팅된 isolation level을 따름
- (**) JDBC 드라이버가 트랜잭션을 지원하지 않는 경우 선택 함
- (***) Oracle DB의 default isolation level은 read_committed 임
Other options
- Database Auto-Commit-Enabled (No Transaction Handling)
- JDBC 드라이버가 트랜잭션을 지원하지 않을 경우 체크 (LUWs 비활성화) 이 경우 DB 데이터의 정합성을 보장하기 위한 대안이 반드시 필요함
- Disconnection from Database After Processing Each Message
- 이 옵션을 선택하면 Poll Interval 마다 DB의 연결을 재 접속함
- Remove Empty Tags
- 데이터 폴링시 값이 비어있는 필드는 제거함(xml 문서의 용량 감소 용도)
JDBC Receiver - Processing tab
- Maximum Concurrency
- 병렬 처리할 수 있는 메시지 수
- XML Schema Interpreter
- Key Tag Mandatory
- key tag가 필수일 경우 체크
- Interpretation of Empty String Value
- Null Value : DB에 INSERT 안됨
- Empty String : DB에 INSERT 됨
- Run Operating System Command
- Command Line
- DB 동작 성공 후 실행할 명령어 입력
- Timeout(secs)
- Background 동작 대기시간
- Terminate Program After Timeout
- Background 동작 없이 종료
JDBC Receiver - Advanced tab
- Number of Retries of Database Transaction on SQL Error
- SQL exception 발생시 DB 연결 재시도 수
- Batch Mode
- SQL을 일괄 실행 / 성능향상
- Specify additional Parameter Names & Values
- Refer to SAP Note 801367
- Date/Time Format for Stored-Procedure Calls
- SP call에서 사용하는 날짜/시간 포맷 정의
Reference
- Configuring the JDBC Adapter in the Integration Directory
http://help.sap.com/saphelp_nwpi71/helpdata/en/22/b4d13b633f7748b4d34f3191529946/frameset.htm
- Transaction Isolation Level
http://blog.naver.com/harksoo1974?Redirect=Log&logNo=70128194974
'EAI > XI/PI' 카테고리의 다른 글
[XI/PI] EOIO IF 에러시 처리 방법 (0) | 2014.04.15 |
---|---|
[XI/PI]Archiving and Deletion of Messages in PI (0) | 2013.09.23 |
[XI/PI] Client 001 already configured as Integration Server (0) | 2013.09.11 |
[XI/PI] Custom Adapter Module Guide (0) | 2013.08.23 |
[XI/PI] JDBC to Proxy Step by Step (동영상/Video) (0) | 2013.08.22 |