DB를 선택 합시다. (CAP Theorem)

kwak woojong·2023년 2월 8일
0
post-thumbnail

DB는 종류가 참 다양함.

보통 관계형DB를 기본으로 필요에 따라 NoSql을 쓰거나 할 것임.

다만 어떤 경우에선 NoSql이 더 강력할 때가 있고, 어떤 경우에선 RDBMS가 더 강력할 때가 있고 상황에 따라 다르다.

Redis 같은 경운 아에 메모리에 데이터를 넣어버리니 속도가 매우 빠른 대신 컴퓨터 끄면 날아간다.

  1. 일관성 (Consistency)
  2. 가효성 (Availability)
  3. 파티션 허용 (Partition tolerance)

CAP Theorem 은 모든 데이터베이스를 저 3가지 기능으로 나누어서 생각한다.
ACID와는 조금 다를 수 있음.

즉 저 3가지 기준을 적절히 섞어서 데이터베이스를 선택해야 한다는 거임


  1. 일관성
    어떤 노드와 연결되었는지 무관하게 모든 클라이언트가 동시에 동일 데이터를 볼 수 있어야 함. 즉 같은 시간내에 동일한 요청을 한 클라이언트는 동일한 데이터임을 보증해야 한다.
  2. 가용성
    읽기와 쓰기 요청에 대해 항상 응답이 가능해야 함.
  3. 파티션 허용성
    어떤 노드가 단절되더라도 각자 지역내의 시스템은 정상적으로 동작해야 함

DB를 조금 생각해보면 애초에 모든 DB를 저 3개의 기준으로 돌릴 수가 없다.
가용성에 대해 생각하자면, 결국 항상 응답이 가능하단 소리는 네트워크 장애가 아에 발생하지 않아야 한다는 소리임. 근데 이게 말이 안 되잖아?

네트워크 장애가 발생하더라도 DB가 응답하려면 결국 파티션 나누는게 되야 함.

그래도 간단하게나마 어떤 DB를 쓸 수 있는지 리스트업을 하기 위해서 이 정도만 되도 고민을 좀 덜 수 있지 않을까?


CAP 이론의 상기 단점을 보완하기 위해 PACELC 이론이란게 있다 카더라

CAP를 기반으로 좀 더 보안적인 느낌인 듯.

정리는 좀 나중에 해야겠당.

출처
https://en.wikipedia.org/wiki/CAP_theorem
https://en.wikipedia.org/wiki/PACELC_theorem
https://osy0907.tistory.com/m/95
https://medium.com/system-design-blog/cap-theorem-1455ce5fc0a0

profile
https://crazyleader.notion.site/Crazykwak-36c7ffc9d32e4e83b325da26ed8d1728?pvs=4<-- 포트폴리오

0개의 댓글

관련 채용 정보