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
  • ProudNet DB cache 시스템과 ADO 혼용하기
  • DB cache 성향 조절하기
  • DB cache 부분 로드하기
  • DB cache ver.1 로부터 옮겨오기

Was this helpful?

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

DB Cache 활용법

PreviousDB Cache 사용 및 활용NextADO API

Last updated 1 year ago

Was this helpful?

ProudNet DB cache 시스템과 ADO 혼용하기

DB cache 시스템과 ADO Wrapper API를 혼용하여 사용할 수 있습니다. 그러나 에서 독점적으로 접근하고 있는 테이블을 사용자가 직접 다룰 때에는 다음을 주의해야 합니다.

테이블 읽기

아직 Proud.CDbCacheServer2 에 cache된 데이터가 DBMS 에 flush가 되지 않았을 수 있으므로, 얻은 데이터 정보는 실제 상태보다 과거의 데이터일 수 있습니다. 테이블 쓰기 Proud.CDbCacheServer2 에서 간헐적으로 이들 테이블에 기록을 합니다. 따라서 이들 테이블에 무언가를 기록할 경우 Proud.CDbCacheServer2 에서 기록하는 데이터와 겹쳐버릴 수 있습니다. 따라서 이들 테이블에 기록하기는 권장하지 않습니다.

참고

DB cache 성향 조절하기

Cache된 DB 정보를 DBMS 에 기록하는 주기를 짧게 잡으면 DBMS의 성능을 저하 시키는 대가로 DB cache server 가 비정상 종료되어 미처 저장되지 못한 데이터가 소실될 위험성을 줄입니다.

관련 메서드는 Proud.CDbCacheServer2.SetDbmsWriteIntervalMs 입니다.

DB cache client 에서 데이터를 사용하고 unload 하면 해당 게이머 정보는 DB cache server 메모리에 남아 있다가 일정 시간이 지나면 DB cache server의 메모리에서도 소멸합니다.

만약 이 일정 시간을 짧게 잡으면 DB cache server의 사용 메모리가 증가하지만 DBMS 에서 데이터를 불러오는 횟수가 줄기 때문에 DBMS의 부하가 적어집니다.

관련 메서드는 Proud.CDbCacheServer2.SetUnloadedDataHibernateDurationMs 입니다.

DB cache 부분 로드하기

로딩한 게이머의 캐릭터들 중 한 캐릭터에 대한 정보만 로딩이 필요할 수 있습니다. ProudNet DB cache 시스템의 기능을 이용하여 부분 로드가 가능합니다.

예시 * RootTable 은 Gamer, CharacterInfo 테이블이다. * ChildTable 은 Gamer 하위의 Hero, CharacterInfo의 하위로 Item 이다. * Hero의 사용자가 정의한 필드의 최소 한 개는 CharacterInfo의 필드 한 개를 가리킨다.

아래는 대략적인 코드 입니다.

Proud::Guid outSessionGuid;
Proud::CDbCacheClient2* c = ...;
c->RequestExclusiveLoadData(L"Gamer",L"GamerID",gamername,outSessionGuid);
//이요청으로 loadedGamerData 를 받습니다.
 
...//사용자가 캐릭터를 고르고 loadedGamerData에서 사용자가 고른 캐릭터를 찾음.
 
c->RequestExclusiveLoadData(L"CharacterInfo",L"HeroIndex",findCharacter->heroIndex,outSessionGuid); 
//사용자가 고른 캐릭터에 관한 정보트리를 로드.

DB cache ver.1 로부터 옮겨오기

항목
ver 1
ver 2
대처 방법

Credential 발급

있음

없음

Credential 발급을 직접 구현해야 함

DB cache에 의해 게이머 인증 콜백

있음

없음

게이머 인증 콜백 대신 직접 콜을 해야 함

DB cache ver 1에서는

  • Gamer, Hero, WorldObject Table을 다루며, 옮겨오기 위해서는 OwnerUUID, RootUUID, ParentUUID를 지정해야 합니다.

  • CLoadedHeroData, CLoadedItemData, CLoadedGamerData 를 다루는데, 이들 대신 CLoadedData 를 다루어야 합니다.

을 사용하여 Gamer 를 로딩하고 유저가 고르는 캐릭터에 따라 CharacterInfo 를 로딩할 수 있습니다.

🌐
서버와 클라이언트
DB cache가 다루는 데이터를 DB가 직접 엑세스하기
독점적 데이터 불러오기 및 새 데이터 추가하는 방법