Jump to content
과거의 기술자료(읽기 전용): https://tech.devgear.co.kr ×
과거의 기술자료(읽기 전용): https://tech.devgear.co.kr

체인지 뷰스 요구사항과 제약사항 (Change Views Requirements and Constraints)


Recommended Posts

Docwiki에 있는 "Change Views Requirements and Constraints"을 번역한 글(최종 번역일: 2022년 8월 18일)

<< 위로 가기: 체인지 뷰스 (Change Views)

(역자 주: 2022년 8월 시점에서 인터베이스의 체인지 뷰스에 있는 제약 사항 즉, 해법이 필요한 요구 사항들이다)

제약조건 확인 지연 (Deferred Constraint Checking)

체인지 뷰스(Change Views) 기능은 원본 데이터베이스 안에서 발생한 변경의 순서 (sequence 또는 order)를 획득(capture)하지 않는다. 이 진술(statement)은 테이블 하나 안에서 뿐만 아니라 서로 다른 여러 테이블에 걸쳐서 발생된 변경에서도 마찬가지로 똑같이 적용된다. 의사-컬럼(pseudo-column)인 RECORD_VERSION 또는 TRANSACTION_ID를 노출하고 해당 컬럼을 기준으로 정렬하는 방식으로 대충 변경 순서를 짐작할 수는 있다. 하지만 이렇게 짐작한 결과가 모든 사용 사례에서 언제나  정확한 순서를 알려준다고 확신해서는 안된다. 구독을 하나 또는 그 이상 사용하여 동기화 매커니즘을 구현하는 경우에는, 제약조건(constraint) 확인을 충족해야 하는데 그러기 위해서는 변경이 발생한 순서가 중요할 수 있다. 인터베이스는 제약조건 확인 시 IMMEDIATE 만을 지원한다. 인터베이스에서 DEFERRED 제약조건 확인을 지원해야 한다는 요구사항이 있다. 그래야 목적지(destination) 데이터베이스에서 다양한 제약조건이 작동되고 있는 경우에도 구독 변경을 문제없이 적용할 수 있다.

트리거 비활성화 (Trigger Inactivation)

인터베이스에서는 "기명 트리거(named trigger)"를 비활성화 하도록 선언할 수 있다. 구독된 변경 사항이 목적지(destination) 데이터베이스에 적용될 때 트리거가 발동하지 않도록 방지해야 하는 상황이 있을 수 있기 때문이다. 트리거 비활성화 여부는 애플리케이션에 따라 알맞게 결정하면 된다. 하지만 지금 언급하는 트리거 비활성화는 그 범위(scope)를 해당 데이터베이스 세션 하나로만 제한해야 한다. 인터베이스는 해당 트리거를 해당 데이터베이스에 연결하는 모든 데이터베이스 세션에서 비활성화 한다. 작동 범위 제한이 필요하다는 요구사항이 있다. 만약 구현된다면, 제약조건 지연 (Deferred Constraint)이 요구되는 것과 마찬가지 일 것이다.

다음 단계 (Advance To)

이 댓글 링크
다른 사이트에 공유하기

이 토의에 참여하세요

지금 바로 의견을 남길 수 있습니다. 그리고 나서 가입해도 됩니다. 이미 회원이라면, 지금 로그인하고 본인 계정으로 의견을 남기세요.

Guest
이 토픽(기고/질문)에 답하기

×   서식있는 텍스트로 붙여넣기.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   이전에 작성한 콘텐츠가 복원되었습니다..   편집창 비우기

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...

중요한 정보

이용약관 개인정보보호정책 이용규칙 이 사이트가 더 잘 작동하기 위해 방문자의 컴퓨터에 쿠키가 배치됩니다. 쿠키 설정 변경에서 원하는 설정을 할 수 있습니다. 변경하지 않으면 쿠키를 허용하는 것으로 이해합니다.