【编者按】数据库作为最关键的基础设施,渗透技术领域的方方面面。随着互联网时代的信息高速膨胀,传统关系型数据库因其高门槛、高成本以及扩展性差等原因导致的局限性逐渐浮出水面,如今更是面临诸多问题和挑战,在这一大环境下,NoSQL的进一步发展已成必由之势。面对现状,有的企业选择在关系型数据库领域寻求突破,大胆尝试以创造机遇。也有用户选择了数据库迁移这一策略,然这一过程也将面临颇多难题。据悉,MongoDB大中华区首席架构师唐建法将在SDCC 2017·上海站之数据库核心技术与应用实战峰会带来题为《NoSQL之王:一分钟从关系型迁移到MongoDB》的分享。
以下为专访正文:
MongoDB大中华区首席架构师,MongDB中文社区mongoing.com发起人。
CSDN:请先和大家介绍下自己和您目前所从事的工作,以及关注哪些技术领域?
唐建法:我目前在MongoDB官方担任的是负责MongoDB相关解决方案架构师。关注的领域是新一代数据处理的相关技术以及更多的是如何与现代软件架构相结合提供完整的IT解决方案。
CSDN:是什么样的契机让您接触到MongoDB,并最终选择它作为自己的研究方向?MongoDB吸引您的特性有哪些?
唐建法:我是一个多年的开源软件受惠者和贡献者。第一次接触纯属偶然,那是在2011年,彼时我还在旧金山和几个朋友创业。有一天无意中走进了MongoDB主办的一个技术大会,抱着试一试的心态,我把代码迁移到Mongo上来解决困扰我们许久的MySQL性能问题。性能问题确实解决了,但是真正打动我的却是使用JSON格式来管理数据这一焕然一新的概念和非常直观的持久化API。数据还可以这么玩!
CSDN:能否以MongoDB为例,对比分析NoSQL与关系型数据库,简要谈一谈其各有什么优缺点及适用场景?
唐建法:这里有一张图可以帮助大家从3万尺高空来理解两者的大致区别。
图左侧是关系型数据库的一些共性。Oracle、SQLServer、MySQL诸如此类的关系型数据库的优势就是他们使用的SQL查询语句功能非常强大,表达力很丰富。无论多复杂的问题,基本上都能够用一个或几个SQL语句完成。关系型数据库的ACID事务性,虽然各个数据库支持力度不同,但是总体来说都有不错的能力和应用程序服务器配合为程序员提供较好的事务模型,保证数据库内数据及规则的一致性。而以MongoDB领头的NoSQL数据库阵营中,则以动态数据模式和横向扩展能力为主打利器,是针对于现代的数据问题提出的解决方案。动态或者可变模式是处理新一代多变多态数据的最重要能力,否则技术团队将沦陷于无休止的关系型模式设计、迭代、数据迁移的繁琐工作中。横向扩展能力则是百度云、京东、360等大型互联网公司从MySQL集群迁移到MongoDB的主要诱因:MongoDB的分片技术,借助于数据相对独立,容易分布的JSON文档模型,在处理海量数据能力上具有更可靠的的水平扩展能力和易管理性。
从技术应用场景来说,我认为MongoDB特别适合数据量较大(亿级以上)、数据结构复杂多变,以及绝大部分的现代Mobile和Web应用。对使用Microservices架构的同学,更可以大胆考虑MongoD,B因为在微服务架构下对强事务的需求相对会少很多。
CSDN:请您结合MongoDB常见的企业应用设计模式或使用场景,简要介绍一下实际案例下DaaS这一应用模式。
唐建法: MongoDB常见的企业级应用模式有几种,如DaaS、Single View、ODS、Mainframe Offloading等。其实这几种都是CQRS设计模式中的某种体现。在这里,DaaS(Data as a Service) 就像SaaS模式一样,把数据作为一种功能来提供给客户端,也即应用程序。这些数据通过API的方式让应用程序可以完成所有数据的需求,无论是简单CRUD(通过REST)还是传统的报表分析(SQL或Big Data API),抑或是基于事件的Messaging。如下图所示:
这里最关键的中间层:persistence。我们这里需要一个有巨大横向扩展能力,同时又有毫秒级响应能力的联机交易数据库,才可以把我们的数据即服务架构搭起来。苏格兰皇家银行RBS早就开始DaaS的研究,但是最近才找到合适的存储平台——MongoDB来进行他们的IT革新。他们打算把一万多SQLserver,数千台Coherence,数百个Oracle的复杂数据平台逐渐过渡到以数据即服务的一个平台,利用新一代数据库的海量处理能力和模式的灵活性,进行大规模的整合去重。目前已经迁移了十多个应用、数十个关系型数据库到新的平台。
CSDN:数据库安全一直是备受用户以及开发者关注的话题,在MongoDB安全性问题方面您有什么相应的措施建议吗?
唐建法:前一段的赎金事件把MongoDB推到风口浪尖。最主要的原因当然是用户没有一丁一点的安全意识,把生产数据库放在公有云上不设密码,不开防火墙进行裸奔。官方明确建议上线前:
开启鉴权,开启鉴权,开启鉴权!
开启防火墙!
使用白名单
使用专用的账号来连接数据库
只给用户最小可用的权限
有必要的话启用TLS/SSL
MongoDB会在后续版本中进一步加强安全体系,默认就会开启鉴权,最大程度上防止由用户错误造成的损失。
CSDN:能否请您结合多年实践经验,谈谈对MongoDB,乃至整个数据库市场未来发展趋势以及潜在挑战的看法?
唐建法:数据库市场是软件行业中最大的市场,因为没有哪一个应用场景可以离得开它。Oracle(数据库)的发展早就已经停滞并在萎缩。全球各大企业的CIO都在企业数字化的过程中积极探索新一代的数据解决方案。NoSQL数据库由于其对非结构化、半结构化数据的支持,以及高并发、海量数据的横向扩展能力支持,已经被行业所认可并成为现代数据库布局不可缺少的一个部分。很多大型企业,类似于巴克莱、花旗、汇丰,甚至于全球最大最出名的手机公司都在建立基于MongoDB的新一代数据库标准,用于补足传统数据库标准的不足。
CSDN:在您看来,优秀的技术人应该具备哪些素质,您有什么经验想要和大家分享?
唐建法:(大致总结下列三条)
好奇心:对新事物不要自动就排斥,有好奇心才会去学习;
多分享:分享一个内容前,你自然会对它进行彻底的研究,使你在这个题目上有话语权;
多浏览:多读英文文章,多看StackOverFlow等国外技术论坛。
CSDN:在本次SDCC 2016·北京站上,您将分享什么样的话题,同时期待看到哪些内容?
唐建法:我分享的题目是关系型到MongoDB的数据迁移。这些年来我和MongoDB用户交流的时候遇见最多的问题之一就是如何把数据从关系型数据库里迁移到MongoDB里来。常见的迁移工具如Informatica、GoldenGate等并不能对MongoDB很好支持。在这个讲座里我会给大家介绍迁移需要知道的一些步骤,文档模型设计的一些规则,以及给大家演示一个实时的关系型到MongoDB的同步兼模型转换工具。
SDCC 2017•上海站将于2017年3月17-19日登陆申城,三大技术峰会和24位嘉宾,汇聚国内知名的互联网公司CTO、架构师、技术总监,畅谈运维、数据库和架构的热门话题和技术热点,遇见精益运维发起人&优维科技CEO王津银、MongoDB大中华区首席架构师唐建法等大牛,详情点击阅读原文报名。
同时,本公众号也提供优惠码「SDCCVIP」,立减100元,数量有限,抓紧抢购吧。另,五张团购立减1500元。