難以滿足的游戲數(shù)據(jù)處理需求
時間:2022-04-27 05:27:01 | 來源:行業(yè)動態(tài)
時間:2022-04-27 05:27:01 來源:行業(yè)動態(tài)
數(shù)據(jù)庫是游戲軟件的核心組件,游戲玩家的各種信息(個人屬性、裝備、社交信息等)、運營數(shù)據(jù)、游戲場景數(shù)據(jù)等都需要借助數(shù)據(jù)庫來保存。過去游戲軟件主要采用傳統(tǒng)的關系數(shù)據(jù)庫,但傳統(tǒng)關系型數(shù)據(jù)庫并不總能很好地滿足這個行業(yè)的需求。
游戲市場競爭激烈、變化快,有機構調查手機游戲平均壽命為6個月,網(wǎng)絡游戲也不超過一年。這就要求游戲的開發(fā)要盡可能快,同時,為了保持游戲玩家的新鮮感,游戲上線后還需要不斷增加新的功能、新的玩法。這些需求落實到數(shù)據(jù)庫層面就要求數(shù)據(jù)庫對開發(fā)人員友好,方便修改和調用,以盡可能節(jié)省開發(fā)時間。
其次,游戲上線后到底有多少玩家有很大不確定性,要準確預測非常困難。一般規(guī)律是,游戲新上線后會迎來一輪高峰,隨后會逐漸下降,但也有可能因為某個事件或者某個原因重新熱起來,甚至成為爆款。這帶來的問題是:資源如果準備多了卻沒有足夠玩家上線,造成浪費;準備少了,游戲會卡頓或者要排隊,影響玩家體驗。這個需求落實到數(shù)據(jù)庫層面,就需要數(shù)據(jù)庫具有高可擴展性,在上線人數(shù)太多資源不夠時能快速擴容,人數(shù)少時能快速縮容,而且要是無縫的,以節(jié)省成本。
傳統(tǒng)數(shù)據(jù)庫在滿足上述兩大需求時存在不足。傳統(tǒng)數(shù)據(jù)庫具有嚴格表結構,表結構一旦定義后如果更改非常困難,還可能涉及應用程序的修改,這會帶來很多隱患。傳統(tǒng)數(shù)據(jù)庫一種常見的表結構是給游戲的每一種武器、每個物品、每一類元素建一個表,表之間通過ID關聯(lián),比較清晰。但是,遇到游戲變更要加表、變更表時就比較麻煩。而且,隨著表數(shù)量越來越多,數(shù)據(jù)庫的整體性能也會降低。
另外,傳統(tǒng)數(shù)據(jù)庫大多數(shù)是集中式架構,如果數(shù)據(jù)量太大需要擴容,往往需要分庫分表,這通常要修改程序,或者采用Oracle RAC這樣的高端數(shù)據(jù)庫軟件,雖然能部分解決大數(shù)據(jù)量的問題,但成本高,同時可擴展的數(shù)據(jù)容量也受限。
除了傳統(tǒng)數(shù)據(jù)庫之外,也有些游戲直接拋棄了數(shù)據(jù)庫,采用數(shù)據(jù)序列化技術,把數(shù)據(jù)變成一個二級制的數(shù)據(jù)塊保存在數(shù)據(jù)庫中,所有數(shù)據(jù)的處理都在內存完成,好處是性能非常高,但所有操作都依賴程序邏輯來完成,開發(fā)和維護成本都非常高。
傳統(tǒng)數(shù)據(jù)庫在游戲市場的這些不足給了MongoDB以機會,MongoDB也抓住這一機會,迅速在游戲市場站穩(wěn)腳跟,并持續(xù)開疆拓土。