<Consistency>

Consistency란 단어는 Memory Model과 Database Transaction ACID 두곳에서 만날수 있다

이 글에서는 Consistency라는 용어의 의미에 대해 메모해놓으려 한다


Consistency는 직역하면 일관성으로, data에 언제 access하든지 일관성있게 access된다는 의미로 이해하면 된다

아래 두 내용도 모두 이와같은 맥락에서 이해하면 된다


<Consistency Model>

Multi-core와 같은 Distributed Shared Memory System에서 나오는 용어이다

예를 들면 Consistency Model은 아래와 같은 상황에서 필요하다


Client A,B(Multi-core에서는 Core A,B)가 있다고 하자

1. A가 Node N, M(Memory의 N번위치, M번위치)에 순서대로 data를 write했다

2. B가 Node M에서 data를 read했다


이때, B는 "A가 Node M에 write한 값"을 확인해야한다.

하지만 "오직 A가 Node M에 write한 값만" 공유할 것인지, "그 이전의 memory access들(Node N에 write)까지 모두" 공유할 것인지

일관성이 필요하다.

일관성이 제공되지 않을경우, 프로그램 작성이 복잡해지기 때문이다

그리하여 다양한 Consistency Model들은 이런 Memory Access에 일관성(consistency)을 보장해준다

이것이 바로 Consistency Model의 목적 및 기능이다


<ACID의 Consistency>

Consistency는 안전한 Transaction을 위해서 지켜져야하는 성질이다

이것도 마찬가지로 Data의 일관성을 이야기하는데, 대표적으로 Constraint(제약조건)이 있다

balance > 0이라는 제약조건이 있을 경우, 이 제약조건을 깨는 트랜잭션은 실패하게 되어있다

그 결과, 트랜잭션 성공 후 balance라는 data는 balance > 0이라는 일관성을 가지게 된다

결국 data의 일관성이라는 점에서 Consistency Model과 일맥상통한다


추상적인 개념(용어)이라서 처음 이해하기에 어렵기도 하지만, 이해하고나면 단순한 내용이었다.




WRITTEN BY
hojongs
블로그 옮겼습니다 https://hojongs.github.io/