63
回答
OSC 第 64 期高手问答 — 大数据存储 MongoDB 实战指南
终于搞明白,存储TCO原来是这样算的>>>   

OSCHINA 本期高手问答(3月20日-3月28日)我们请来了 @MonogoDB (郭远威)为大家解答关于 MongoDB 实战方面的问题。

郭远威,高级软件工程师,现任职于华为公司,擅长大数据存储相关工作。自幼好学、勤专研,熟悉大数据存储,精通MySql、Oracle、MongoDB等 数据库;曾开发云计算存储平台、内存数据库等产品,管理、迁移过海外大型电信运营商的数据库系统;热爱开源技术,对最新技术保持高度关注。

为了鼓励踊跃提问,@MonogoDB   会在问答结束后从中挑选 10 位优秀评论者赠送一本大数据存储MongoDB实战指南。大家可以跟作者探讨一下书中的问题和内容:)

购买链接:

http://item.jd.com/11642550.html

http://product.dangdang.com/23640360.html

OSChina 高手问答一贯的风格,不欢迎任何与主题无关的讨论和喷子。

下面欢迎大家就大数据存储 MongoDB 实战方面问题向 @MonogoDB 提问,请直接在回帖中提问。

举报
叶秀兰
发帖于3年前 63回/10K+阅
共有63个答案 最后回答: 2年前
我们用mongo存了800w数据,然后要给这些文档添加一个新字段,那速度……一个多小时锁库,整个就跟宕机了一样,请问怎么解决?
--- 共有 5 条评论 ---
oO010Oo回复 @Mr_Jing : 这个需求表明对mongoDB的理解还停留在结构化数据库的层面 2年前 回复
博图轩回复 @Mr_Jing : 特别紧急的问题,可以到Q群202878693咨询郭老师 2年前 回复
MonogoDB回复 @Feng_Yu : 用3.0的wiretiger存储引擎,实现了行级别的所 3年前 回复
Feng_Yu可以考虑升级到mongodb 3.0,支持文档级别的锁,不会再锁整个库了 3年前 回复
Mr_Jing这个问题我也遇到过,我们有一个集合中存了6000W条文档,要给每个文档加一个新字段,而且有少部分文档有该字段,其中内容不能覆盖,要保留。 第一次我自己整个集合使用$exists判断该字段存在否,不存在的就添加。直接把mongoDB跑挂掉了。 恢复后,第二次,我是把集合中以另外一个字段为查找条件(该字段有索引),在加上$exists,部分部分的添加。跑了大概20个小时,终于添加完毕。 3年前 回复
@MonogoDB :对于mysql切换到MongoDB有什么需要注意的地方或者建议吗?~
--- 共有 4 条评论 ---
博图轩回复 @liyanginchina : 在豆瓣写图书评论,经评选可以获得精美图书一本,共10个名额,赶紧加油!http://book.douban.com/subject/26333934/ 3年前 回复
liyanginchinamongo是没有事务控制的,这一点从关系型数据库转过来要特别注意 3年前 回复
博图轩回复 @MonogoDB : 欢迎加入MongoDB大数据学院QQ群: 202878693。本书作者在群里将会提供专业指导! 3年前 回复
MonogoDB主要是设计数据库时表结构与关系数据库的设计思路变化较大,以前需要多张表关联的地方,在mongoDB里面可以将这些字段嵌套的放在一条记录里 3年前 回复
@MonogoDB :针对mongoDB数据库在使用的过程中都有哪些比较优秀的框架可以推荐下
--- 共有 8 条评论 ---
YYQ_回复 @MonogoDB : java spring-data-mongodb 感觉可以呀 3年前 回复
WilsonHuang直接用官方的Mongdb驱动,做的很完善,没必要外面的框架的 3年前 回复
liyanginchinajava中使用spring mongo,另外说一句,.net驱动出2.0发布版了,使用起来非常方便快捷 3年前 回复
lgscofield我们现在的架构是mongo存储Hadoop分析完的数据,有些是存储在HBase,还有些存储在Oracle,感觉很乱的样子,还是不能太信任mongo,ha的问题不好解决,10台mongo集群,负载太高,真是又爱又恨 3年前 回复
lgscofieldquerydsl可以用或者spring MongoDB 3年前 回复

@MonogoDB :楼主可以分享一下你们的MongoDB用在什么场景?使用用MongoDB的理由。 本人曾经使用过Mongodb,但是一直被坑,无论是写入的速度或者是统计数据,Mongodb在数据量比较的情况下都比MYSQL 性能低。我的数据量大概是8千万左右,基于ID做了分片。 尤其是统计数据,Mongodb的真心的慢 。当初我们使用的版本是2.6 

--- 共有 13 条评论 ---
郑浩锋@yinhex 你这就颠倒了意思吧!~如果查询条件并不包含sharekey,那么分表的查询方式往往是轮询每张表查吧,但其实有更优化的方法,把每张表所属的机器发个查询请求,而每个查询请求在每台机器上再并行查询每张拆分表。没错,如果你不想做这些额外工作,mongodb就可以帮你做了。。。 3年前 回复
yinhex回复 @郑浩锋 : 锋哥 你mongodb也是无法避免的吧?只要你的sharekey设置不好 结果也就一个B样。 3年前 回复
roychui没怎么对比过,我这里已经超过13亿数据量。 3年前 回复
郑浩锋回复 @yinhex : 彬哥,这是有区别的。。mysql分表,如果是业务查询字段多了,例如A、B、C字段,但是这三个字段会随意组合两两查询,那你如何hash分表?如果同时把所有分表都查询了,自己还要写并发查询功能(总不能单线程一张张查询) 3年前 回复
WilsonHuangwiredtiger引擎生产环境中正式用过吗,真的有说的那么好吗? 3年前 回复
@MonogoDB :你好,目前我们项目组拟采用slf4j+log4j+mongoDB方式来进行系统日志的记录,选择采用log4mongo-java 来记录异常堆栈信息,并将mongoDB构建成副本集来存放备份(因为觉得用分片模式场景不太符合),另外,对日志记录的查询方面简单的使用某些开源的UI工具(mongovue等),请问在记录异常堆的处理上,您有好的建议吗?谢谢~
@MonogoDB:你好楼主可否从业务角度分享下平常经常使用mysql其中那些业务场景可以从其中剥离出来用mongodb代替mysql去处理效果更美味?还有有生产上mongodb使用中经常遇到那些常见问题,有何瓶颈?谢谢
--- 共有 1 条评论 ---
MonogoDB我觉得可以把那种关系性不是很强的业务剥离出来用mongodb,还有经常要被访问的数据业务也可以用mongodb; 在实际开发中,遇到最多的问题还是用老的关系数据库的思维来设计表结构和写处理读写操作语句,但查询语句恰恰是mongodb不是很擅长的,所以在设计数据库和表的时候注意一下 3年前 回复

@MonogoDB :你好,我想请教一下:

1.在mongoDB中,一个集合存储上限大概是多少?

2.数据量大概到什么量级就一个考虑使用分片了?

3.mongoDB读写分离意义大不大?

--- 共有 2 条评论 ---
咚往咚来Mongo本来就非常适合读操作。可以做主从,主来写,从来读。否则读写在一个上,很容易就挂了。 3年前 回复
Eumenidies这个问题我也想知道 3年前 回复
顶部