• 분산시스템
    • CAP 이론
      • Consistancy(일관성)
        • 동시적인 상황의 R/W 에도, 동일한 결과를 제공 함.
        • 분산노드간 데이터가 항상 똑같다.
      • Availability(가용성)
        • 어떠한 상황의 R/W 에도, 결과 제공을 보장 함.
        • 분산노드중 하나에 장애라도, 전체엔 문제없다.
      • Partition-Tolerance(분할내성)
        • 네트워크 장애로 통신단절이 발생해도, 각각의 시스템은 정상적으로 동작 함.
        • 분산노드간에 통신장애라도, 단절된 각각은 정상적으로 동작한다.
      • 한 분산시스템만으로는 절때! CAP 3가지 다 완벽히 지원 할 수 없음. (1가지를 꼭 희생해야 함)
        • CA : MySQL, PostgreSQL, ...
        • AP : Cassandra, TokyoCabinet, CouchDB, DynamoDB ...
        • PC : Redis, MongoDb, HBase, BigTable, ... (예를들면, Availability는 외부솔루션으로 처리하는식)
      • (기본적으로 RDBMS는 P를 지양 , NoSQL은 P를 지향)
    • PACELC 이론
      • CAP에서 확장하여, Partitioning 장애가 있고/없는 상황에 따라~ 능동적으로.
      • Partition -> "Availability&Consistency" Else "Latency&Consistency"
      • 강한 일관성(Strong Consistency) 와 지연(Latency) 간의 적절한 타협점을 찾는 전략.
      • 예) 네트워크간 통신에러가 나면,
        • A를 포기하고 장애로 돌입하여~ C를 유지.
        • C를 포기하고 부분적 노드에만 적용해~ HA유지.
      • 예) 정상적인 네트워크 상황에서는,
        • 모든 노드에 적용과정에서 L 과 C 간에 trade-off.
    • 수직적 확장 Vs 수평적 확장
      • 수직적 한계에 봉착으로... 수평적 분산시스템이 탄생.
      • 즉, 여러대의 서버를 하나의 클러스터로 묶을수있는 기술이다.
      • 샤딩 및 Replication
        • 샤딩 : 필연적으로 분산을 하는, '자동샤딩'이 필수적.
          • App -> {Router} -> Shard (애플리케이션에서는 신경쓰지 않고, 라우터가 알아서 해줌)
        • Replication : 보완적으로 분산에 위험성에 따른, '다중복제'도 필수적.
          • Master-Slave
          • peer to peer (Multi-Master) (Ring형태의 노드에 Gossip 프로토콜 기반으로 해줌)
    • ACID Vs BASE
      • ACID
        • 시스템의 트랜잭션이 안전하게 수행된다는 것을 보장하기 위한 성질.
        • 원자성(Atomicity) : transaction 작업이 부분적으로 실행되다가 중단되지 않는 것을 보장.
        • 일관성(Consistency) : transaction 작업이 완료되면, 그 결과는 일관적임을 보장.
        • 고립성(Isolation) : transaction 작업 수행 시, 다른 transactino이 끼어들지 못하도록 보장.
        • 지속성(Durability) : transaction 작업이 수행되면, 그 최종적인 반영을 보장.
      • BASE (Basically Available. Soft state. Eventually consistency.)
        • Basically Available : 부분적인 장애는 날수도 있이만, 전면적인 장애는 최소한 없음.
        • Soft state : Master-Slave 구조로 외부로 전송되는 사본 데이터는 비일관적 일수있음.
        • Eventually consistency : 복제 과정에서 약간의 지연은 있을 수 있지만, 최종적 궁극적 일관성 제공.
    • Consistency(일관성) 이슈
      • Read/Wirte : 샤딩 및 복제 를 지원하면서, 일관성을 유지하기는 쉽지않다.
      • Durability(지속성) 완화 : 성능을 최대화 하기위해, 메모리를 이용
      • Quorum(정족수) : 분산환경에서 성능을 위해, Replication Factor를 기준으로 RQ/WQ를 튜닝.
    • ...

-끝-

'NoSQL' 카테고리의 다른 글

NoSQL 모델링 이란?  (0) 2020.02.29
NoSQL 이란?  (0) 2020.02.29
DynamoDB  (0) 2019.05.18
HBase  (0) 2019.05.18
Cassandra  (0) 2019.05.18

+ Recent posts