• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            戰(zhàn)魂小筑

            討論群:309800774 知乎關(guān)注:http://zhihu.com/people/sunicdavy 開(kāi)源項(xiàng)目:https://github.com/davyxu

               :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
              257 隨筆 :: 0 文章 :: 506 評(píng)論 :: 0 Trackbacks

            數(shù)據(jù)庫(kù)選擇歷程

            我們的項(xiàng)目一直使用MySQL作為數(shù)據(jù)庫(kù). 無(wú)論是從C++的服務(wù)器, 還是到Golang服務(wù)器. 當(dāng)年搞服務(wù)器時(shí), 看大部分人都是用SQL(MySQL/SQLServer), 而Mongo感覺(jué)像邪教一樣, 再加上服務(wù)器還是Linux比較正統(tǒng), 所以果斷選了MySQL.

            剛開(kāi)始感覺(jué),游戲服務(wù)器的數(shù)據(jù)存儲(chǔ)其實(shí)應(yīng)該是蠻神圣的過(guò)程. 那么多的數(shù)據(jù), 需要按照MySQL一樣分表, 分字段存儲(chǔ), 為了查詢, 還要乖乖的學(xué)一下SQL的語(yǔ)法

            就這么折騰了幾年. 在云DB的蒙蔽下, 一直認(rèn)為MySQL就是做游戲服務(wù)器存儲(chǔ)的專(zhuān)業(yè)技術(shù). 分布式和存儲(chǔ)壓力一定交給云DB來(lái)做. 直到真正試了下NoSQL在游戲服務(wù)器開(kāi)發(fā)里的思路.

            用了Golang, 才發(fā)現(xiàn)同步寫(xiě)邏輯是多么的優(yōu)雅.

            用了NoSQL系列的數(shù)據(jù)庫(kù), 才意識(shí)到: 游戲服務(wù)器的數(shù)據(jù)存儲(chǔ)和游戲服務(wù)器的存盤(pán)兩個(gè)概念差異其實(shí)蠻大的.

            MySQL中, 背包其實(shí)跟角色完全沒(méi)有關(guān)系, 只是通過(guò)1個(gè)角色id映射過(guò)去, 人為的割裂了數(shù)據(jù)的關(guān)聯(lián)性. 還硬生生的整出個(gè)概念叫結(jié)構(gòu)化查詢讓你學(xué)

            NoSQL中, 只是把數(shù)據(jù)庫(kù)當(dāng)成是存儲(chǔ)點(diǎn), 每個(gè)角色的數(shù)據(jù)是完整的一塊. 里面怎么存隨你便. 每個(gè)角色通過(guò)id來(lái)查詢, 其他都沒(méi)有了

            于是乎, 游戲開(kāi)發(fā)變得異常簡(jiǎn)單. MySQL角色進(jìn)門(mén)查詢4~5次才能搞定要的數(shù)據(jù).而NoSQL一口氣全查出來(lái), 存盤(pán)也無(wú)需增量, 直接存盤(pán)就可以了

            所以現(xiàn)在覺(jué)得, NoSQL的思路對(duì)于游戲服務(wù)器存儲(chǔ)來(lái)說(shuō)簡(jiǎn)直是完美的!

            轉(zhuǎn)載請(qǐng)注明: 戰(zhàn)魂小筑http://www.shnenglu.com/sunicdavy

             

            NoSQL數(shù)據(jù)庫(kù)方案對(duì)比

            NoSQL下實(shí)現(xiàn)方案很多, 游戲常用的就這么3家: mongo, redis, memcached

            下面說(shuō)下優(yōu)缺點(diǎn)

            mongo

            磁盤(pán)映射內(nèi)存數(shù)據(jù)庫(kù)

            value為document類(lèi)型, 基于BSON的value序列化

            應(yīng)用場(chǎng)景:

            適合多寫(xiě)少讀, 例如日志和備份

            轉(zhuǎn)載請(qǐng)注明: 戰(zhàn)魂小筑http://www.shnenglu.com/sunicdavy

             

            redis

            內(nèi)存數(shù)據(jù)庫(kù)

            單核

            value限制512M

            多種value類(lèi)型, 游戲用途使用私有的序列化協(xié)議(例如protobuf)

            支持落地(bgsave)

            用戶: 新浪, 淘寶, Flickr, Github

            應(yīng)用場(chǎng)景: 適合讀寫(xiě)都很高, 數(shù)據(jù)處理復(fù)雜等

            轉(zhuǎn)載請(qǐng)注明: 戰(zhàn)魂小筑http://www.shnenglu.com/sunicdavy

             

            memcached

            內(nèi)存數(shù)據(jù)庫(kù)

            多核

            value限制1M

            不支持落地(持久化)

            用戶: LiveJournal、hatena、Facebook、Vox

            應(yīng)用場(chǎng)景: 動(dòng)態(tài)系統(tǒng)中的緩沖, 適合多讀少寫(xiě)

            轉(zhuǎn)載請(qǐng)注明: 戰(zhàn)魂小筑http://www.shnenglu.com/sunicdavy

            個(gè)人評(píng)價(jià)

            memcached 適合網(wǎng)頁(yè)緩沖, 游戲里很少有使用. 目前只有騰訊云支持云memcached

            redis非常適合游戲的內(nèi)存數(shù)據(jù)庫(kù), 但是落地策略會(huì)比較復(fù)雜, 需要具體分析, 可以參考后面的鏈接看下云風(fēng)怎么處理這個(gè)問(wèn)題

            mongo數(shù)據(jù)庫(kù)在早期還是非常不錯(cuò)的NoSQL的數(shù)據(jù)庫(kù). 工具比較方便, 可視化. 但是隨著近年來(lái)游戲的并發(fā)度越來(lái)越高, 所以為了一次到位, 很多人還是選擇了redis

            下圖參考自知乎問(wèn)題. 鏈接在后面有提示, 若侵權(quán)請(qǐng)聯(lián)系刪除

            轉(zhuǎn)載請(qǐng)注明: 戰(zhàn)魂小筑http://www.shnenglu.com/sunicdavy

            image

            參考鏈接:

                談?wù)勀澳盃?zhēng)霸在數(shù)據(jù)庫(kù)方面踩過(guò)的坑( Redis 篇)

            http://blog.codingnow.com/2014/03/mmzb_redis.html

            轉(zhuǎn)載請(qǐng)注明: 戰(zhàn)魂小筑http://www.shnenglu.com/sunicdavy

            Memcache,Redis,MongoDB(數(shù)據(jù)緩存系統(tǒng))方案對(duì)比與分析

            http://blog.csdn.net/suifeng3051/article/details/23739295

             

            http://www.zhihu.com/question/31417262


            評(píng)論

            # re: 游戲數(shù)據(jù)庫(kù)選型mysql,mongo, redis, memcached[未登錄](méi) 2015-07-12 02:11 楊粼波
            有redis就用redis,沒(méi)有就用memcached,memcached是redis的子集,也可以稱(chēng)之為memcached的升級(jí)版。redis的查詢語(yǔ)句要豐富得多,當(dāng)然,也是要復(fù)雜的多。

            mongoDB雖然也是NoSQL數(shù)據(jù)庫(kù),但是與以上兩者有很大的區(qū)別。首先,它是磁盤(pán)數(shù)據(jù)庫(kù),而不是內(nèi)存數(shù)據(jù)庫(kù),雖然也可以搞成內(nèi)存數(shù)據(jù)庫(kù),但是那是歪門(mén)邪道。而且,該數(shù)據(jù)庫(kù)的穩(wěn)定性有待改進(jìn),對(duì)于數(shù)據(jù)庫(kù)而言,穩(wěn)定性是我們首要考慮的,服務(wù)不能出問(wèn)題,數(shù)據(jù)不能出問(wèn)題。而mysql這樣發(fā)展了許多年的數(shù)據(jù)庫(kù)就是我們的首選了,通常將其作為熱備數(shù)據(jù)庫(kù)。

            redis的熱備份看起來(lái)很美好,但其實(shí)不好用,還有損性能。通常都會(huì)被關(guān)閉掉。

            以前新浪是用的memcached,現(xiàn)在不知道了,他們還好像自己改進(jìn)了,當(dāng)然,主要是做分布式。

            淘寶也有基于memcached開(kāi)發(fā)的Tair,不過(guò)據(jù)說(shuō)現(xiàn)在他們自己也慢慢開(kāi)始放棄了,主要也是在分布式上作了點(diǎn)文章。http://code.taobao.org/p/tair/src/

            對(duì)于游戲這樣的應(yīng)用而言,只要不是騰訊那樣的用戶量級(jí),都不需要考慮分布式的問(wèn)題。只需要省心便可,用redis功能多,自然是首選。  回復(fù)  更多評(píng)論
              

            # re: 游戲數(shù)據(jù)庫(kù)選型mysql,mongo, redis, memcached[未登錄](méi) 2015-07-12 02:27 楊粼波
            再啰嗦幾句。

            阿里云也支持memcached的,當(dāng)然也支持redis,
            騰訊云太挫了,我對(duì)它印象不好,有用過(guò),redis是今年才支持的,要不是因?yàn)椴恢С謗edis,我也就不會(huì)選擇memcached了,很多功能本可以用redis里面很簡(jiǎn)單一條命令搞定的,不過(guò)話說(shuō)回來(lái),至少也沒(méi)有它搞不定的事情。

            memcached有個(gè)最郁悶的事情就是沒(méi)有什么稱(chēng)手的工具,只有一個(gè)php的memAdmin以及http://www.cnblogs.com/xffy1028/archive/2013/02/01/2861706.html

            而Redis有一個(gè)http://www.oschina.net/p/redisdesktop,這個(gè)很好用。

            內(nèi)存數(shù)據(jù)庫(kù)相對(duì)于磁盤(pán)數(shù)據(jù)庫(kù)而言,不要抱有太大期望。只不過(guò)是說(shuō),磁盤(pán)數(shù)據(jù)庫(kù)隨著數(shù)據(jù)量增大,它的性能會(huì)呈指數(shù)級(jí)降低。而內(nèi)存數(shù)據(jù)庫(kù)基本上是沒(méi)有太大的影響,僅此而已。磁盤(pán)數(shù)據(jù)庫(kù)數(shù)據(jù)量少的時(shí)候,可能跟內(nèi)存數(shù)據(jù)庫(kù)的性能差不多哦。  回復(fù)  更多評(píng)論
              

            # re: 游戲數(shù)據(jù)庫(kù)選型mysql,mongo, redis, memcached 2015-07-13 09:24 戰(zhàn)魂小筑
            @楊粼波
            感謝楊大大專(zhuān)業(yè)級(jí)回答  回復(fù)  更多評(píng)論
              

            # re: 游戲數(shù)據(jù)庫(kù)選型mysql,mongo, redis, memcached[未登錄](méi) 2015-07-14 12:50 楊粼波
            @戰(zhàn)魂小筑
            專(zhuān)業(yè)倒稱(chēng)不上,因?yàn)樽鲞^(guò),這些都比較了解了,只能說(shuō)是過(guò)來(lái)人罷了。我那個(gè)數(shù)量級(jí),簡(jiǎn)直要笑掉大牙的。要專(zhuān)家級(jí),起碼得經(jīng)歷過(guò)大用戶量的沖擊才行啊。  回復(fù)  更多評(píng)論
              

            # re: 游戲數(shù)據(jù)庫(kù)選型mysql,mongo, redis, memcached 2015-07-20 20:29 T
            mongo號(hào)稱(chēng)程序員的最?lèi)?ài),運(yùn)維的噩夢(mèng)。
            過(guò)了開(kāi)發(fā)期的甜蜜時(shí)光,后面就有的痛苦了。  回復(fù)  更多評(píng)論
              

            一本大道久久香蕉成人网| 久久久久国产精品| 亚洲精品无码成人片久久| 高清免费久久午夜精品| 久久久久国产一区二区三区| 国内精品久久久久久久久电影网| av国内精品久久久久影院| 久久精品国产一区二区| avtt天堂网久久精品| 色妞色综合久久夜夜| 久久97久久97精品免视看| 一本久久a久久精品亚洲| 久久久久久国产精品美女| 久久精品九九亚洲精品天堂 | 国产产无码乱码精品久久鸭| 国产日韩久久免费影院| 国产69精品久久久久777| 国产亚洲美女精品久久久2020| 久久99久久无码毛片一区二区| 久久久久亚洲AV成人片| 国产精品乱码久久久久久软件| 国产成人综合久久久久久| 国产精品久久久久久吹潮| 久久久精品国产免大香伊 | 伊人久久精品线影院| 中文字幕无码免费久久| 亚洲?V乱码久久精品蜜桃| 久久精品成人免费国产片小草| 色噜噜狠狠先锋影音久久| 久久精品国产福利国产秒| 国产产无码乱码精品久久鸭 | 精品久久久久久无码中文字幕| a高清免费毛片久久| 久久99精品久久久久久久不卡 | 四虎影视久久久免费| 久久精品中文字幕有码| 久久高潮一级毛片免费| 精品国产婷婷久久久| 久久精品无码一区二区三区免费| www亚洲欲色成人久久精品| 91久久精品无码一区二区毛片|