技术开发 频道

详解企业部署NoSQL数据库的优势与陷阱

  【IT168 评论】什么是NoSQL?所谓NoSQL(Not Only SQL),即非关系型数据库。在传统数据存储系统中,数据存储在多个表中,相互关系通过主键和外键来建立,而管理主键和外键关系的正是SQL。而在NoSQL数据库中,不存在传统的外键关系,所以人们把这种语言称为NoSQL。NoSQL最早由谷歌和亚马逊提出,用于解决自己业务模型中遇到的扩展难题。随着大数据时代的到来,越来越多的组织需要处理大量的网站流量、大数据和社交媒体数据等,人们对NoSQL的需求越来越旺盛,NoSQL数据库产品也越来越多。其中主流的NoSQL数据库包括文档数据库、图形数据库、列式数据库和键值数据库。

  NoSQL为何与众不同?

  传统SQL数据库善于处理表中有序布局、联系紧密的数据,用户可以进行详细的查询,以报表的形式提取数据。但是SQL数据库的缺点之一在于难以维护,如果数据量猛增,维护起来就更难了。除此之外,它还面临一个更大的问题,即在某一点上无法线性扩展。NoSQL解决方案则没有这样的问题。

  Mongo数据库的产品市场总监Kelly Stirman解释了为什么传统数据库难以处理最新的数据:传统数据库是在表之间传输数据的,一个应用程序的完成可能要经过几千张表。如果你想在数据层更新一个对象,你需要同时在很多表中协调数据的更新。要确保更新的完整度,你需要十分成熟的交易系统。Stirman认为如果使用文档存储,问题就简单的多。“因为两者的数据模型是不同的。与其建立巨大而复杂的映射,不如直接把文档映射到对象。这样,更新一个对象就像更新一个文档那样简单。”

  横向扩展能力,是NoSQL能够脱颖而出的一大亮点。Seven Databases in Seven Weeks作者Eric Redmond说道:“你不需要垂直扩展,也不需要花几百万美元买Oracle box,你只需要买一组便宜的硬件,把它们分布到你的数据库就行了。”

  从商业角度来看,随着时间的推移,以模块化的方式扩展的能力很有吸引力,因为成本更低,灵活性更好。除此之外,NoSQL还有以下优势:

  ●自动保存新的数据结构的历史数据

  ●无模式架构意味着数据不需要定义到最后一个细节就可以存储到数据库中,数据可以随意按需迁移,基本没有宕机时间

  ●NoSQL支持AWS或RackSpace等云服务供应商提供的IaaS和PaaS部署

  ●非关系型数据库的结构十分适合虚拟机和负载均衡要求的数据有效利用和内存的有效利用

  因为NoSQL仍然属于新兴技术,组织在应用时难免犯一些错误。最常见的在不需要NoSQL的时候采用NoSQL。NoSQL可扩展的能力的确很赞,但如果现有数据库能够应对目前的数据增长,组织完全可以继续使用SQL数据库。

  开源技术的确可以节省成本,鼓励创新,但需要考虑后续成本。另外,缺乏标准也是一个问题,由于开源技术可移植性差,组织很可能受制于供应商。

  Making Sense of NoSQL一书的联合作者Dan McCreary表示,NoSQL面临的另一个挑战是,很多开发者对它不熟悉,不知道怎么在NoSQL数据库里写代码。“团队长期使用Java和Hibernate,习惯用UML建模,生成Java,虽然Java会自动生成上万个insert,而用NoSQL生成一个就够了,但是团队还是会选择自己熟悉的工具,他们用旧工具处理新任务,结果既浪费了资源又增加了不必要的复杂性。

  那么,组织该如何决定何时使用、以及如何使用NoSQL呢?一下是几点建议:

  ●了解业务需求。如果不是能够大量节约成本、显著增强性能,建议仍然使用SQL数据库。

  ●如果数据库需要大规模扩展、处理大量临时数据、存储大量对象或需要运行SQL上无法运行的查询,那么可以考虑NoSQL。

  ●问题类供应商会不遗余力地推销自己的解决方案。但你需要考虑与第三方合作,它可以移植标准,确保该解决方案与其他系统或解决方案的兼容性

  最后,做好应对挑战的准备吧。需要改变的不只是数据库,从部署架构、工具、培训到人员都需要改变。

  像很多新兴技术一样,NoSQL也经历了一段炒作期,很多企业纷纷部署NoSQL数据库,结果往往是喜忧参半。NoSQL技术曾经被炒得沸沸扬扬,技术人员都去接受NoSQL的培训,但短暂的繁荣后,NoSQL复归平寂。这不能怪任何人。供应商宣称自己的解决方案能解决所有问题,开发者则兴致盎然地讲数据库扩展性有多重要。

  组织自身,以为解决数据库难题的方法终于来到了。而现在,第一代NoSQL数据库已经发展到高潮,解决方案也已经成熟,是时候总结一下过去十年里的教训了。本文总了企业使用NoSQL时常犯的三点错误,以及如何规避这些错误。

  NoSQL,不只是可扩展

  Seven Databases in Seven Weeks一书的作者Eric Redmond认为,人们往往错误的认为NoSQL就是web扩展。要真这样以为可就贻笑大方了。

  虽然非关系型数据库产生于谷歌和亚马逊这种希望解决web环境中大规模扩展问题的公司,而文档型数据库Mongo的名字也来源于英文单词humongous(巨大无比的),暗示数据和业务量巨大。但是,如果只从扩展性角度考量NoSQL,只能一叶障目。其实,哪怕是很小的公司,它们基本只需要处理宜用图表表现的社交媒体数据,也能从NoSQL解决方案中获益。而有些要处理海量数据的大公司,可能仍然依赖SQL成熟的查询系统。数据库的选择不只是数据扩展性那么简单,更要从应用案例和非功能性需求来考量。

  建议:冷静思考,把业务需求和现实条件放在首位。一味复制谷歌的架构不会让你成为下一个谷歌。

  开发者合格吗?

  Making Sense of NoSQL的作者Ann Kelly和Dan McCreary指出了另一个问题。最近,有一项高调宣传的web工程,由于集成团队能力太差而终告失败。书中记录到,“公司买进了一个耐用、强大又成熟的NoSQL数据库MarkLogic,但是他们雇了一个只懂Java编程和关系型数据库的集成人员。他们花了三四千万美元进行编码,但这完全没必要,最终也只能白白丢掉。”文中提到这个网站就是声名狼藉的奥巴马医保。

  Dan认为,这样的NoSQL问题的出现已经不是第一次了,也不会是最后一次。只要开发团队没有在非关系型数据库编写代码的经验,组织就可能重蹈覆辙。对于习惯了旧有流程的开发者来说,使用新技术时重复开发的现象很常见。在文档存储的流线型环境里已经完全没有必要再用UML和Java精心设计代码了。

  建议:在文档型数据库中,文档直接映射到对象,代码精简、重点突出。如果代码激增,就需要检查工具、方法和技术团队了,从而找出问题所在。

  分布式仍然是难啃的骨头

  Eric Redmond认为,无论是在实施还是后续管理阶段,知识和经验都是无可替代的。“其实当谈到规模巨大,数据库本身并不是问题,问题在于实际操作过程中,如何进行管理。你可以安装Couch,在一台机器上运行一系列查询。但如果你把任务分布到多个机器上,这就变成了一个分布式系统,完全变成另外一个东西了。这对于系统管理员和操作员的要求都极高。一条查询或许能在本地机器上快速运行,但未必能能在上百台机器上横向扩展,两者没有实质性的联系。

  Redmond表示,好在一些NoSQL数据库的设计帮助开发者避免了这种困境。Couch就是一个例子,它假定用户会对很多服务器进行查询,所以自动使用了MapReduce。很多人指责Riak的易用性,Redmond认为,Riak之所以难以使用,主要是因为在分布式环境里写查询很困难。

  建议:选择符合非常好的实践的NoSQL数据库。另外,键值存储是最简单的实现简易扩展的方法之一。

  企业级数据库应用会变得越来越“安静”。嗡嗡作响的磁盘驱动器将被固态硬盘所取代。Making Sense of NoSQL的作者Dan McCreary表示,迁移到固态硬盘是个不小的举动,不是每个组织都做好了转变的准备。现在很多企业的数据库只针对传统磁盘存储进行了优化。

  速度:没有瓶颈

  固态硬盘有很多优点。因为它不需要任何机械组件,所以没有传统硬盘面临的速度瓶颈问题。固态硬盘的读取速度很快,几近RAM的读取速度。和传统硬盘相比,固态硬盘的查询速度能够提升三个数量级。

  有了这样超快的查询和检索系统,企业就可以随意建立索引,并快速访问索引数据。这对企业来讲很重要,因为索引不只是针对特殊场景或高价值的应用案例,它完全改变了我们设计和搭建数据库的方式。

  固态硬盘与NoSQL的完美组合

  非关系型数据库是最容易转换到使用固态硬盘的数据库类型。因为企业能够把大规模数据集切分成小块,比如文档,所以它能够成功使用固态硬盘进行存储。固态硬盘可以细分并缓存数据,尤其是大量的归档数据,并且仍然保持惊人的检索速度。NoSQL中键的概念能够容易地实现固态存储,这也是它采用固态硬盘的优势。

  传统的关系型数据库不支持细分和缓存数据的方法。而要在一个包含几百万文档的表中检查总和是不现实的。Dan表示:“要想让这些数据库适应固态存储,就得重新设计架构。”这也未必是件坏事,起码公司可以实现转型。“组织有很多机会可以从头开始,转向固态硬盘。”

  破釜沉舟?未必!

  很多企业面临这样的困境:一方面,它们已经开始考虑使用固态硬盘,这也是非关系型数据库带来的好处之一;但另一方面,他们在传统硬盘存储方面已经投入了巨大成本,使得他们不得不对投资新技术犹豫不决。其实,完全可以同时采用传统硬盘和固态硬盘。比较过SQL和NoSQL你会发现,并不是所有的数据都要以同样的方式处理,完全可以基于数据类型和数据用途,同时使用传统硬盘和固态硬盘,实现最大化的存储和最快的查询。企业在做迁移决定的时候应该考虑到这一点。

  TechTarget原文链接:http://www.searchbi.com.cn/showcontent_81070.htm

  更多精彩尽在2014年4月10日-12日在北京五洲皇冠国际酒店举办的第五届中国数据库技术大会,3月25日之前订票可享受8.8折最低票价。

Facebook专家:Hadoop不足以处理大数据
进入官网了解更多详情

0
相关文章