有谁在用 MongoDB 体验怎么样 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
vicalloy
V2EX    MongoDB

有谁在用 MongoDB 体验怎么样

  •  
  •   vicalloy 2012-09-11 10:44:12 +08:00 12813 次点击
    这是一个创建于 4779 天前的主题,其中的信息可能已经有所发展或是发生改变。
    MongoDB已经火了有些时间了,相信已经有不少人将MongoDB用到了自己产品中。不知道大家使用MongoDB的体验怎么样。

    MongoDB 的优势应当是速度以及海量数据的支持,另外一个有点就是schemeless。

    关于schemeless
    真正需要用到schemeless的地方似乎并不是太多。目前很多 MongoDB 封装,也都增加了scheme的定义功能,这基本上等于放弃了schemeless。另外如果过度的schemeless,日子久了后可能自己都搞不清楚自己到底在数据库里放了什么东西。

    MongoDB的特性决定了某些关系数据库很容易做的操作在MongoDB中会很不容易实现(比如多表关联查询等,而且据说分页性能也不怎么样?)。为配合MongoDB,在构架设计乃至产品功能需求方面都需要做些调整。

    海量,可能大多人都不太会有机会遇到真正需要MongoDB的海量数据。

    对于大多应用场景,采用关系数据库为主,以MongoDB为辅的方式是否会更加合理?或者说MongoDB的应用场景还是比较有限的。
    35 条回复    2018-05-11 08:52:20 +08:00
    fire9
        1
    fire9  
       2012-09-11 10:58:52 +08:00
    如果你是关系型的数据,我劝你还是考虑MySQL,PostGreSQL等关系型数据库吧。MongoDB由于处理日志等简单关系的类型还是不错的。
    superisaac
        2
    superisaac  
       2012-09-11 11:18:52 +08:00
    我们在用mongodb, 自己写了个mapping. 类似django那种方法。mongodb可以代替关系数据库。schema migration也比关系数据库简单。findAndModify之类的方法很方便。
    mongodb的问题是没有事务支持,这点对于严肃应用来说比较难办。
    holystrike
        3
    holystrike  
       2012-09-11 11:26:15 +08:00
    据个人的实际使用中,schemeless确实没多大的优势体现,某些时候反而有弄巧成拙的感觉
    holystrike
        4
    holystrike  
       2012-09-11 11:27:17 +08:00
    当然了,也不排除本RDB禁锢较深,没有找到 schemeless 的最佳实践
    lqs
        5
    lqs  
       2012-09-11 12:25:49 +08:00
    schemeless适合在一个表里存储有细微差别的数据,省掉了在关系型数据库里要用多个表建立一对一关系。

    另外以前版本mongodb性能是软肋,2.2里也许有提升。
    W2EX
        6
    W2EX  
       2012-09-11 13:16:11 +08:00
    大内存机器的话性能很好,关键是要至少2台以上服务器才能用于生产环境
    avatasia
        7
    avatasia  
       2012-09-11 13:31:33 +08:00
    直接上2.2 看新版的documents.

    http://docs.mongodb.org/manual/contents/

    数据没上1亿条,还是乖乖用RDB吧。
    forest520
        8
    forest520  
       2012-09-11 13:50:53 +08:00
    mongodb不用在开发前定好schema,可以后续迭代的时候进行修改,这是它最大的优势,客观上提升了开发效率。
    如果要schema,那还用mongodb干嘛?
    ivyshark
        9
    ivyshark  
       2012-09-11 14:01:12 +08:00   1
    mongodb简直是一坨屎

    mongodb的写全局锁2.2才换到db级别的锁
    mongodb没有事务支持 怕丢数据的不要用
    用了mongo之后你会发现执行语句出错了是不返回错误的 当然这也是它快的原因之一
    号称支持gis 却连polygon的and或者or查询都做不了 至少到2.2都没有解决.
    group只能用mapreduce,用不上索引,大数据量group效率的还不如mysql。2.2之后倒是可以用新框架,我试了下还是很慢。
    ivyshark
        10
    ivyshark  
       2012-09-11 14:04:00 +08:00
    忘记了 mongo数据超过一定数量排序会直接出错 这个bug目前也为解决 很奇葩
    ivyshark
        11
    ivyshark  
       2012-09-11 14:06:03 +08:00
    还有用sharding做生产环境的简直是自寻死路 一旦挂掉了 就得整个停下来重新做sharding
    反正是一坨屎
    avatasia
        12
    avatasia  
       2012-09-11 14:22:27 +08:00   1
    @ivyshark 你是专门注册来吐糟的么?呵呵
    ivyshark
        13
    ivyshark  
       2012-09-11 14:50:06 +08:00
    @avatasia 这都被你发现了 因为我们这边美国的架构师开始强烈要求用mongo 用自己都后悔了
    ivyshark
        14
    ivyshark  
       2012-09-11 14:53:34 +08:00
    @avatasia 吐槽归吐槽 不过有些场景用mongo还是不错的
    企业应用就不建议用了
    W2EX
        15
    W2EX  
       2012-09-11 14:59:39 +08:00
    总要看用的人怎么用,用不用得好
    ivyshark
        16
    ivyshark  
       2012-09-11 15:25:48 +08:00
    @W2EX 你可以试试
    ivyshark
        17
    ivyshark  
       2012-09-11 15:26:27 +08:00
    @W2EX 如果你遇到问题 不要查你的代码 直接查他的jira 都在里面
    avatasia
        18
    avatasia  
       2012-09-11 15:57:21 +08:00
    @ivyshark 我也是被人骗采用mongodb,SMG也在用mongodb,他们的据说用了一年多了
    ivyshark
        19
    ivyshark  
       2012-09-11 16:19:14 +08:00
    @avatasia 微博什么的对数据一致性要求不高的可以用用 数据量不大或者巨大的也可以考虑 需求太复杂的就放弃吧
    W2EX
        20
    W2EX  
       2012-09-11 21:06:44 +08:00
    @ivyshark 关于性能问题: 只要你有大内存,热数据全部放在内存里,真的可以很快,数据多了可以分片... 扩展方向是 先纵向 再横向
    关于可靠性: 只能说mongo是给有钱人用的,要没几台大内存机器组replica set 没有快照备份机制式 是不能用于生产环境 另外空间占用大也是真的...
    但是咱不能就说它性能不好、不可靠啊,出得起钱性能就好就可靠了
    ipconfiger
        21
    ipconfiger  
       2012-09-11 22:42:58 +08:00
    用在生产系统中实际运维的时候你会很想屎的......
    ivyshark
        22
    ivyshark  
       2012-09-12 10:20:54 +08:00
    @W2EX 你分片的时候出过问题么? 是停机解决的么? 我感觉mongo的分片不是一般的垃圾
    avatasia
        24
    avatasia  
       2012-09-12 10:51:57 +08:00
    今天在重整数据,从oracle到mongodb,一晚上18w条,崩溃。正式环境有2000w条左右。
    ivyshark
        25
    ivyshark  
       2012-09-12 11:19:27 +08:00
    @avatasia 看来你们数据量不是很大 我们一次上传都有10w+的数据
    avatasia
        26
    avatasia  
       2012-09-12 13:02:32 +08:00
    @ivyshark 用了多长时间?
    ivyshark
        27
    ivyshark  
       2012-09-12 13:05:07 +08:00
    @avatasia 我们逻辑比较复杂 还没有在服务器上调 我笔记本上随便测试了下 10W条6分钟不到 我觉得还行 因为我们每条记录都做了很多验证
    ivyshark
        28
    ivyshark  
       2012-09-12 13:06:07 +08:00
    @avatasia 这中间包括一些查询别的表再做验证的时间
    avatasia
        29
    avatasia  
       2012-09-12 13:30:40 +08:00
    @ivyshark 我也做了验证,但是为毛,1个小时就1w条左右,太操蛋了。一条要100ms,也有可能0。
    本地局域网两台机器,一开始以为是mongodb开了journal影响速度,已经关了,但还是慢。我循环里又没sleep,真要命啊。
    avatasia
        30
    avatasia  
       2012-09-12 15:23:51 +08:00
    @ivyshark 分析了下,有两个原因:
    1. 在插入数据的时候,每次要做删除处理
    2. 删除的query 没有做索引
    superisaac
        31
    superisaac  
       2012-09-12 16:40:13 +08:00
    @avatasia 为什么我上次导入13万条记录到mongodb,也就十几秒时间?秒杀postgresql
    avatasia
        32
    avatasia  
       2012-09-12 16:58:40 +08:00
    @superisaac 13w条,光载入内存也得要这么久吧。
    superisaac
        33
    superisaac  
       2012-09-12 20:20:50 +08:00
    @avatasia 几十M而已。
    dcoder
        34
    dcoder  
       2018-05-11 08:51:51 +08:00
    MongoDB, PostgreSQL, MySQL 都用过, 我觉得下面这篇说得不错, 以前没读到过.
    http://www.sarahmei.com/blog/2013/11/11/why-you-should-never-use-mongodb/
    dcoder
        35
    dcoder  
       2018-05-11 08:52:20 +08:00
    发完后,发现这个帖子好老...
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2774 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 37ms UTC 12:34 PVG 20:34 LAX 05:34 JFK 08:34
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86