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

체인지 뷰스 API 지원 (Change Views API Support)


Recommended Posts

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

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

주제

체인지 뷰스 API는 확장된 SQLVAR 구조인 (해당 SQLIND 멤버를 새로 해석한) XSQLVAR를 통해 지원된다. 검토를 하려면, 개발자가 XSQLVAR.SQLIND 안에 변수 하나를 두고 그곳에 포인터를 위치시키고 NULL의 상태를 요청(request)한다. 쿼리를 실행하면, 인터베이스는 반환하는 행(row)의 해당 컬럼 값이 NULL이 아닌 경우에  0을 NULL 인 경우에는 -1을 이 포인터에 넣는다.

새 해석에 따르면, 이중(dual) 개념인 NULL 상태와 CHANGE 상태는 해당 SQLIND 멤버 변수 안에서 겹친다. 해당 SQLIND 변수에서 가장 낮은 비트(bit)들은 컬럼 변경 표시자로 쓰도록 예약되어 있다. Bit 0은 INSERT; Bit 1은 UPDATE; Bit 2는 DELETE; Bit 3은 CHANGE를 가리킨다. NULL 상태를 확인하려면, 개발자는 SQLIND를 확인 할 때, -1인지를 확인하지 말고 0보다 작은지를 확인해야 한다. SQLIND 주소에 0 또는 0 보다 큰 값이 들어 있으면 NULL이 아닌 값이라는 표시이다.

NOT NULL NULL 변경 상태
SQLIND = 0 SQLIND = -1 체이지 뷰스와 구독(subscription)이 사용되지 않았던 예전의 SQLIND에서 반환하는 값. 여기에는 변경 상태가 정의되지 않는다.
SQLIND >= 0 SQLIND < 0 새 SQLIND에서 반환하는 값. 변경 상태가 제시될 "수"도 있고 테스트 할 수 있다.
SQLIND > 0 SQLIND < -1 변경 상태가 제시된다.

일단 SQLIND 값에 변경 상태가 들어있다고 결정된 경우, 구체적인 상태를 테스트하기 전에 미리 SQLIND_NULL 비트가 있을 가능성을 깨끗이 해소해야 한다. 아래에 있는 SQLIND_xxxxxx 정의는 <ibase.h>에 들어잇다. 이러한 정의를 대상으로 다양한 비트 OR 연산을 수행하여 관심있는 변경 상태를 테스트할 수 있다.  

SQLIND 값 변경 상태
SQLIND_CHANGE_VIEW 해당 컬럼은 <same> 값이다; 이 컬럼의 값은 변경되지 않았다.
SQLIND_CHANGE_VIEW | SQLIND_CHANGE <unknown> 이다. 즉 해당 컬럼의 값이 변경 여부를 알 수 없다.
SQLIND_CHANGE_VIEW | [ SQLIND_CHANGE ] |

{ SQLIND_INSERT | SQLIND_UPDATE | SQLIND_DELETE }

SQL 작동(operation)들의 조합 몇가지가 해당 컬럼의 값을 변경했다.

SQLIND_CHANGE_VIEW는 태그 비트(bit)로써 변경 상태가 존재하는 지 여부를 알려준다. 나머지 정의들은 FOR ROW 절에 있는 옵션들인 CHANGE, INSERT, UPDATE, DELETE에 각각 이름에 맞게 대응된다. CHANGE 옵션은 <unknown> 변경 상태를 일으킬 수 있는데 이 옵션에서는 어느 컬럼이든 변경이 감지되기만 하면 무조건 변경된 행(row)이 바로 반환되기 때문이다. 이 경우 변경이 발생한 컬럼의 값들은 분명한 상태를 반환하지만, 그 외의 컬럼들은 <unknown> 상태를 반환한다.

구독에 의해 변경된 데이터는 해당 구독에서 나중에 관찰(observe)하면 보이지 않는다. 이것은 양방향 복제 상황에서 체인지 뷰스가 구성 요소로 적용될 가능성을 고려했기 때문이다. 복제 쌍에서 발생된 변경에 대해 어느 한쪽에서 다른 쪽에 업데이트하고, 그 다른쪽에서 그 복제를 다시 반대 방향으로 복제하는 것은 바라지 않는다.

다음 단계 (Advance To)

 

 


 


체인지 뷰스 SQL 언어 지원 (Change Views SQL Language Support)
 

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

이 토의에 참여하세요

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

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

중요한 정보

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