mysql 與mongodb的特點與優劣

來源:互聯網
上載者:User

標籤:機制   mic   ros   mongodb   node   profile   turn   stat   turned   

首先我們來分析下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的單獨欄位來存放。如上述紅字部分。

mysql 與mongodb的特點與優劣

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.