ProudNet.Cn
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 note
    • 技術說明
      • 對主循環的理解
      • 配置服務器防火牆
      • 加密和解密
      • 發生錯誤時的應對事項
      • 錯誤信息列表
      • 同步角色位置
      • 客戶端與服務器通信
      • MiniDump (Error Dump System)
      • [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 遷移
  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

混用 ProudNet DB cache系統和 ADO

DB cache系統和ADO Wrapper API可以混合使用。 但是,當用戶直接處理獨家訪問的表時,應注意以下幾點。

讀表

在 Proud.CDbCacheServer2 中緩存的數據可能尚未在 DBMS 中 flush,因此獲得的數據信息可能是過去的數據,而不是實際狀態。 寫入表格 在 Proud.CDbCacheServer2 中斷斷續續地寫入這些表 。 因此,如果在這些表中記錄某些東西, 可能會與 Proud.CDbCacheServer2 中記錄的數據重合。 因此,我們不建議記錄在這些桌子上。

參考

調整DB cache定位

如果將緩存DB信息寫入DBMS的週期縮短,以降低DBMS的性能爲代價,DB緩存服務器異常終止,減少未來得及保存的數據丟失的危險。

相關方法爲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 緩存系統的功能可實現部分加載。

例子 * RootTable 是 Gamer 和 CharacterInfo 表。 * ChildTable是Hero下的一個Item,是Gamer下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 表,您需要指定 OwnerUUID, RootUUID, ParentUUID 來移動它們。

  • 它涉及CLoadedHeroData、CLoadedItemData和CLoadedGamerData,它們必須涉及CLoadedData。

您可以使用來載入玩家並根據使用者選擇的角色載入CharacterInfo。

🌐
服務器和客戶端
DB直接存取DB cache所處理的數據
裝入獨家數據並添加新數據方法