[게임 서버] 4.7 플레이어 정보의 저장
카테고리: GameServer
태그: GameServer
📦 4. 게임 서버와 클라이언트
👉🏻 항목 7: 플레이어 정보의 저장
💾 서버 저장의 필요성
온라인 게임의 저장 원칙:
- 온라인 게임은 클라이언트에 정보를 잘 저장하지 않고, 서버에 저장한다
클라이언트 저장의 문제점:
1. 해킹에 취약하다:
- 클라이언트 측 데이터는 쉽게 조작 가능
2. 크로스 플랫폼 플레이 불가:
- 같은 사용자가 다른 기기를 사용할 때 이어서 할 수 없다
온라인이 아닌 게임도:
- 온라인 게임이 아니더라도 서버에 저장하는 경우가 많다
- 예시: 스팀 클라우드 시스템이 있다
🗄️ 1. 데이터베이스
일반적인 구조:
- 온라인 게임은 일반적으로 클라이언트 - 서버 - 데이터베이스 구조로 운영된다
데이터베이스 종류:
관계형 데이터베이스 (RDBMS):
- MSSQL
- MySQL
- Oracle
- PostgreSQL
NoSQL:
- MongoDB
- Couchbase
🎯 2. 데이터베이스로 운영하는 이유
📊 1. 빠른 데이터 관리/분석
특징:
- 특정 조건을 가진 데이터를 빠르게 검색/수정이 가능하다
🔄 2. 데이터 복원 기능
특징:
- 사본 저장소를 사용하여 빠르게 복원할 수 있다
⚛️ 3. 트랜잭션 (Transaction)
정의:
- 데이터베이스나 컴퓨터 시스템에서 논리적인 기능을 수행하기 위해, 더 이상 분할할 수 없는 최소한의 업무 처리 단위를 의미한다
원자성 보장:
- 트랜잭션 기능을 통해 원자성을 가진다
실제 예시 - 송금 과정:
사용자 1이 2에게 100만원을 송금하는 과정은 두 과정을 거친다:
- 사용자 1의 계좌에서 100만원을 차감한다
- 사용자 2의 계좌에 100만원을 추가한다
문제 상황:
- 만약 1을 수행하고 시스템이 중단되면, 중간에 돈이 증발한다
트랜잭션의 역할:
- 이를 되돌릴 수 있도록 하는 기능이 트랜잭션이다
- 모두 성공하거나, 모두 실패하도록 보장
🔒 4. 데이터 일관성
제약 조건 설정:
- 데이터에 제약 사항을 걸 수 있다
예시:
- 중복 닉네임 금지
- 가진 돈 음수 금지
🔐 5. 락 (Lock)
개념:
- 멀티스레드의 임계영역과 비슷한 개념이다
문제 상황:
- 처리가 2개 이상 동시에 진행될 때, 한 데이터가 동시에 여러 처리에서 액세스하며 이상한 결과가 나올 수 있다
해결 방법:
- 이를 락(Lock)을 이용하면 해결할 수 있다
🛡️ 6. 장애 내성
로그 버퍼 시스템:
- 데이터베이스는 데이터를 미리 기록해 두는 로그 버퍼를 사용한다
복구 능력:
- 시스템이 중단되더라도, 로그 버퍼가 있기에 원래 해야 했던 일들을 찾을 수 있다
🧐 정리
데이터베이스 사용의 6가지 이유
| 이유 | 핵심 기능 | 게임에서의 활용 |
|---|---|---|
| 빠른 관리/분석 | 효율적인 쿼리 처리 | 플레이어 검색, 랭킹 조회 |
| 데이터 복원 | 백업 및 복구 | 장애 발생 시 데이터 복구 |
| 트랜잭션 | 원자성 보장 | 아이템 거래, 재화 이동 |
| 데이터 일관성 | 제약 조건 설정 | 닉네임 중복 방지, 유효성 검증 |
| 락 | 동시성 제어 | 동시 거래 처리, 경쟁 상태 방지 |
| 장애 내성 | 로그 기반 복구 | 서버 다운 시에도 데이터 보호 |
저장 구조 비교
| 저장 위치 | 장점 | 단점 | 사용 사례 |
|---|---|---|---|
| 클라이언트 | 빠른 액세스 오프라인 가능 |
해킹 취약 기기 간 동기화 불가 |
그래픽 설정 키 바인딩 |
| 서버 | 보안 크로스 플랫폼 |
네트워크 필요 지연 시간 |
게임 진행 상황 계정 정보 |
| 데이터베이스 | 영구 저장 복구 가능 일관성 보장 |
복잡도 증가 관리 비용 |
플레이어 데이터 게임 통계 |
핵심 원칙
1. 중요한 데이터는 서버에:
- 게임 진행 상황
- 아이템 인벤토리
- 재화 (골드, 보석 등)
- 계정 정보
2. 사소한 데이터는 클라이언트에:
- UI 설정
- 그래픽 옵션
- 키 설정
- 사운드 볼륨
3. 트랜잭션이 필요한 작업:
- 아이템 거래
- 재화 이동
- 계정 상태 변경
- 중요 게임 이벤트
4. 락이 필요한 상황:
- 동시 거래 처리
- 공유 리소스 접근
- 경매장 입찰
- 길드 자금 관리
댓글남기기