개발로 자기계발
728x90

설명

트랜잭션의 실행 전과 후에 데이터베이스가 정의된 비즈니스 규칙과 제약 조건을 계속해서 충족하도록 보장하는 속성

 

내용

구분 설명 비고
데이터의 일관성 데이터가 일관된 상태를 유지하는 것을 의미 사용자에 의해 정의, 참조 무결성(외래키)
원자성, 고립성(격리 레벨에 따라 달라짐)
읽기의 일관성 데이터를 읽을 때 사용자가 항상 최신의
일관된 데이터를 보게 되는 것
데이터의 변경 사항이 다른 트랜잭션에 어떻게
즉시 반영되는지는 격리 레벨에 따라 달라짐

이는 관계형 및 비관계형 데이터베이스 모두에 적용되며,
참조 무결성을 포함한 일관성을 보장하는 데 필수적

 

 

데이터의 일관성 예시

pictures 테이블

ID(PK) title LIKES
1 Sunset 2
2 Mountain View 1

 

picture_likes 테이블

USER(PK) PICTURE_ID(PK)(FK)
Jon 1
Edmond 1
Jon 2

pictures 테이블의 ID는 picture_likes 테이블의 PICTURE_ID와 연결되어 데이터 간의 일관성을 유지한다.

 

읽기의 일관성 예시

상황: 은행 계좌 시스템에서의 거래 처리

  1. 시작 상태: 계좌 A에는 $1000이 있다.
  2. 트랜잭션 1 시작: 사용자는 계좌 A에서 $100를 조회한다. (이 시점에서 계좌의 잔액은 $1000이다.)
  3. 트랜잭션 2 시작 및 완료: 동시에 다른 사용자가 계좌 A로 $500를 입금하는 트랜잭션을 시작하고 완료한다. (계좌 A의 잔액은 이제 $1500이다.)
  4. 트랜잭션 1의 조회 결과: 트랜잭션 1에서는 계좌 A의 잔액을 여전히 $1000으로 조회한다. 이는 트랜잭션 1이 시작될 때의 데이터 상태를 기반으로 하기 때문이다.
  5. 트랜잭션 1 완료 후: 트랜잭션 1이 완료된 후 계좌 A의 잔액을 다시 조회하면, 이번에는 $1500을 보게 된다. 이는 트랜잭션 2에서의 변경 사항이 이제 반영되었기 때문이다.

읽기의 일관성은 트랜잭션 1이 실행되는 동안 계좌 A의 데이터 상태가 일관되게 유지되도록 보장한다. 즉, 트랜잭션 1이 실행되는 동안 다른 트랜잭션에 의해 발생한 변경사항은 반영되지 않는다.

이를 통해 데이터베이스 시스템은 다른 사용자의 작업에 영향을 받지 않는 안정적인 데이터 조회를 보장할 수 있다.

 

정리

데이터가 항상 정확하고 신뢰할 수 있는 상태를 유지하는 것을 의미한다.

728x90
SMALL
profile

개발로 자기계발

@김잠봉

틀린부분이나 조언이 있다면 언제든 환영입니다:-)