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 |
31 |
Tags
- ES6
- 구현
- wrapper class
- hdfs
- procedure
- ACID
- bigdata
- Transaction
- SQL
- 백준
- MySQL
- 시뮬레이션
- MVC
- Algorithm
- BFS
- spark
- S3
- BIT연산
- Parquet
- JPA
- Spring
- database
- 우선순위큐
- priorityqueue
- EventScheduler
- boto3
- datanode
- namenode
- 프로그래머스
- 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가 발생하지 않는다.)