더북(TheBook)

서버가 해야 하는 일을 데이터 단위로 분산하는 것도 이와 같습니다. 각 서버는 모두 똑같은 종류의 일을 합니다.

한편 기능적 분산은 이와 다르게 분산을 하는 방식입니다. 여기서는 한 머신이 처리해야 하는 데이터의 처리 단계를 세분화해서 여러 머신이 나누어 처리합니다.

시계 공장에 비유하자면, 시계 제작의 각 단계를 서로 다른 사람이 수행하는 것입니다.

p376_2

▲ 그림 9-12 시계 제작의 단계를 여러 사람이 서로 다른 역할로 나누어서 함

 

물론 데이터 분산과 기능적 분산을 혼용할 수도 있습니다.

이러한 분산 처리 원리는 게임 서버뿐만 아니라 데이터베이스에서도 비슷합니다. 데이터 단위 분산이란 테이블 1개를 테이블 안의 키 필드 단위로 분배하는 것을 의미합니다. 예를 들어 레코드 10억 개가 들어 있는 거대한 테이블 1개를 데이터베이스 서버 10개로 분배한다고 치면, 각 데이터베이스 서버는 레코드 1억 개를 가집니다. 이렇게 데이터베이스를 분산하는 것을 파티셔닝이라고 합니다.

기능 단위 분산이라면 서로 다른 테이블을 서로 다른 서버에 배치하는 것을 의미합니다. 예를 들어 플레이어 정보를 담는 테이블 A와 아이템 정보를 담는 테이블 B가 있으면, 테이블 A는 데이터베이스 서버 1에 담고 테이블 B는 데이터베이스 서버 2에 담는 것입니다. 이 장 후반에서 자세히 설명합니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.