详解企业部署NoSQL数据库的优势与陷阱, 什么是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。

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

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


作者:  陈洪钰 译