剑客
关注科技互联网

MongoDB首席架构师唐建法:20core处理27万混合读写操作实现

MongoDB可以应用于各种规模的企业、各个行业以及各类应用程序的开源数据库。作为一个适用于敏捷开发的数据库,MongoDB的数据模式可以随着应用程序的发展而灵活地更新。与此同时,它也为开发人员 提供了传统数据库的功能:二级索引,完整的查询系统以及严格一致性等等。 MongoDB能够使企业更加具有敏捷性和可扩展性,各种规模的企业都可以通过使用MongoDB来创建新的应用,提高与客户之间的工作效率,加快产品上市时间,以及降低企业成本。(摘自 MongoDB官网

为了帮助大家更加系统全面地学习MongoDB知识,特创建MongoDB知识库,集中挑选优质内容(文章、图书、视频)呈现给大家。

引用

唐建法,MongoDB官方大中华区首席架构师,中文社区创始人,曾在美国惠普及联邦快递担任技术负责人和首席架构师等职。

你关注的MongoDB知识库发布了,抢先关注,请戳这里=>> http://lib.csdn.net/base/mongodb

MongoDB首席架构师唐建法:20core处理27万混合读写操作实现

唐建法

CSDN知识库:能否分享一下你的技术成长之路。

唐建法:多年Java开发经验,热衷于开源,从开源软件的受惠者到开源软件的提供者到现在的布道者,开源软件伴随了技术领域的发展之路。

CSDN知识库:Mongodb与传统的关系型数据库有什么区别?最大优势是什么?

唐建法:相比于RDBMS的关系数据模型,MongoDB采用JSON作为其数据模型,非常接近于程序员熟悉的对象模型。MongoDB可以让开发者省掉繁琐的数据库设计过程,显著缩短产品开发周期。对数据库的操作不再需要一个专门的语言,而是通过API调用的方式,为开发者喜闻乐见。

MongoDB从一开始就是一个分布式数据库。其成熟的分片技术允许用户非常容易的扩展到数十亿的数据量并可以支持亿万级的用户。相对来说,RDBMS的扩展性非常受限,即使是有一些分库分表技术也是需要繁琐的运维手段和应用程序支持,并且性能往往不能得到保证。

CSDN知识库:Mongodb是否可以进行复杂的查询操作,在性能上有哪些突出的表现?

唐建法:MongoDB是在功能上最接近传统RDBMS的一个NoSQL数据库。支持绝大部分的复杂查询操作,如使用二级索引进行多个字段匹配,数组内查询,聚合分析,甚至支持强大的MapReduce。在性能上,MongoDB由于使用异步落盘,在并发写入和查询上有非常优越的表现。测试表明在一台20core的服务器上MongoDB可以达到27万的混合读写操作,并且95 percentile的操作都在10毫秒之内返回。

CSDN知识库:Mongodb的分片策略有哪些,不同的分片策略会产生怎样的影响?

唐建法:MongoDB分片策略有3种: 哈希,范围和标签。哈希对数据分布支持较好,适合写入压力大,读压力小的场景。范围分片比较适合range query,一次性查询一个连续区段数据的场景。而标签则在理解数据分布的基础上,自己来定制数据的分布规则。MongoDB的片键一旦设定不能修改。修改片键则需要把数据全量导出再导入到新的集群内。

[b]CSDN知识库:Mongodb是如何存储文件(图片,视频和音频),如何提高读写文件的性能?[/b]

唐建法:对于小型二进制文件(如头像或者几个MB的PDF之类),可以直接按二进制字段存入JSON(BSON)文档内。MongoDB另外提供GridFS API,可以用来管理较大的二进制文件。GridFS API会自动对大文件进行切块存储,并在读回时自动封装为源文件,减少程序的代码量。如果需要快速的文件读写性能,MongoDB一般建议:

  • 为数据盘和Journal日志盘使用单独的物理卷
  • 有可能的情况下使用SSD
  • 使用本机直挂的存储(DAS)
  • 使用RAID来提高存储系统的IOPS

CSDN知识库:Mongodb是如何做到应对高并发高可用和数据负载均衡的呢?

唐建法:MongoDB使用分片集群来应对高并发,使用复制集技术来提供高可用,并提供路由节点mongos来对数据和请求进行负载均衡。在MongoDB架构里面没有单点故障的存在。所有的数据节点或者配置节点均为3节点以上高可用部署。MongoDB的复制技术支持各种拓扑,甚至多中心的容灾部署也可以简单搭建。路由节点为无状态节点,可以根据系统压力随时增加或者减少路由节点的数量(一般至少要2个)。

CSDN知识库:可以分享一两个国内在使用Mongodb的公司企业吗?他们的使用场景及访问量数量级?

唐建法:在百度云项目, MongoDB用来存储文件的元数据信息(文件名,大小,访问时间,路径等等)。百度云项目有3亿多用户,MongoDB文档条目数量超过2000亿,数据总量超过2PB。百度有100多个MongoDB项目,运行在上千个节点的MongoDB集群上。

东方航空正在他们最关键的新一代机票搜索项目中使用MongoDB。根据东航的公开分享,他们MongoDB数据库总条数有数十亿,每天写入2600万次,查询4500万次,80%的查询低于50ms,CPU利用率小于30%,这些仅仅只是由一套3节点的复制集来提供。

CSDN知识库:Mongodb未来的趋势是怎样的,目前还面临着那些挑战?

唐建法:MongoDB官方最近增大了对中国市场的投入。在国际上,顶级的跨国金融机构如花旗,巴克莱,高盛,CapitalOne等都在纷纷大规模采用MongoDB作为他们新一代数据库平台的标准。他们共同的目的就是降低IT成本的同时,提高团队的开发效率,缩短产品从概念到市场的时间,快速展现业务价值,通过改善客户的体验来提高竞争力。

目前面临的主要挑战就是国内对MongoDB的认知程度不够,以至于大部分时候都是使用在非关键型应用场景。

CSDN知识库:关于技术学习您有什么心得?我们上线了知识库系统化学习的方法,您会怎样用?
唐建法:

如果想使用好MongoDB,首要的关键是要抛弃固有的关系型数据库的思维模式。忘掉关系型,从业务的角度出发来考虑对数据库能力的需求。在知识库方面,希望能够多提供些结合MongoDB做应用开发的文章和经验,相比于分享运维知识可能更加有学习价值。

分享到:更多 ()

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址