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。
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
全部0条评论
快来发表一下你的评论吧 !