忘记密码   免费注册 查看新帖 | 论坛精华区

ChinaUnix.net

  平台 论坛 博客 认证专区 大话IT HPC论坛 徽章 文库 沙龙 自测 下载 频道自动化运维 虚拟化 储存备份 C/C++ PHP MySQL 嵌入式 Linux系统
1234下一页
最近访问板块 发新帖
查看: 37269 | 回复: 31

[MongoDB] 国内MongoDB领域的先驱——采访资深数据库专家“cd红丸” [复制链接]

论坛徽章:
0
发表于 2012-06-14 10:51 |显示全部楼层
本期采访嘉宾:王文龙(cd红丸)

个人简介:资深数据库专家,《mongoDB开发与精要》作者,国内MongoDB领域的先驱之一,积累了丰富的实战经验。精通MySQL、SQL Server和DB2等大中型数据库的运维和管理,还擅长Java和C#等技术。此外,他对Redis和分布式计算技术也有一定的研究。

欢迎大家跟帖提问,我们对于跟帖提问的网友给予30积分的奖励。更多访谈请关注ChinaUnix访谈录:http://star.chinaunix.net/

ChinaUnix社区:

      王兄,非常高兴能采访到你,之前看到你一直活跃在博客,最近在社区也经常看到你的分享,呵呵,先给CU的网友打声招呼,简单的向大家介绍下自己嘛。

cd红丸:
      大家好,我是“红丸”。最初是在大学时看了“淹死的鱼”写的一本《风往南吹》一书才使我对IT这个行业充满幻想,所以科班出身的我毕业后也如期的找到了一份Java工程师的工作。后来干着干着就转到了数据库这个方向,玩过DB2、MySQL、SQL Server,就是没碰过Oracle。

ChinaUnix社区:
      我知道王兄之前写过一本书《mongoDB开发与精要》,作为国内mongoDB的先驱者之一,能否给大家介绍下mongoDB的发展以及适用领域?

cd红丸:
      关于发展现状:MongoDB是被国内最早认识的NoSQL产品,也是目前国内关注度最高的NoSQL产品。10gen公司于2011年举办了一次技术交流会后,再次于2012年发起“Mongo北京开发者聚会”,我虽没时间参加,但听朋友说场面非常火,而且演讲的不仅有10gen的工程师,还有国内的一些MongoDB的早期应用人员。同时,国内发起的一些活动也吸引了大量的爱好者,例如人民邮电出社图灵社区也定期组织MongoDB专题交流会,给大家研究MongoDB创造了优越的条件。最后,也是最实际的。国内可熟练使用MongoDB的DBA非常少,所以找一个合格的MongoDB工程师,薪水也比一般的高级DBA要高一些,因为缺口太大。
     关于应用领域:我本人觉得它最适合做互联网应用的存储方案,因为它的处理效率非常高,同时它还适用于对架构的高伸性要求很高的场景,因为它本身包含了对MapReduce的支持,可以方便的扩展到几十台,甚至几百台的服务器集群环境

ChinaUnix社区:
      mongoDB与其他Nosql数据库的比较,包括优势与不足?

cd红丸:
      这个问题,不太好回答,因为NoSQL产品,可以分为文档型,键值型,图片型等等。不同的分类决定了产品适用的场景,例如MongoDB属文档型,这就决定了它在文档型数据处理方面的绝对优势,同时它又是无模式的,所以就特别适合于无结构或者结构复杂的数据存储业务场景。例如报表数据本身就非常复杂,而中国式报表就更是极度复杂,但正因为报表的无规律无结构的特点,它的数据就特别适合于用MongoDB来存储。这些都是它相对于共它NoSQL产品的优势。
      当然跟其它NoSQL产品相比较,它也有不足的地方。例如在32位系统上,不支持大数据;sharding环境中的数据分布不均匀;MS架构在网络良好的情况下有时会有一定的延迟;数据由于预分配的,所以占用磁盘空间较大;安全性方面较弱,没有更多的可选配置;

ChinaUnix社区:
      能否跟大家分享一些mongoDB数据库与其他数据库的结合运用案例?

cd红丸:
      从国内来说,也许是国人不太愿意分享或者是没养成分享的习惯,所以国内我敢肯定已经有很多公司在使用了,但公开的信息显示1-2年来却还是那几个。
      例如,“视觉中国”对MongoDB的应用应该是在国内相对较早的,由于数据量过大,用户活跃度过高,导致MySQL无法应对业务需求,才将全部的业务向MongoDB做了一个大规则模的迁移;盛大云产品中也包含了MongoDB的影子,MongoIC(MongoDB云托管服务),可以完成一键申请,定期备份,七天内任意恢复数据等,本来郭理靖给我了个帐号可以试一下这个服务的,后来由于没时间就没有试,大家有时间的话可以试一下这个服务;淘宝网虽然在自已研发NoSQL产品,但也有应用MongoDB的业务,例如它用MongoDB来存储系统产生的日志信息。大众点评网用MongoDB来存储用户行为数据并进行分析,以挖掘更多的盈利点。
      国外,大家非常熟悉的代码托管网站SourceForge的90%的数据请求是通过MongoDB来处理的;SAP公司也将MongoDB做为他们PaaS平台中企业内容管理部分的持久化解决方案;著名的福布斯杂志,采用MongoDB来存储历年世界各地的重大财经新闻和各家公司的公开数据,将来也会将更多的核心数据迁往MongoDB;
我所在的公司本来也是准备小规模应用的,但后来由于种种原因没有上,很遗憾。

ChinaUnix社区:
      mongoDB数据库的日常管理,有没有好的监控工具以及如何优化monogDB?

cd红丸:
      MongoDB的监控工具其实有很多,象专业一点儿的工具,如10gen的MMS,MongoWatch,MongoSpy;通用一点儿的工具,如Zabbix,Cacti等做一些自定义开发后,都可以对MongoDB进行监控。
     但我本人的经验是不管什么样的工具,都是要依赖于最基础的命令,所以我推荐用最基本的mongostat,profiler,db.stat(),db.serverStatus(),db.currentOp()命令或工具来定制适合自已业务需求的监控模型。
      优化是一个老生常谈的话题,不管是什么样的技术什么样的产品,最终一定要面对这个问题。其实遇到过性能问题的朋友都会有一个共识,解决性能问题最快的办法就是加大硬件层面的投入,因为现在硬件的发展明显跟不上软件的发展,所以才有了NoSQL才有了Hadoop。
      那么具体来说,首先选择scale-up,即提升硬件单体性能。然后再scale-out,即横向扩展硬件单体数量。其实这2个方法就足以解决大部分的性能问题了。如果硬件的预算有限的话,那么可以在有限的范围内不停的拆表,来达到提升性能的目的。上面几种方法就是最通用、最高效、最简单、最粗暴的办法了。
      最后,如果这些都无法满足,那么就需要微调。例如,用简单查询替换复杂查询,使用索引,sharding数据等等。不要觉得优化有什么神密的,其实也真的没有什么神密的。

ChinaUnix社区:
当下Nosql技术在国内很火热,作为一个企业决策者,或者一个合格的DBA,应该如何选择传统的关系型数据库和非关系型数据库?

cd红丸:
      这个问题真的很现实,讲一堆什么哗众取宠的大道理都没用,决策才是最重要的。对于企业来说,不是一定要应用最新最好的技术才能带来最大的效益。技术人员往往为了展示自已技术有多牛,非常容易走极端,总是以技术来驱动业务,希望公司采用最新的技术来做新的项目,这也是我以前总犯的错误。但老板的思维是用最少的投入换来最大的收益,站在老板角色度他希望的是业务来驱动技术。例如NoSQL的产生,也是因为企业遇到了海量数据的问题,才有一批人去想怎么解决,所以才有了NoSQL这个东西。
      对于企业来说是选择关系型数据库还是选择非关系型数据库,不要脑子一热必须要用新产品。举几个例子吧,如果你的企业数据量不是很大,MySQL足已应付,那根本没什么必要去用MongoDB。如果你的企业一定要用MongoDB的话,也需要仔细考虑一下DBA和开发人员的成本问题,因为要想找到对MongoDB了解的工程师,就目前国内来说也很困难。
总之就是一句话,没逼到那份儿上或者没必要上MongoDB的话,不要冒太大的风险去使用MongoDB,不要因为要用MongoDB而用MongoDB。当然如果对一些重要性级别较低一些的应用,那么可以采用MongoDB来培训人员和积累经验,说白了就是练兵,这也是很重要的。如果没有前期的经验积累,冒然上MongoDB可能会得不偿失。

论坛徽章:
4
CU大牛徽章
日期:2013-03-13 15:32:35CU大牛徽章
日期:2013-03-13 15:38:15CU大牛徽章
日期:2013-03-13 15:38:52戌狗
日期:2013-12-27 15:08:11
发表于 2012-06-14 14:00 |显示全部楼层
拿着这本书 做了下基本的测试,上次和红丸交流的关于那个web验证还是有点模糊,这一块交流的资源实在是少 ,希望有越来越多的人分享成功和失败

论坛徽章:
0
发表于 2012-06-14 14:15 |显示全部楼层
我们公司已经有部分业务使用MongoDB了,目前运行状况良好,因为是做运维,想多了解下MongoDB监控方面的信息。

论坛徽章:
0
发表于 2012-06-14 15:01 |显示全部楼层
希望可以分享更多关于mongodb的东西, 比如远程备份方案

论坛徽章:
4
CU大牛徽章
日期:2013-03-13 15:32:35CU大牛徽章
日期:2013-03-13 15:38:15CU大牛徽章
日期:2013-03-13 15:38:52戌狗
日期:2013-12-27 15:08:11
发表于 2012-06-14 16:44 |显示全部楼层
分享下我测试学习的基本东西:
1.下载mongodb-linux-x86_64-2.0.5.tgz
2.解压mongodb-linux-x86_64-2.0.5.tgz
3.mkdir -p /data/monogodbdata
4.启动bin目录下:nohup ./mongod --dbpath=/data/monogodbdata/ --logpath=/data/monogodbdata/mongodblog -logappend -journal  -oplogSize=1024 --profile=1 --slowms=2 -auth --rest &;或者强制daemon:./mongod --dbpath=/data/monogodbdata/ --logpath=/data/monogodbdata/mongodblog -logappend -journal  -oplogSize=1024 --profile=1 --auth --slowms=2 --fork
5.先建立系统级管理权限,
a../mongo b.show dbs c.use admin d.db.addUser("zkt","123") e.db.auth("zkt","123")
./mongo admin -u zkt -p 验证---这是系统级用户的创建
对特点数据库来设置用户
先用系统级用户登录后在建立指定权限用户的操作
./mongo admin -u zkt -p
MongoDB shell version: 2.0.5
Enter password:
connecting to: admin
> show dbs
admin        0.203125GB
local        (empty)
my        0.203125GB
test        (empty)
> use my
switched to db my
> db.addUser("aa","aaa",false)
{ "n" : 0, "connectionId" : 9, "err" : null, "ok" : 1 }
{
        "user" : "aa",
        "readOnly" : false,
        "pwd" : "a68da2a977ad1f51392ba1b8cf5d0828",
        "_id" : ObjectId("4fd25725736d04754b075a31")
}
> 退出
./mongo my -u aa -p
MongoDB shell version: 2.0.5
Enter password:
connecting to: my
这样就实现了权限管理了

6.新建数据库:use mydb;

这样就创建了一个数据库。

这一步很重要如果什么都不操作离开的话 这个库就会被系统删除。
验证-------------------------------

然后使用插入语句:

db.usr.insert({'name':'tompig'});
在使用下列命令查看

show collections;  ---查看‘表’


备份数据:
./mongodump  -u my -p my  -d mydb -o /usr/local/backup
为了保障数据的一致性,
./mongo admin -u two -p two
1.db.runCommand({"fsync":1,"lock":1}),2.然后运行mongodump,3 db.fsyncUnlock();db.currentOP()
恢复数据库
./mongorestore  -u two -p two -d  mydb --directoryperdb /usr/local/tt/mydb (是的是admin的用户密码)

论坛徽章:
8
CU大牛徽章
日期:2013-09-18 15:20:48CU大牛徽章
日期:2013-09-18 15:20:58CU大牛徽章
日期:2013-09-18 15:21:06CU大牛徽章
日期:2013-09-18 15:21:12CU大牛徽章
日期:2013-09-18 15:21:17天秤座
日期:2013-10-30 14:01:03摩羯座
日期:2013-11-29 18:02:31luobin
日期:2016-06-17 17:46:36
发表于 2012-06-14 17:32 |显示全部楼层
买过一本mongodb权威指南 ,大概看过,但是没有深入和使用。只要还是业务和产品需求定向吧。

论坛徽章:
0
发表于 2012-06-14 21:06 |显示全部楼层
本帖最后由 cd红丸 于 2012-06-15 22:23 编辑

回复 2# 小版主杀手


   
是很奇怪,我跟你的操作完全一样,希望其它朋友可以求证一下
-------------------------------------------------------------------
《MongoDB管理与开发精要》、《Redis实战》作者
ChinaUnix.net专家 http://cdhongwan.blog.chinaunix.net
@CD红丸           http://weibo.com/u/2446082491

论坛徽章:
0
发表于 2012-06-14 21:15 |显示全部楼层
本帖最后由 cd红丸 于 2012-06-15 22:24 编辑
追忆的风筝 发表于 2012-06-14 14:15
我们公司已经有部分业务使用MongoDB了,目前运行状况良好,因为是做运维,想多了解下MongoDB监控方面的信息 ...


监控方面的重点所有数据库都是相对通用的,例如“命中率”、“内存使用情况”、“锁情况”、“慢查询”、“TPS”、“QPS”等等
-------------------------------------------------------------------
《MongoDB管理与开发精要》、《Redis实战》作者
ChinaUnix.net专家 http://cdhongwan.blog.chinaunix.net
@CD红丸           http://weibo.com/u/2446082491

论坛徽章:
0
发表于 2012-06-14 21:18 |显示全部楼层
本帖最后由 cd红丸 于 2012-06-15 22:24 编辑
人生高地 发表于 2012-06-14 15:01
希望可以分享更多关于mongodb的东西, 比如远程备份方案


备份方案取决于业务具体需求,推荐本地备份,远程归档
-------------------------------------------------------------------
《MongoDB管理与开发精要》、《Redis实战》作者
ChinaUnix.net专家 http://cdhongwan.blog.chinaunix.net
@CD红丸           http://weibo.com/u/2446082491

论坛徽章:
0
发表于 2012-06-14 21:20 |显示全部楼层
本帖最后由 cd红丸 于 2012-06-15 22:24 编辑
chinafenghao 发表于 2012-06-14 17:32
买过一本mongodb权威指南 ,大概看过,但是没有深入和使用。只要还是业务和产品需求定向吧。


搞技术的容易臭牛*,总想以技术去推动业务,其实不然,应该是业务驱动技术,没有需求就没有必要去花费时间
-------------------------------------------------------------------
《MongoDB管理与开发精要》、《Redis实战》作者
ChinaUnix.net专家 http://cdhongwan.blog.chinaunix.net
@CD红丸           http://weibo.com/u/2446082491
您需要登录后才可以回帖 登录 | 注册

本版积分规则

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号 北京市公安局海淀分局网监中心备案编号:11010802020122
广播电视节目制作经营许可证(京) 字第1234号 中国互联网协会会员  联系我们:
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP