일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 학점
- gradle
- 문법 정리
- resilience4j
- 오라클
- MongoDB
- auto configure
- jsp
- K6
- 파이썬
- 알고리즘
- SQL
- hyperledger
- 리눅스
- 자바 프로젝트
- dynamic query
- c#
- JVM
- 파이썬 소스
- smart cast
- 자바
- 유사코드
- oracle
- 운영체제
- 프로젝트
- spring
- 백준 알고리즘
- 티스토리
- 오라클 디비
- 초대장
- Today
- Total
모종닷컴
C.A.P 이론 본문
에플리케이션 테이블 중 거의 로그성으로 전문의 일부 내용을 저장하는 테이블이 있었습니다. 이 데이터는 RDB에 저장이 되고 있었는데 막상 만들고 유지하려고 하다보니 업데이트할 필요도 물론 없었고 검색도 사실상 거의 한적이 없는 테이블이었습니다. 그렇다면 이게 굳이? RDB에 있어야하나 라는 생각을 했습니다.
RDB는 이름에서 짐작할 수 있듯이 관계를 가지고 유지하기 위한 데이터베이스라서 전문 데이터를 삽입한다고 했을 때 이러저러한 조건들을 따지기 시작합니다. RDB의 MBTI는 J에 가깝다고 볼 수 있죠
이러저러한 조건을 피곤하게 따지는 이녀석은 조금 느립니다. 아래는 nosql과 삽입 성능을 비고하는 표입니다.
더이상 RDB에 있을 필요가 없는 녀석이기에 NoSQL로 옮기자는 결정을 내렸죠. (물론 삽입이 빈번히 일어나고 그 외에 검색이나 업데이트는 없다는 것이 베이스로 깔렸을 때입니다)
NoSQL 뭘 사용해야 하나?
NoSQL을 사용하기로 결정은 했는데 종류가 엄청 많습니다. 일단 가장 많이 사용하는 NoSQL 이 뭐가 있을까 하고 찾아보니 대부분 비슷한 결과가 나왔었던것 같았습니다. Mongodb, Apache Cassandra, Apache CouchDB 등이 탑 3로 주로 많이 등장했고 이 3가지 중 하나로 고려해보기로 하였습니다.
모르겠다 ㅎ 뭘 사용해야 할 지 잘 모르겠어요. "그냥 일일히 다 연동해보고 직접 테스트를 해봐서 가장 적합한 걸 고르는게 낫겠다"라고 생각할 때 동료가 CAP 이론을 말해주었어요!! 아!!
제가 아는 CAP는 모자밖에 없습니다
CAP 이론
CAP 이론는 데이터베이스 시스템은 Consistency(일관성), Availablity(가용성), Partition torlerance(파티션 허용) 라는 특성 중 원하는 2가지의 속성만 제공할 수 있으며, 3가지 모두를 만족하는 시스템은 없다는 이론입니다. Eric A Brewer 교수가 처음으로 언급을 시작하여 CAP 이론은 Brewer's Theorem 이라고도 불린다고 합니다.
3가지 속성에 대하여 자세히 알아보겠습니다.
일관성
일관성이란 현재 데이터베이스 시스템과 연결된 모든 클라이언트는 동일 시점에 동일한 데이터를 볼 수 있어야 함을 의미합니다.데이터베이스 시스템 노드 중 하나에 데이터가 기록이 된다면 즉각 시스템의 모든 노드로 데이터가 기록이 되어야 하고 그 이후 성공으로 간주가 될 것입니다.
가용성
가용성이란 하나 이상의 노드가 작동이 중지가 되더라도 요청하는 클라이언트가 응답을 받아야 함을 의미합니다. 모든 노드 중 하나가 장애가 발생하여 내려갔을 때에도 시스템에 문제가 없어야 합니다.
파티션 허용
파티션이란 분산 시스템 내의 통신 단절, 즉 노드 간의 연결이 유실되거나 일시적으로 지연된 상태입니다. 이런 상황에서도 시스템이 정상적으로 동작해야 함을 의미합니다. 묘하게 가용성 속성과 비슷해보이는데 두 개의 노드는 모두 멀쩡하지만 두 노드 사이에 네트워크 문제로 서로간의 연결이 끊어져도 두 노드는 모두 정상인 상태이므로 가용성과는 조금 다른 특성을 말하는 것 같습니다.
CAP 에 기반한 NoSQL 데이터베이스 유형
위에서 얘기했듯이 3가지 특성 모두 만족하는 시스템은 없습니다. 두 개의 CAP 특성을 기반으로 분류하면 아래와 같은 데이터베이스가 존재합니다.
CP 데이터베이스
일관성과 파티션허용을 제공하는 데이터베이스입니다. 파티션이 해결될 때까지 일관되지 않은 노드를 종료해야 합니다. 가용성 특성을 가지지 못합니다.
AP 데이터베이스
가용성과 파티션 허용을 제공하는 데이터베이스입니다. 파티션이 발생해도 모든 노드를 사용할 수 있지만, 일관성의 특성을 가지지 못하니 각 노드가 동일한 데이터를 응답한다는 보장이 없습니다.
CA 데이터베이스
일관성과 가용성을 제공하는 데이터베이스입니다. 시스템의 노드 사이에 파티션이 있는 경우 끊어진 노드에 대해 일관성과 가용성을 제공할 수 없습니다. 종종 노드가 하나인 시스템의 데이터베이스는 CA 시스템으로 분류됩니다.
CAP 이론의 한계
CAP 이론에는 한계가 있다고 합니다. 위키 설명을 번역하자면 아래와 같습니다.
분산 시스템은 네트워크 장애로부터 안전하지 않으므로 일반적으로 네트워크 분할을 허용해야 합니다. 파티션이 있는 경우에는 일관성 또는 가용성 이라는 두 가지 옵션이 남아 있습니다 . 가용성보다 일관성을 선택할 때 네트워크 분할로 인해 특정 정보를 최신 상태로 유지할 수 없는 경우 시스템은 오류 또는 시간 초과를 반환합니다. 일관성보다 가용성을 선택하면 시스템은 항상 쿼리를 처리하고 네트워크 분할로 인해 최신 정보를 보장할 수 없는 경우에도 사용 가능한 가장 최근 버전의 정보를 반환하려고 시도합니다.
파티션이 없으면 가용성과 일관성을 모두 충족할 수 있습니다.
RDBMS 와 같이 전통적인 ACID 보장을 염두에 두고 설계된 데이터베이스 시스템은 가용성보다 일관성 을 선택 하는 반면 , NoSQL 운동 에서 일반적인 BASE 철학을 기반으로 설계된 시스템은 일관성보다 가용성을 선택합니다.
그렇다면 CP를 선택하였을 때 가용성 특성을 완전히 버려야 하는것인가? AP를 선택하였을 때 일관성을 완전히 버려야 하는것인가? 아닐 것 같다는 생각이 드네요. 이는 시스템을 어떻게 구성하고 설정하냐에 따라 다른 것인 것 같습니다. PACELC 이론이 이를 설명하고 있습니다.
결론
NoSQL을 선택하는데에 있어 CAP 이론만을 들이밀기에는 한계가 있어 이를 기반으로 선택하지 않게 되었습니다 ㅠ
PACELC 이론을 읽어보고 다시 그때 결정하는걸로... 안녕 CAP 이론 즐거웠다.
참조
https://en.wikipedia.org/wiki/CAP_theorem
https://severalnines.com/blog/mongodb-vs-mysql-nosql-why-mongo-better/
https://www.ibm.com/kr-ko/cloud/learn/cap-theorem#toc-cap--h0irLw25
'기술 용어' 카테고리의 다른 글
Swap memory (0) | 2022.11.27 |
---|---|
서버 이중화 동작 방식 (0) | 2022.09.11 |
유한 상태 기계 (Finite-State Machine, FSM) (0) | 2022.08.16 |
데이터 레이크 (0) | 2022.08.14 |
온프레미스(On-premise) (0) | 2022.08.12 |