CAP 이론, RDBMS, NOSQL, Eventual Consistency

Dayeon myeong·2022년 3월 23일
1

면접

목록 보기
15/35

CAP 이론

  • 분산 컴퓨팅 시스템에서 보장해야하는 시스템
  • 어떤 분산 시스템이더라도 Consistency (일관성), Availability (가용성), Partition tolerance (분할 내성)를 모두 만족할 수 없다는 이론이다.
  • Consistency(일관성) : 데이터가 일관성이 있어야 한다. 모든 노드들은 동시에 같은 데이터를 보아야 한다
    • 여러 클라이언트는 동시에 같은 데이터를 봐야한다. 즉, 같은 시간에 조회하는 데이터는 항상 동일한 데이터여야한다
    • NoSQL은 eventual consistency
  • Availability(가용성) : 모든 노드는 항상 읽기와 쓰기가 가능해야한다
    • replication : DB 서버가 장애가 발생하더라도 다른 서버에 있는 데이터를 가져와 계속 서비스 할 수 있다
      • 방법
        1. master slave
        2. peer to peer
    • MongoDB는 Replica Sets?
  • Partition tolerance 파티션 내성..? : 물리적인 네트워크 파티션을 넘어서도 잘 동작하여야 한다
    • 샤딩 : Scale out 수평적 확장을 해도 잘 동작해야 한다
    • 둘 이상의 DB 서버가 네트워크에 문제 생겨도 각 서버는 잘 동작해야한다

RDBMS : CA에 집중

  • C : 트랜잭션을 통한 ACID, 외래키
  • A : Replication

NoSQL : AP에 집중

  • C : C는 eventual consistency를 선택하여, 최종적으로는 데이터가 동기화될 것이다
  • A : Replica sets?
  • P : Sharding

Eventual Consistency

  • 설명 : 당장은 맞지 않지만, (실시간 동기화는 불가능하지만) 결국 언젠가는 eventually 데이터가 동기화되어 일관성이 맞춰지는것을 말한다

  • NoSQL에서 분산 DB간의 Eventual Consistency 구현 방법

    1. 동기 : 데이터의 저장 결과를 클라이언트로 응답하기 전에 모든 노드에 데이터를 저장하는 동기식 방법
      • 느린 응답시간을 보이지만, 데이터의 정합성을 보장한다
    2. 비동기 : 메모리나 임시 파일에 기록하고 클라이언트에 먼저 응답한 다음, 특정 이벤트 또는 프로세스를 사용하여 노드로 데이터를 동기화하는 비동기식 방법
      • 빠른 응답시간을 보인다는 장점이 있지만, 쓰기 노드에 장애가 발생했을 경우 데이터가 손실 될 수 있다

noSQL 과 RDB 의 특징, 차이에 대해 말씀해주세요. 어느 상황에 어떤 데이터베이스를 쓰는게 좋겠습니까?

profile
부족함을 당당히 마주하는 용기

0개의 댓글