그림 10-36은 1인칭 슈팅 게임에서 플레이어가 자주 지나가는 지역을 통계로 추출하여 해당 데이터를 게임 맵에서 보여 줍니다. 이것으로 게임 제작자는 게임 밸런스를 조절하거나 맵 구조를 개선하는 등 서비스를 업그레이드합니다.
한편 성능상 요구 사항은 다음과 같습니다.
• 로그를 통계 분석해서(Data Warehousing, DW) 그 결과를 게임 제작자에게 제공해야 합니다.
• 이 과정에서 효율적인 데이터 검색 기능이 필요합니다. 다음 코드는 그 예시입니다.
SELECT COUNT(*) FROM LOG1 WHERE V>10 AND V<=20 SELECT COUNT(*) FROM LOG1 WHERE V>20 AND V<=30 SELECT COUNT(*) FROM LOG1 WHERE V>30 AND V<=40 SELECT COUNT(*) FROM LOG1 WHERE V>40 AND V<=50 ...
이를 위해 데이터베이스에 로그를 저장해야 하기도 합니다. 먼저 이러한 일들을 분산 처리하기 전, 게임 서버에서 자신의 DB에 로그를 기록하는 경우부터 살펴봅시다.
DB에 기록하는 시간은 파일에 직접 기록하는 시간보다 훨씬 많이 걸립니다. DB에 기록하는 양이 순간적으로 많으면 처리 시간이 오래 걸리는 일이 대량으로 쌓이고, 당연히 DB에서 값을 가져오거나 기록할 때 걸리는 시간도 길어집니다. 결국 게임 플레이 도중 지연 시간이 간헐적으로 발생합니다.