그러면 고가용성을 유지하면서 데이터베이스 처리 속도를 유지하려면 어떻게 해야 할까요? 슬레이브가 없을 때처럼 속도가 잘 나오게 하려면, 슬레이브의 변경 전파 과정을 건너뛰고 바로 게임 서버에 응답하면 됩니다.
▲ 그림 8-8 신속한 응답을 중요시할 때의 데이터 변경 처리
먼저 게임 서버가 마스터 DB에 변경하는 질의를 보냅니다(➊). 그러면 마스터 DB는 변경 요청을 바로 처리하고 결과를 반환합니다(➋). 마스터 DB는 슬레이브 DB에 변경된 것을 알려 주고(➌), 슬레이브 DB는 변경 사항을 자기 자신에게 적용합니다.
단 마스터와 슬레이브는 항상 같은 상태가 아니고 일시적으로 옛 데이터를 가지는 문제가 있을 수 있습니다. 즉, 일관성이 깨집니다. 다른 표현으로 최신이 아닌 데이터인 스테일 데이터(stale data)를 가져오는 문제가 있습니다.
이쯤 되면 “너무한 것 아닌가?” 하는 생각이 들 수도 있습니다. 하지만 그 대가로 얻는 것은 고가용성 데이터베이스입니다.