데이터베이스의 일관성 (Consistency)
데이터 일관성은 데이터베이스 및 시스템에서 중요한 개념으로, 데이터의 정확성과 신뢰성을 유지하기 위한 여러 원칙과 메커니즘으로 구성됨. 이를 크게 두 가지로 나눌 수 있음:
1. 데이터 자체의 일관성 (Consistency in Data)
데이터 자체의 일관성은 데이터가 시스템 내에서 항상 올바른 상태를 유지하는 것을 의미함. 이는 아래의 원칙들로 정의됨:
- 사용자 정의 규칙 (Defined by the user)
사용자가 설정한 비즈니스 규칙이나 데이터 제약 조건을 만족해야 함.
- 예: 고객의 나이가 음수일 수 없거나, 제품의 가격이 0보다 작을 수 없음.
- 참조 무결성 (Referential Integrity)
데이터베이스에서 외래 키를 사용하는 경우 참조 무결성을 유지해야 함. 이는 데이터의 연결성이 깨지지 않도록 보장함.
- 예: 주문 테이블이 고객 테이블을 참조할 때, 주문에 연결된 고객이 삭제되면 안 됨.
- 원자성 (Atomicity)
트랜잭션은 "모두 실행되거나 모두 실행되지 않는" 상태를 보장해야 함.
- 예: 은행 계좌에서 돈을 이체할 때, 출금이 완료되지 않으면 입금도 이루어지지 않음.
- 고립성 (Isolation)
각 트랜잭션은 다른 트랜잭션의 영향을 받지 않도록 격리되어야 함. 이를 통해 데이터 일관성을 유지함.
- 예: 두 사용자가 동시에 같은 상품의 재고를 업데이트하려고 할 때, 한 사용자의 작업이 끝난 후에야 다른 사용자가 업데이트 가능함.
2. 일관된 읽기 (Consistency in Reads)
데이터 읽기 일관성은 트랜잭션에서 읽은 데이터가 항상 신뢰할 수 있는 상태에 있음을 의미함.
- 참조 무결성에 의해 강제됨
일관된 읽기는 데이터베이스의 참조 무결성을 유지하면서 정확한 데이터를 읽는 것을 보장함.
- 업데이트 및 커밋 후 일관성
값이 업데이트되고 커밋된 후에야 해당 값이 다른 트랜잭션에서 읽힐 수 있음. 이전 값(구버전)은 더 이상 읽히지 않음.
- 예: 사용자가 쇼핑몰에서 상품 재고를 확인할 때, 다른 사용자가 추가로 구매를 해서 재고가 변경되었으면, 최신 재고 값만 표시됨.
- 동기화 복제 (Synchronous Replication)
복제된 데이터베이스 시스템에서는 동기화 복제를 통해 일관성을 유지할 수 있음. 동기화 복제가 완료된 이후에만 데이터 읽기가 허용되므로 모든 노드에서 동일한 데이터를 읽을 수 있음.
- 예: 분산 데이터베이스에서 사용자가 조회한 데이터가 항상 최신 상태인지 확인하는 경우.
예시
데이터 일관성 예시
학교 시스템에서:
- 학생 테이블(Student Table)에 학생 ID가
12345
인 사람이 있다면, 성적 테이블(Grades Table)에도 해당 학생의 성적 정보가 있어야 함. - 만약 성적 정보가 없는 경우, 이는 데이터 일관성이 깨진 것임.
일관된 읽기 예시
- 쇼핑몰에서 상품 재고가
10개
인 상태에서 A라는 사람이5개
를 구매함. 이때 구매가 커밋되기 전에는 다른 사람이 여전히10개
로 읽을 수 있음. - 하지만 커밋된 이후에는 다른 사람이 반드시
5개
로 읽어야 함.
이렇게 데이터 일관성은 시스템의 신뢰성을 유지하는 중요한 요소임. 따라서 데이터베이스 설계 및 관리에서 항상 고려되어야 함.
'DB' 카테고리의 다른 글
[DB] 지속성(Durability) (0) | 2024.12.01 |
---|---|
[DB] 고립성(Isolation) (0) | 2024.12.01 |
[DB] 원자성(Atomicity) (0) | 2024.11.27 |
[DB] 트랜잭션(Transaction) (0) | 2024.11.26 |
[DB] django 에서 다대다(Many-to-Many) 관계 예시 (1) | 2024.09.16 |
배움에 즐거움을 느끼는 마네의 연구소입니다. 이미지 출처 : https://www.instagram.com/hoseobiiiiiii._.0410/
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!