Notice
                              
                          
                        
                          
                          
                            Recent Posts
                            
                        
                          
                          
                            Recent Comments
                            
                        
                          
                          
                            Link
                            
                        
                    | 일 | 월 | 화 | 수 | 목 | 금 | 토 | 
|---|---|---|---|---|---|---|
| 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 | 
                            Tags
                            
                        
                          
                          - Algorithm
 - EventScheduler
 - database
 - BIT연산
 - procedure
 - wrapper class
 - spark
 - MVC
 - hdfs
 - namenode
 - MySQL
 - ES6
 - 시뮬레이션
 - Transaction
 - 프로그래머스
 - datanode
 - boto3
 - Parquet
 - BFS
 - 백준
 - S3
 - 구현
 - ACID
 - SQL
 - bigdata
 - Spring
 - priorityqueue
 - JPA
 - 우선순위큐
 - greedy
 
                            Archives
                            
                        
                          
                          - Today
 
- Total
 
IT 개발일지
[Database] 1. ACID - Consistency 본문
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가 발생하지 않는다.)