ProudNet Docs
WebsiteProud ConsoleLanguage
  • 🌐ProudNet 프라우드넷
    • ProudNet 소개
    • 다운로드 및 설치
      • ProudNet 라이센스 인증 방법
      • AMI
    • 프로젝트 설정
      • C++
      • C#
      • Mac Xcode
      • Linux
      • Unity3D
        • iOS 빌드
      • Unreal Engine 4
      • PIDL 컴파일러 실행
    • ProudNet 사용하기
      • 서버와 클라이언트
        • 서버 활용법
        • 클라이언트 활용법
      • RMI
        • RMI 활용법
      • PIDL
        • PIDL 활용법
      • 이벤트 핸들링
      • 통신 메시지
      • P2P 통신
        • P2P 통신 활용법
    • ProudNet 활용하기
      • 활용 방법
      • 성능을 위한 팁
    • ProudNet에서 DB 사용하기
      • DB Cache System ver.2
        • DB Cache 이론 및 이해
        • DB Cache 설치 및 네트워크 설정
        • DB Cache 서버와 클라이언트
        • DB Cache 사용 및 활용
          • DB Cache 활용법
      • ADO API
      • ODBC API
    • ProudNet 유틸리티
  • ProudNet 참고자료
    • 기술노트
      • 메인 루프의 이해
      • 서버 방화벽 설정
      • 암호화 및 복호화
      • 에러발생 시 대처사항
      • 에러 메시지 목록
      • 캐릭터 위치 동기화
      • 클라이언트-서버 통신
      • MiniDump (오류덤프시스템)
      • [1.6 버전] 서버 간 LAN 통신기
    • 용어집
    • Sample 예제
  • 🌐프라우드 서비스
    • 콘솔 이용 안내
    • ProudChat
      • SDK 다운로드
        • C++
        • C#
        • Unity3D
        • Unreal Engine 4
      • 서비스 기능
Powered by GitBook
On this page
  • DB cache 를 위한 게임 데이터베이스 스키마
  • DB cache 서버 준비
  • DB Cache 클라이언트 준비

Was this helpful?

  1. ProudNet 프라우드넷
  2. ProudNet에서 DB 사용하기
  3. DB Cache System ver.2

DB Cache 설치 및 네트워크 설정

PreviousDB Cache 이론 및 이해NextDB Cache 서버와 클라이언트

Last updated 1 year ago

Was this helpful?

DB cache 를 위한 게임 데이터베이스 스키마

DB cache 를 위한 데이터베이스 스키마는 사용자가 원하는대로 구성될 수 있습니다.

단, 다음 규칙을 준수해야 합니다.

  • RootUUID, OwnerUUID, UUID 필드가 들어가야 합니다.

  • RootUUID, OwnerUUID, UUID를 Combination PK로 지정하여 사용하면 인덱싱을 이용한 검색에 악영향을 줍니다. 따라서 각각의 index를 만들어 사용하는 것이 성능 향상에 도움이 됩니다.

  • 상기 필드 중 RootUUID와 OwnerUUID는 Non-Unique Index 로 지정합니다. 그리고 UUID는 Primary Key로 지정합니다.

  • 상기 필드는 MySQL 에서 varchar(38)로, MSSQL 에서는 uniqueidentifier 형식이어야 합니다.

  • Root table와 Child table의 이름은 중복되지 않아야 합니다.

  • DB cache 클라이언트와 서버가 사용하는 stored procedure 들이 자동으로 게임 데이터베이스 스키마에 추가되는데, 이를 수정하거나 제거하지 마십시오.

3가지 필수 인덱스 추가 예제 스크립트

ALTER TABLE dbo.Gamer ADD CONSTRAINT
 
PK_Gamer PRIMARY KEY CLUSTERED
 
(
 
UUID
 
) WITH( IGNORE_DUP_KEY = OFF) ON [PRIMARY]
 
 
 
CREATE INDEX IX_Gamer_OwnerUUID ON dbo.Gamer
 
(
 
OwnerUUID
 
) WITH( IGNORE_DUP_KEY = OFF) ON [PRIMARY]
 
 
 
CREATE INDEX IX_Gamer_RootUUID ON dbo.Gamer
 
(
 
RootUUID
 
) WITH( IGNORE_DUP_KEY = OFF) ON [PRIMARY]

DB cache 서버 준비

데이터베이스 스키마를 생성 후 DB cache server 인스턴스를 생성해야 하며, Proud.CDbCacheServer2 타입으로 인스턴스는 각 게임 서버들 사이에서 단 1개만 있으면 충분합니다.

인스턴스
설명

Proud.CDbCacheServer2.New

인스턴스 생성

Proud.CDbCacheServer2.Start

실행

  • DB 인스턴스에 접속하는 connection string 은 ADO connection string 형식이며, 샘플에서 참고하실 수 있습니다.

  • DB cache server의 인증 key 는 DB cache 서버에서 접속을 식별하기 위한 DB cache client 에서 보내는 데이터입니다.

  • Proud.CDbCacheServer2.Start 를 호출할 때 Proud.CDbCacheServer2StartParameter.m_tableNames에 사용자에 의해 정의된 테이블 이름들이 들어가야 합니다.

  • Proud.CDbCacheServer2.Start 가 실행되는 동안 sp_Get<테이블이름>Data과 sp_Remove<테이블이름>Data 그리고 sp_Add<테이블이름>Data가 자동으로 생성됩니다.

DB Cache 클라이언트 준비

각 게임 서버(인증 서버, 게임 zone 서버, 로비 서버 등)은 Proud.CDbCacheClient2.New를 실행하여 client 인스턴스를 생성해야 하며, 타입은 Proud.CDbCacheClient2 입니다.

생성 후 Proud.CDbCacheClient2.Connect를 통해 DB cache server에 접속을 시도해야 합니다. 접속 시도는 비동기로 이루어지며 접속이 성공하거나 실패하면 Proud.IDbCacheClientDelegate2.OnJoinDbCacheServerComplete가 콜백됩니다. DB cache client는 내부적으로 Proud.CLanClient를 사용하는데 스레드 풀링 방식이므로 따로 FrameMove 가 없습니다.

DB cache server와의 연결 해제를 위해서는 Proud.CDbCacheClient2 객체를 파괴하거나 Proud.CDbCacheClient2.Disconnect를 호출합니다. 이때 DB cache 클라이언트는 Proud.IDbCacheClientDelegate2.OnLeaveDbCacheServer가 콜백됩니다.

🌐
MMORPG 에서 게이머 데이터를 저장하기 위한 데이터베이스 스키마의 예