zoukankan      html  css  js  c++  java
  • mongodb应用

    首先我们来分析下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的单独字段来存放。如上述红字部分。

  • 相关阅读:
    数量关系
    笨办法学python问题记录
    CSS布局与定位
    python学习 预备篇
    基于hexo搭建个人博客
    CSS常用样式
    计算机组成原理(期末篇)
    Codeblock错误提示栏隐藏
    Markdown标记语言
    笨办法学python(不同版本的python代码差别)
  • 原文地址:https://www.cnblogs.com/liangxiaofeng/p/6405081.html
Copyright © 2011-2022 走看看