程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> ASP.NET >> 關於ASP.NET >> ASP.NET Web Game構架設計2--數據庫設計

ASP.NET Web Game構架設計2--數據庫設計

編輯:關於ASP.NET

首先來看一下數據庫設計。

游戲的數據庫設計是項目基礎設計中很重要的一個環節,下面將說明以下幾個 要點:

u 為什麼選用SqlServer

u 基本原則

u 表關系的設置

u 數據的冗余設計

u 什麼時候使用存儲過程

u 什麼時候使用EntityFramework什麼時候使用ADO.NET

1.為什麼先用SQL Server

首先,不要對SQL Server的性能表示懷疑。作為WebGame應用來講,它的吞吐 能力,承載能力完全夠用。

第二,如果服務代碼是使用C#來編寫的,那麼SQL Server2005/2008能得到最 好的C#/Visual Studio兼容性。最重要的是C#中很多組件都是為SQL Server設計 的,並且做了很多優化,例如:EntityFramework,SQL CLR等。

第三,SQL Server中支持SQL CLR功能,即可以使用C#/VB.NET來編寫自定義函 數,存儲過程等,對於熟悉C#的開發人員來講是一個福音,不僅僅是代碼編寫規 則熟悉,而且可以使用一部分.NET類庫來實現想要的功能,比如說基本.NET類型 ,數學運算,WCF等功能。

第四,可能很多人都覺得使用SQL CLR是因為T-SQL用的不精,其實不然,SQL CLR實際上是利用C#寫好DLL文件,然後被SQL Server調用,本質上利用了.NET來 提高SQL Server的性能,在某些情況下SQL CLR的效率要高於T-SQL。

2.基本原則

在設計游戲數據庫時千萬別怕表多,在一個常規的網頁游戲中,數據表的數量 應該大於150。因為一個游戲項目,細分起來,是由少則10幾個,多則幾十個子系 統組織起來的,每個系統都有若干張表來輔助存儲。

另外,游戲系統的數據庫可以按狀態分為:配置數據存儲表(如基本數值配置 ),狀態數據存儲表(如計時),以及數據極不穩定的用來表示某個物件所屬的 中間關系數據表(如某個用戶招募了某一個軍官)。總之,要事無巨細,將90%的 數據以數據庫的形式存儲起來。這麼作的原因在於,游戲中很多的數據都是敏感 數據,如金幣,某個物件的數量等,如果將過多的數據存儲於內存中,一旦服務 掉電,丟失的數據將無法挽回,客服的電話會被打爆的。

當然,如果將大多數數據存儲在數據庫,反復讀寫所帶來速度問題,也是不可 以忽略的,解決方法如下:

u 客戶端在加載的時候,就把常用的只讀配置數據存儲到客戶端。

u 客戶端要修改數據時,先修改客戶端的數據,然後立即顯示出來,最後再 異步調用服務器的接口,去修改數據。

u 如果客戶端一定要等待服務器的處理結果,那麼就直接利用異步方式調用 服務器接口,但是一定要給用戶提示,防止誤操作的產生。

u 服務器一定要將常用的數值計算的操作數和結果儲存在內存中,以提高響 應速度,例如:游戲中常常用到Pow函數,那就在內存中建立一個Pow的函數值表 ,每次調用時,就直接從表中取出來。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved