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


Posted by INSPIEN
,