문제
데이터베이스 트랜잭션의 ACID 특성 중 **일관성(Consistency)**을 보장하기 위한 무결성 제약조건의 종류를 3가지 이상 설명하고, 다중 버전 동시성 제어(MVCC)에서 읽기 스냅샷이 일관성 있는 뷰를 제공하는 메커니즘과 쓰기 충돌 감지 방법을 서술하시오.
정답
무결성 제약조건은 개체 무결성(기본키는 NULL이나 중복값 불허), 참조 무결성(외래키는 참조 테이블의 기본키 값이거나 NULL), 도메인 무결성(속성값은 정의된 도메인 내 값), 사용자 정의 무결성(업무 규칙 반영) 등이 있다. MVCC에서 읽기 스냅샷은 트랜잭션 시작 시점의 타임스탬프를 기준으로 해당 시점에 커밋된 버전만 읽어 일관된 뷰를 제공한다. 쓰기 충돌은 같은 데이터에 대해 먼저 커밋된 트랜잭션이 있을 때 나중 트랜잭션을 롤백시켜 감지한다.
개체 무결성참조 무결성도메인 무결성사용자 정의 무결성타임스탬프스냅샷커밋롤백쓰기 충돌읽기 일관성
해설
일관성은 트랜잭션 실행 전후에 데이터베이스가 무결성 제약조건을 만족하는 상태를 유지하는 특성이다. 무결성 제약조건은 데이터의 정확성과 유효성을 보장하는 규칙들이며, MVCC는 각 트랜잭션에게 일관된 스냅샷을 제공하여 읽기 일관성을 보장하고, 쓰기 시에는 First-Committer-Wins 규칙으로 충돌을 해결한다.