개요편집이의 제기
일관성(consistency)은 데이터베이스 시스템에서 트랜잭션이 데이터베이스를 한 유효한 상태에서 다른 유효한 상태로만 전이시키도록 보장하는 속성이다[1]. 이는 데이터베이스에 기록되는 모든 데이터가 제약 조건(constraints), 캐스케이드(cascades), 트리거(triggers) 및 이들의 조합을 포함하여 정의된 모든 규칙에 따라 유효해야 한다는 요구 사항을 나타낸다[2][3].
역사편집이의 제기
일관성 개념은 데이터베이스 트랜잭션의 신뢰성을 정의하는 ACID(원자성, 일관성, 격리성, 지속성) 모델의 네 가지 보장 중 하나로 자리잡았다[3]. 그러나 이 보장의 본질에 대해서는 상당한 모호성이 존재하며, 학문적·실무적 맥락에 따라 다양하게 정의되어 왔다[3]. 분산 시스템 분야에서는 CAP 정리의 세 가지 트레이드오프 중 하나로 '원자적 일관성(atomic consistency)'이 논의되면서, 트랜잭션 단위의 ACID 일관성과 단일 요청/응답 연산 시퀀스의 속성인 원자적 일관성이 구별되어 왔다[3].
기능과 사용법 개요편집이의 제기
ACID 보장으로서의 일관성
ACID 트랜잭션의 맥락에서 일관성은 주로 다음 두 가지 의미로 정의된다[3].
첫째, 트랜잭션이 커밋된 후 데이터베이스 제약 조건이 위반되지 않음을 보장하는 것이다. 이는 데이터베이스에 기록된 모든 데이터가 정의된 모든 규칙(제약 조건, 캐스케이드, 트리거 등)에 따라 유효해야 한다는 것을 의미한다[2][3].
둘째, 미래에 시작되는 모든 트랜잭션이 과거에 커밋된 다른 트랜잭션의 효과를 반드시 보게 된다는 보장이다[3].
이러한 정의들은 상호 배타적이지 않으므로, 오늘날 일반적으로 사용되는 대부분의 관계형 데이터베이스 관리 시스템(RDBMS)은 일관성의 모든 의미에서 보장을 제공한다고 볼 수 있다[3].
중요한 점은 이 일관성 보장이 애플리케이션 프로그래머가 의도한 모든 방식(애플리케이션 수준 코드의 책임)에서 트랜잭션의 정확성을 보장하는 것은 아니라는 것이다[2][3]. 단지 프로그래밍 오류로 인해 정의된 데이터베이스 제약 조건을 위반할 수 없다는 점만 보장된다[2][3].
CAP 정리의 트레이드오프로서의 일관성
분산 시스템에서 CAP 정리는 일관성(consistency), 가용성(availability), 분할 내성(partition tolerance) 중 두 가지만 동시에 만족할 수 있다고 명시한다[3]. 여기서 말하는 일관성은 '원자적 일관성(atomic consistency)'으로, ACID의 일관성이나 원자성(Atomic)과는 다른 개념이다[3]. CAP 정리의 일관성은 데이터베이스 트랜잭션이 아닌 단일 요청/응답 연산 시퀀스의 속성을 가리키며, ACID의 원자성과 일관성 개념을 모두 포괄한다[3]. 따라서 일부 데이터베이스 시스템에서는 이 일관성을 희생하여 가용성이나 분할 내성을 확보하기도 한다[3].
읽기 연산에서의 즉각적 반영
분산 시스템 맥락에서 일관성은 성공적인 쓰기, 업데이트 또는 삭제 연산 이후 모든 읽기 요청이 즉시 레코드의 최신 값을 받는 것으로 이해되기도 한다[2][3].
평가편집이의 제기
일관성 보장의 정의가 모호하고 맥락(ACID vs CAP)에 따라 의미가 달라진다는 점이 지속적으로 지적되어 왔다[3]. ACID의 일관성은 제약 조건 준수와 트랜잭션 간 가시성에 초점을 두는 반면, CAP의 일관성은 단일 연산의 선형성(linearizability)에 가깝다[3]. 이 구분은 분산 데이터베이스 설계 시 트레이드오프를 이해하는 데 핵심적이다[3].
같이 보기편집이의 제기
일관성 모델, CAP 정리, 참조 무결성, 궁극적 일관성[2][3]
이 문서는 GGWiki AI가 공개 자료(아래 출처)를 조사해 새로 쓴 초안입니다. 틀린 내용은 편집하거나 이의 제기로 알려 주세요.