1. 程式人生 > >1.一步一步學開發(遊戲賬服數據庫的使用 Erlang 服務器)

1.一步一步學開發(遊戲賬服數據庫的使用 Erlang 服務器)

http ats 日誌收集 yield data obj 開發 用戶 nbsp

mysql 與mongodb的特點與優劣

http://www.cnblogs.com/eternal1025/p/5419905.html

首先我們來分析下mysql 與mongodb的特點與優劣。 下面是我以前做的ppt的部分截圖。 技術分享 技術分享 技術分享 技術分享
再來分析下應用場景, a.如果需要將mongodb作為後端db來代替mysql使用,即這裏mysql與mongodb 屬於平行級別,那麽,這樣的使用可能有以下幾種情況的考量: (1)mongodb所負責部分以文檔形式存儲,能夠有較好的代碼親和性,json格式的直接寫入方便。(如日誌之類) (2)從data models設計階段就將原子性考慮於其中,無需事務之類的輔助。開發用如nodejs之類的語言來進行開發,對開發比較方便。 (3)mongodb本身的failover機制,無需使用如MHA之類的方式實現。
這種情況也是不少的,我手上的遊戲就是有nodejs+mongodb的,用戶總量也是千萬級別的,流水什麽還不錯。
b.將mongodb作為類似redis ,memcache來做緩存db,為mysql提供服務,或是後端日誌收集分析。 考慮到mongodb屬於nosql型數據庫,sql語句與數據結構不如mysql那麽親和 ,也會有很多時候將mongodb做為輔助mysql而使用的類redis memcache 之類的緩存db來使用。 亦或是僅作日誌收集分析。
問題2: 樓主可能沒有觀察仔細。 我做了下實驗。例子如下: > db.a.save({"a":3}); > db.a.save({"a":4}); > db.a.find() { "_id" : ObjectId("540826eb0e83c3fb7ea07a0f"), "a" : 3 } { "_id" : ObjectId("5416869a9fa8a67830dfc9a8"), "a" : 4 } > db.a.find().sort({a:1}) { "_id" : ObjectId("540826eb0e83c3fb7ea07a0f"), "a" : 3 } { "_id" : ObjectId("5416869a9fa8a67830dfc9a8"), "a" : 4 } > db.a.find().sort({a:-11}) { "_id" : ObjectId("5416869a9fa8a67830dfc9a8"), "a" : 4 } { "_id" : ObjectId("540826eb0e83c3fb7ea07a0f"), "a" : 3 } > db.system.profile.find({"ns":"test.a"}) { "op" : "query", "ns" : "test.a", "query" : { "query" : { }, "orderby" : { "a" : 1 } }, "ntoreturn" : 0, "ntoskip" : 0, "nscanned" : 2, "scanAndOrder" : true, "keyUpdates" : 0, "numYield" : 0, "lockStats" : { "timeLockedMicros" : { "r" : NumberLong(156), "w" : NumberLong(0) }, "timeAcquiringMicros" : { "r" : NumberLong(4), "w" : NumberLong(3) } }, "nreturned" : 2, "responseLength" : 86, "millis" : 0, "ts" : ISODate("2014-09-15T06:26:36.681Z"), "client" : "127.0.0.1", "allUsers" : [ ], "user" : "" } { "op" : "query", "ns" : "test.a", "query" : { "query" : { }, "orderby" : { "a" : -11 } }, "ntoreturn" : 0, "ntoskip" : 0, "nscanned" : 2, "scanAndOrder" : true, "keyUpdates" : 0, "numYield" : 0, "lockStats" : { "timeLockedMicros" : { "r" : NumberLong(120), "w" : NumberLong(0) }, "timeAcquiringMicros" : { "r" : NumberLong(4), "w" : NumberLong(3) } }, "nreturned" : 2, "responseLength" : 86, "millis" : 0, "ts" : ISODate("2014-09-15T06:26:39.125Z"), "client" : "127.0.0.1", "allUsers" : [ ], "user" : "" }
sort的使用並不是放在query中的,而是有一個orderby的單獨字段來存放。如上述紅字部分。

5.mysql,Emysql

https://github.com/Eonblast/Emysql

1.一步一步學開發(遊戲賬服數據庫的使用 Erlang 服務器)