사용자가 점점 많아지면 DB는 많은 Query를 처리하기엔 너무 힘든 상황이 오게 된다.
DB의 과부화를 막고, Query의 대부분을 차지하는 Select를 어느 정도 해결하기 위해 Replication
이란 방법이 나오게 되었다.
두 개의 이상의 DBMS 시스템을 Mater / Slave로 나눠서 동일한 데이터를 저장하는 방식이다.
Master에는 데이터의 수정사항을 반영만 하고 Replication을 하여 Slave에 실제 데이터를 복사한다.
Slave는 Master 서버로부터 복제된 데이터를 받아서 같은 (읽기) 요청에 대해 대응한다.
예를 들어, 주문 내역 데이터가 필요한 다른 서버들이 데이터를 요청하면, 원본 데이터가 쌓여있는 master 서버가 아닌 똑같은 데이터가 복제된 slave 서버가 데이터를 제공하는 식이다.
여기서 생기는 의문은
master와 slave 서버의 데이터 동기화는 어떤 방식으로 이루어질까?
이다.
간단한 과정만 정리해보겠다.
master에게는 데이터 동시성이 아주 높게 요구되는 트랜잭션을 담당하고, slave에게는 데이터 동시성이 꼭 보장될 필요는 없는 경우에 읽기 전용으로 데이터를 가져오게 된다.
Query의 대부분은 Select가 차지하고 있다.
이 부분의 부하를 낮추기 위해 많은 Slave를 생성하면 Read(Select) 성능 향상 효과를 얻을 수 있다.
참고 링크