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

인터베이스의 체인지 뷰스(Change Views)를 사용하여 변경 추적하기


Recommended Posts

매리 켈리 (Mary Kelly)"Tracking Changes with InterBase Change Views" 를 번역했습니다. (원문 작성: 2021년 8월, 최종 번역: 2022년 08월 19일)

데이터베이스 안에서 발생하는 변경(들)을 추적할 수 있게 만드는 작업은 시간을 많이 소요되고 절차가 지루하며 어떤 환경에서는 데이터베이스의 성능에 영향을 주어 사용자의 생산성을 떨어뜨리기도 한다. 인터베이스(InterBase)에는 이러한 변경 추적에 대한 해결책을 손쉽게 구현할 수 있는 기능이 있다.

체인지 뷰스(Change Views)란 무엇인가?

체인지 뷰스(Change Views)는 특허받은 방법으로써 구독(subscription)을 바탕으로 하는 모델을 사용하여 데이터베이스 안에서 무슨 데이터가 변경되었는 지를 식별(identify)한다. 

먼저 구독(subscription)을 하나를 만들어서 그 구독 안에 서로 다른 테이블(들)과 컬럼(들)을 포함시킨다. 그리고 나서 사용자(들)에게 그 구독에 대한 사용 권한을 부여하여 그 구독의 범위 안에 있는 데이터의 변경(들)을 받을 수 있도록 한다.  로그(log) 테이블이나 외부 파일이 필요없고, 내부에서 추적하기 때문에 설정(setup)이 매우 깔끔하다. 변경 내역이 당신의 데이터베이스 안에 안전하게 보관되므로 (다른 사람들이 접근할 수도 있는) 내부 파일들을 찾아해맬 필요가 없다.

오직 해당 데이터 변경을 구독하는 사용자(들) 만이 실제로 (자신들을 위해) 자신들에게 제공되는 변경(들)을 볼 수 있다.

구독(subscription)은 연결 하나를 유지하고 있는 동안 (during a connection) 작동할 뿐만 아니라 연결을 확장하여 새로 연결 (spanning a connection)을 해도 작동한다. 따라서 연결 하나를 유지하고 있는 동안 (during a connection), 당신은 데이터베이스로부터 알림(alert)을 받을 수 있다. 그러면 변경된 부분 (delta change) 들을 받아오면 된다. 따라서 만약 당신이 레코드 수천개를 받는 경우라면, "해당 테이블에 변경이 있었다"고 말해주는 메시지를 받고 체인지 뷰스(Change Views)를 사용하여 해당 변경 부분 (delta)만 받을 수 있다. 데이터 수천개를 모두 조회할 필요가 없다. 따라서 시간이 절약되고 네트워크를 통해 이동하는 데이터의 양도 줄어든다.

연결을 확장하여 새로 연결 (spanning a connection)을 하는 방식에서, 정말 멋진 점은 당신은 해당 변경(들)을 기록하기 위해 연결을 계속 유지하지 않아도 된다는 사실이다. 일단 당신이 데이터베이스 트랜잭션을 하나 시작하고 나면 당신은 구독을 활성화할 수 있다. 그리고 나서 데이터베이스와 연결을 끊고 이후 원하는 시점에 다시 새 트랜잭션을 새 연결에 담아서 시작할 수 있다. 

개발자들은 데이터를 변경한 경우, 해당 변경을 업데이트 할 때마다 해당 데이터를 받아온다. 체인지 뷰스(Change Views)를 사용하면 해당 필드(field, 즉 컬럼) 수준에서 무슨 변경이 있었는 지를 구체적으로 식별할 수 있다. 따라서 개발자는 변경된 데이터를 묶어서 보내기만 하면 된다.  체인지 뷰스(Change Views)를 사용하여 얻을 수 있는 유익한 점들은 다음과 같다.

  • 모바일 장비를 위한 데이터 동기화가 최소화되기 때문에 비용과 디스크 I/O가 줄어든다
  • 성능에 미치는 영향이 매우 적다
  • 외부 로그(log) 테이블이 필요없다
  • 확장성(scalability) 면에서 더 많은 사용자를 커버할 수 있도록 늘릴 수 있다
  • 원하는 방식으로 변경을 추적한다

체인지 뷰스(Change Views)를 사용하여 동기화는 경우에서, 로컬(사용자 장비)과 서버(데이터베이스) 사이에 변경(the changes) 만 옮겨서 정확한 최신 데이터가 유지되도록 한다!


체인지 뷰스(Change Views)를 설정하는 방법

체인지 뷰스를 팔로우(follow)하기 위해서는 크게 두(2) 단계가 필요하다. 데이터베이스 서버에 구독(subscriptions)을 설정하는 단계와 당신의 애플리케이션에 컴포넌트 몇개를 추가하는 단계이다.

서버

  • 구독(subscription)을 생성한다.
  • 구독할 데이터를 테이블과 컬럼/필드 수준으로 명시한다.
  • 구독 접근(access) 권한을 부여 (grant)한다.

CREATE SUBSCRIPTION 예문

CREATE SUBSCRIPTION sub_employee_changes ON
     EMPLOYEE (EMP_NO, DEPT_NO, SALARY)
     DESCRIPTION  'EMPLOYEE 테이블 안에서 발생한 변경 구독';
CREATE SUBSCRIPTION sub_customer_deletes ON
     CUSTOMER FOR ROW (DELETE)
     DESCRIPTION 'CUSTOMER 테이블에서 발생한 삭제 구독';
CREATE SUBSCRIPTION sub_various_changes ON
     EMPLOYEE FOR ROW (INSERT, UPDATE, DELETE),
     CUSTOMER FOR ROW (INSERT, UPDATE, DELETE),
     SALES FOR ROW (UPDATE),
     DEPARTMENT (LOCATION) FOR ROW (UPDATE)
     DESCRIPTION '여러 테이블에서 발생한 여러 변경을 구독';
GRANT SUBSCRIBE ON SUBSCRIPTION <구독_이름> TO <사용자_이름>;

클라이언트

서버에 구독(subscription)이 설정(setup)되고 나면, 이제 당신의 애플리케이션 안에서 해당 구독을 추가/활성화 할 수 있다.

  1. SnapShot 격리 모드 (isolation mode)에서 구독을 사용할 트랜잭션을 시작한다.
  2. Subscription의 Active를 True로 지정하는 쿼리를 사용하여 당신의 구독을 활성화한다.
  3. 변경(delta)을 받아오는 SELECT 진술을 실행한다. 간단한 SELECT 문장이면 될 것이다.
  4. 일단 변경(delta)을 확보하고 나면, 당신의 트랜잭션을 커밋(commit)한다. 그러면 애플리케이션 안에서 당신이 사용한 해당 체인지 뷰스(Change Views)에는 최신 데이터가 모두 반영되고, 그때부터 다시 새롭게 변경을 추적할 수 있는 상태가 된다.

이 내용을 (한국어로 더빙된) 비디오 데모로 보기

자료(들)

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

이 토의에 참여하세요

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

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...

중요한 정보

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