當前位置:首頁 » 游戲問答 » 游戲伺服器存儲哪些資料庫

游戲伺服器存儲哪些資料庫

發布時間: 2023-08-27 04:15:09

A. 魔獸世界用的什麼資料庫

引用自cnblogs@Zealic:
最近幾天重溫了一下WOW,結合最近學習的資料庫知識和自己的了解,對WOW的大概體系做了分析。當然,我僅僅只是窺豹見斑而已,希望對WOW有所了解的大俠能給我和向了解WOW的人指點;讓世人更加了解WOW,讓中國的游戲能夠學習(不是抄襲)並超越WOW。

不知道哪來的想法,就想到了WOW的資料庫的結構以及程序實現,那麼,就來了解一下吧。
首先想到:Game Server 使用的是什麼OS和Database
起初猜測為 : Unix/BSD ,資料庫為 Oracle
這樣比較適合WOW這樣的大型網路游戲,因為其存儲和數據量極大
網上查到的一些關鍵資料,可以證明我的猜想和實際相差不大
1.9C在一次伺服器故障中的說明,下面只列出關鍵部分
08:29 收到EVA存儲報警郵件,聯系數據中心工程師,聯系惠普工程師.
08:35 故障應急流程啟動,相關人員包括THE9/HP/Blizzard US .
15:33 Oracle專家加入故障應急流程
15:50 暴雪資料庫工程師開始與Oracle專家繼續分析故障情況.
17:15 暴雪表示暫時還未從他們的admin以及DBA處獲得任何有新的消息,他們仍然在研究此故障。
2.Blizzard的資料庫管理員招聘要求
Oracle Database Administrator
The World of Warcraft development team is looking for a self-motivated and knowledgeable IT professional to help administer the WoW databases. As the person responsible for handling the database-side of WoW pushes and patches, our Live Team Oracle DBA's job ties would include designing, configuring, maintaining, monitoring, benchmarking and troubleshooting Oracle databases.
Blizzard offers a fun, creative, and technically challenging environment with excellent compensation and a full range of benefits.
Responsibilities:
Provide proction on-call support.
Maintain and enhance existing databases.
Perform routine database maintenance.
Work with end users to ensure smooth proction rollouts and pushes.
Assist in training other employees.
Requirements:
3+ years professional Oracle DBA experience, including Oracle 9i.
Extensive experience with database performance tuning.
Experience working with large databases (>1TB).
Experience with Oracle RAC and Partitioning features.
Proficiency in Linux/Unix environments including shell scripting.
Plusses:
Strong knowledge of SQL & PL/SQL.
Familiarity with UNIX tools and shell scripting
Familiarity with HP EVA's and Data Protector.
Passion for video games, including MMORPG's

因此WOW的伺服器應該為 : HPUNIX + ORACLE
那麼我就對WOW的資料庫做一些猜想,至於正確與否或者符合程度集合,就無從而知了
主要分為以下幾塊
-游戲伺服器:
這里說的是游戲中的伺服器,而非上面提到的物理意義上的伺服器,比如,七區的惡魔之魂、黑鐵、加基森就是游戲伺服器。
-游戲區:
游戲大區,一個大區是由許多個游戲伺服器構成的。之所以分大區,我認為完全是因為物理原因,每個區都其物理構成應應該是一個伺服器群集,而在這群集上,有許多的資料庫實例,每一個資料庫實例都對應一個游戲伺服器。
-驗證系統:
游戲中的登錄、排隊、驗證身份應該都是又這一部分完成的。
-聊天頻道:
聊天頻道是一個獨立的伺服器,這一點可以從游戲中人物、地圖都很卡而聊天卻完全不受影響的情況分析出來,聊天不可以離線發送消息,因此我可以武斷的認為,聊天伺服器基本不操作資料庫,至多在當前無法處理或者玩家暫時接收不到的情況下,使用一些臨時的表來保存消息;或者伺服器將聊天數據全部保存到資料庫中,以方便對玩家的行為查詢。
另外,聊天伺服器是獨立於所有伺服器的,每個區的所有游戲伺服器都是使用對應於該區的聊天伺服器。這樣,可以專門針對聊天伺服器的特性,對伺服器的系統和資料庫進行專門的優化
-副本&戰場:
副本&戰場(以下簡稱副本)我覺得也應該和聊天伺服器相同,是個獨立的伺服器,不過他與普通游戲伺服器不同,並沒有保存其他的地圖數據,僅僅保存了副本地圖的數據。
至於如何實現跨服戰場,我以為,應該是將需要的角色數據做拷貝到副本伺服器中,並且鎖定原本伺服器中的數據(表或行),在退出戰場時,用副本伺服器的數據更新原來的數據。我們可以把戰場看做資料庫中的臨時表,做了處理以後更新到需要保存的地方。
通過上述解釋,也可以理解為什麼在進入戰場時需要載入畫面了,載入畫面並不僅僅是作為一個過渡畫面,它還承載了載入客戶端資源,與服務端通信進行處理;顯示載入畫面時,副本伺服器應該是如上所說游戲伺服器交換了角色數據。
大型副本與普通副本不同的地方,我覺得僅僅是重置時間和副本策略做了改變而已。
-地圖
地圖的定義是在客戶端的資源中的,為防止用戶篡改,BLZ對定義地圖的資源文件和DBC進行使用了混淆命名以及檢查校驗;之所以這么認為,是因為中國WOW公測的時候,出現一些加速外掛,可以讓角色直接穿越牆壁、地表等看起來不可能穿越的物體,這便驗證了BLZ為了減輕伺服器負擔,直接在客戶端進行了大部分的碰撞檢測。
WOW的的實際地圖結構和游戲中我們所見到的不一樣,他是把一塊大陸分成N個小塊的地圖數據,客戶端僅僅需要載入玩家角色所在位置附近的所有地圖塊就可以了。其技術細節就不做詳細分析了。
-東西大陸:
每個大陸都應該是一個獨立的資料庫,之所以出現載入畫面,我認為是因為兩個大陸的地形材質大不相同,客戶端需要先釋放出發大陸的所有資源,載入目的大陸的必要資源,同時轉移角色的數據到目的大陸。
-角色:
游戲中的角色應該是被分離成數個表,包括玩家的屬性,任務,包裹,郵箱,銀行等。一些重要的,比如物品包裹、郵箱、銀行,伺服器會在很短(相對其他數據而言)的時間內將內存中的緩存數據寫入提交到資料庫中;而一些相較以上數據不是很重要的數據,則需要很長時間才會提交到資料庫。這也解釋了為什麼伺服器回檔時,角色的位置和任務等都回檔了,而物品卻沒有回檔,這也造成了傳說中的雙手痛擊。
-怪物:
世界中的怪物生成應該是使用了Prototype模式,那麼保存怪物的數據其實之需要保存其會變化的值就即可。
-其他:
游戲中總是有一些事件發生,比如:暗月馬戲團的來訪,萬聖節的活動,情人節的活動等等,這些東西應該都是具有伸縮性的,可以想像,為了方便BLZ自WOW的管理和擴展,在伺服器或伺服器群集管理中心中,應該有BLZ為自己和代理商提供的工具或者說腳本使用指南。至於WOW採用的腳本是什麼,這個我就猜不到了,可能是Perl\Python\SH吧,反正不會是LUA。
-行為與技能:
為什麼WOW玩起來感覺這么流暢,沒有其他網路游戲看起來或感覺起來反應遲鈍,WOW並沒有每時每刻都與客戶端進行通信;其主要工作原理是,客戶端首先處理用戶的輸入,並執行相應的開始動畫或處理,而實際顯示結果要等待服務端處理並返回後才會顯現出來,這就是為什麼在掉線後,玩家還做操作角色,但是卻無法獲得操作結果。
技能和行為差不多,其實很多游戲中的限制都是在客戶端進行的,這都是BLZ為了減輕服務端的負擔、減少通信量而造成的。那麼,我在這里大膽的猜測,只要分析出內存地址或相應代碼,WOW是有很多地方可以被篡改的;因為據我所知,目前WOW的所有外掛都是通過暴力修改客戶端的內存實現的,而非常見的修改網路封包,BLZ加密還是做的很不錯的 :)。

基本上就分析了這么多了,我試圖從自己的腦子里挖出更多的東西,可惜所了解的東西仍然太少,沒辦法,現這樣吧。
----------------------------------------------

PS:大芒果單機版WOW採用的MySQL

熱點內容
絕地求生未來之役比賽為什麼進不去 發布:2023-08-31 22:07:08 瀏覽:1235
dota2位置什麼意思 發布:2023-08-31 22:00:04 瀏覽:678
lol電競是什麼樣子 發布:2023-08-31 21:58:40 瀏覽:1133
絕地求生八倍鏡的那個圓圈怎麼弄 發布:2023-08-31 21:58:31 瀏覽:1185
lol龍龜一個多少金幣 發布:2023-08-31 21:55:07 瀏覽:583
王者如何改游戲內名稱 發布:2023-08-31 21:55:06 瀏覽:871
游戲主播打廣告是什麼意思 發布:2023-08-31 21:55:06 瀏覽:1525
絕地求生如何免費拿到ss7賽季手冊 發布:2023-08-31 21:52:13 瀏覽:748
pgg是哪個國家的戰隊lol 發布:2023-08-31 21:52:07 瀏覽:630
一個人的時候才發現游戲很沒意思 發布:2023-08-31 21:49:24 瀏覽:1229