Notice
Recent Posts
Recent Comments
Link
«   2025/08   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
Archives
Today
Total
관리 메뉴

IT 개발일지

[Database] 1. ACID - Consistency 본문

카테고리 없음

[Database] 1. ACID - Consistency

맛난밤송이 2024. 4. 7. 21:55

Consistency(일관성)

  • Consistency in Data : 데이터베이스의 트랜잭션은 데이터베이스에서 정한 *무결성 조건을 만족해야 한다. (즉, 허용된 방식으로만 데이터만 변경해야 함)
    • 데이터베이스에 기록된 데이터는 constraints , cascades, trigger 등 명시된 규칙에 따라야만 일관성을 유지할 수 있음
  • Consistency in Reads: 그리고 테이블의 한 객체가 변경된다면, 해당 객체가 등장하는 다른 모든 테이블에 반영되어야 한다.

 

* 데이터 무결성(Integrity) : 데이터의 값이 정확한 상태

1. Consistency in Data

Disk와 Data Model간의 관계가 일치하는가

 

1. 특징

  • 해당 데이터 모델은 DBA에 의해 정의된다.
  • 외래 키(FK)에 의해 참조 무결성(Referential Integrity)을 가진다.
    • 참고로, NoSQL에도, 참조 무결성이 존재한다.
  • 원자성(Atomicy) 가정
  • 고립성(Isolation)에 따라 Consistency가 달라짐.

일관성 일치 예시

*Picture Table

- 사진 정보가 저장된 테이블

ID(PK) BLOB LIKES
1 XX 2
2 XX 1

 

*Picture Like Table

- 사진 정보 테이블을 참조하며 어떤 사진에 누가 좋아요 했는지 나타내는 테이블

User(PK) Picture_ID(FK)
John 1
Lisa 1
John 2

 

일관성 불일치 예시

*Picture Table

ID(PK) BLOB LIKES
1 XX 2
2 XX 1

 

*Picture Like Table

User(PK) Picture_ID(FK)
John 1
Lisa 1
John 2
Alice 4

 

- Picture Like 테이블에서는 Picture 테이블에는 없는 4번 Picture을 참조하고 있다.

- 즉, 현 상황에는 참조 무결성이 깨졌다는 것이다.

- 아마도 Picture테이블에서 사진을 삭제하면서, Cascading이 실패해서?

 


1. Consistency in Reads

한 트랜잭션으로 인한 변화가 새로운 읽기 트랜잭션에서도 그대로 즉각 반영되는가?

 

- 만약에 새로운 트랜잭션에서 변경된 데이터의 내용을 즉각 읽지 못한다면 => Consistency in Reads 깨짐

1. 특징

  • 시스템 전체에 영향을 미친다.
  • Eventual Consistency
    • 항목이 새롭게 업데이트되지 않는다는 전제하에 항목의 모든 읽기 작업이 최종적으로는 마지막으로 업데이트된 값을 반환한다는 것을 이론적으로 보장 
    • 계속해서 읽기를 요청한다면, 언젠간 일관성을 가지게 된다(언젠가는 동기화가 된다.)
    • Consistency in Reads는 데이터 손상, 참조 무결성이 깨지는 상황과는 다름(이러한 상황에서는 이미 데이터가 손상되었으며, Eventual Consistency가 발생하지 않는다.)

출처

- Fundamentals of Database Engineering, Udemy

- Consistency in DBMS

- Eventual Consistency