查看评论 发表评论2012年04月13日 15:21分 作者:网界网 于翔 来源: 摘要:面对席卷而至的大数据浪潮,许多新兴技术迎来了真正意义上变革时刻。作为一种能够更好地平衡IT投资和并行分布式存储关系的数据管理技术,NoSQL在蛰伏多年之后,向着其期待中的“获得广泛认可”的目标又靠近了一步。
面对席卷而至的大数据浪潮,许多新兴技术迎来了真正意义上变革时刻。作为一种能够更好地平衡IT投资和并行分布式存储关系的数据管理技术,NoSQL在蛰伏多年之后,向着其期待中的“获得广泛认可”的目标又靠近了一步。 NoSQL是区别于传统关系型数据库的数据库管理系统的统称。与统治数据库世界三十年余年的关系型数据库相比,NoSQL最大的不同是不使用SQL(结构化查询语言)作为查询语言,其数据存储可以不依照固定的表格模式,通常具备水平可扩展的特征。 NoSQL一词最早出现于1998年,Carlo Strozzi在那时开发了一个轻量级、开源且不提供SQL功能的关系数据库。Strozzi所提出的NoSQL与目前业界对NoSQL的定义有很大区别,NoSQL并未按照Strozzi当初所设想的那样发展,而后来Strozzi自己也发现我们真正需要的并不是“No SQL”,而是“No Relational”,也就是非关系型数据库技术。此外,NoSQL有时也被认为是Not Only SQL的简写,作为对不同于传统关系型数据库的数据库管理系统的统称。 经过十年的发展,NoSQL终于在2009年演变为一场真正的技术风潮。那年的6月,在一次NoSQL运动成员的全球性聚会上,人们兴奋地分享着摒弃昂贵的关系型数据库、采用更低的成本和更有效的方式管理数据的创新想法。此后,伴随Web 2.0时代汹涌而来的大数据(也称为“海量数据”)让NoSQL更进一步走到台前,其针对超大规模和高并发数据的处理能力得到越来越多企业用户的关注,而像Hadoop这样的在大型互联网企业得到实践验证的产品的出现,让数据的管理者看到了一条更加经济和高效地管理大数据的可行之路。 在NoSQL之前,曾有多种创新的技术构想试图挑战关系型数据库的统治地位。也确有许多NoSQL的偏执而坚定的支持者希望,NoSQL能够在不远的未来实现对传统关系型数据库的替代。这种激进的说法是否能够变成现实我们将在后文中详细讨论。而事实上,NoSQL近期确实从某种意义上赢得了数据库世界统治者的赞赏与认可。 从挑战到融合 在2009年的NoSQL运动中,NoSQL的特性被进一步明确为指代那些非关系型、分布式、且通常不遵循ACID原则的数据库管理系统。所谓ACID意味着数据库管理系统中,事务(Transaction)所具备的四个特性:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation,又称独立性)、持久性(Durability)。 现阶段,NoSQL主要强调的是与“关系型”相对应的“非关系型”特性,着重突出其键值存储和文档数据库等优点,而并不是要树立传统关系型数据库反对者的形象。另外,随着NoSQL技术的发展,一些NoSQL数据库也开始提供ACID的保证。以BerkeleyDB为基础的Oracle NoSQL数据库就针对ACID遵从性进行了相应的开发,虽然目前就其能否提供真正的ACID遵从还存在争议,但Oracle NoSQL数据库确实正在这条道路上前进。 “关系型数据库正在消亡,它将被NoSQL所替代。”这种说法近年来在数据库领域总是不绝于耳。这种观点的支持者用各种各样的方式表达对关系型数据库的失望情绪,例如关系型数据库并不适合目前多核处理器、固态硬盘的硬件技术架构;其缺乏对大量、分散数据的处理机制;其产品设计过于复杂,价格太过昂贵,等等。而这些指责或者抱怨也确与企业在数据库应用过程中遇到的实际问题和困难密切相关。 不过,对于理性的数据库应用的建设者和使用者而言,NoSQL的使命并非要终结传统,它更可能在未来与关系型数据库形成真正意义上的互补关系,两者将共同构建适合新一代互联网应用需求的数据管理体系。贺召(化名)从事软件的设计、开发与管理工作20年,拥有丰富的数据库实践经验。他认为,NoSQL和关系型数据库的技术体系可以很好地相互补充。“NoSQL针对大数据的特征,对传统关系数据库中不必要的部分进行了简化设计,其轻量级、可灵活扩展的特性,更加适合进行大数据的处理操作。” 软件架构师王翔则表示,NoSQL通过在存储方面的改进打造出了一种半对象、半结构化的数据访问技术,这种技术适合目前主流的硬件结构,在未来有望成为一种标准的数据库存储引擎。对于NoSQL在未来可能扮演的角色,他以IBM在DB2 9中所推出的pureXML技术为例做出说明。“pureXML对结构化数据和XML数据进行了分流,实现了关系型引擎与层次型引擎的结合。NoSQL也有望延续这样的技术思路,成为专门用于大数据处理的数据库存储引擎。” Sybase软件(中国)有限公司技术总监卢东明则直言“NoSQL将替代关系型数据库”的说法是比较激进的。他表示,NoSQL在数据库领域声势渐起从某种角度反映了某些关系型数据库厂商的性能上的不足(特别是行式关系型数据库厂商),但NoSQL并不能因此替代传统的关系型数据库。卢东明拥有长达20年的数据库管理经验,对市场上的很多数据库都比较了解。 “SQL的重要性仍然无法取代,大量的业务行为需要采用结构化的存储方式。传统关系型数据确实在实际应用中遭遇到了瓶颈,比方说,一些电信企业的经营分析、金融企业的交易分析,以及互联网企业的行为分析等应用,传统的行式关系型数据库并不能给出完善的解决方案。”他说。 卢东明认为,虽然NoSQL也不能针对传统关系型数据库的技术瓶颈给出完美的解决方案,但黑格尔有句名言说:“存在即合理”。NoSQL在未来更可能成为传统关系型数据库的补集。他同时强调,SQL本身也需要进化,技术走向将会延续开放、融合的路线。 每种新的技术或产品在真正被导入使用之时总是面临着安全性方面的质疑。这似乎已经成为IT世界的定律之一。在安全性方面,NoSQL数据库的安全性才一直存在争议。有人认为,NoSQL在迅速抢占市场的过程中忽视了安全性,当然也有些人认为,NoSQL不过是一时间掀起的一股潮涌而已,很快便会湮没在市场的洪流之中。 “NoSQL的创新性在于数据存储方面的设计,其他功能被简化。因此,讨论NoSQL的安全性是没有意义的。如果用户有安全性或者数据一致性方面的要求,他们需要自己动手解决。”贺召这样来表达自己对NoSQL安全性争议的看法。他指出,NoSQL的设计初衷就是通过简化的架构设计来解决对大数据的管理问题,面面俱到功能性设计违背了NoSQL的设计目标,沉重的体系架构也会让NoSQL变了模样。 王翔也认为,NoSQL的核心价值在于数据存储层,安全性保障需要在管理层予以解决。这就好比是汽车,发动机只提供动力引擎,车辆的行驶安全需要在车载系统中解决。现阶段,虽然用户未必会对NoSQL的安全性给予足够关注,但是相信随着NoSQL应用的深入,在真正发生了一些安全事故之后,他们会希望有更多的安全功能会内置在NoSQL数据库管理系统中。 从现在NoSQL用户看,绝大部分数据库并不是面向公众基础设施的一部分,比如:不会用它保存设计公民、法人的人事信息、金融交易信息和社保资料等,这些应用用NoSQL数据库保存的数据安全性相对并不是那么重要。但在多数情况下,NoSQL数据库并不仅限于使用在封闭的内部环境中。有安全界的专业人士建议,如果NoSQL是前置的,用户可以通过关注如特定的应用和基础设施,从而提供额外的安全性。 用户必须意识到,NoSQL还并不成熟。让NoSQL数据库在短期内达到关系型数据库通过20年才建立起来的安全性并不现实。但是网络的世界总是不乏偷盗者和破坏者,如果他们发现了可以利用的漏洞,是绝不会放过的。我们看到,一些NoSQL数据库厂商正在就此做出尝试, MongoDB的供应商10Gen、CouchDB等厂家已经在产品部署周期内的安全性保障展开了实际的行动。另外,并不是所有的NoSQL数据库的安全级别都是相同的,一些产品的安全性取决于用户所使用的代码语言。而由于大多数NoSQL数据库是开源,用户能够自行查看安全威胁到底位于何处。 企业部署应需而动 “NoSQL和传统关系型数据库分别代表了不同的需求,因为功能特性的不同,它们在企业数据管理过程中承担的角色也不同,两者可以相互进行补充。”贺召说。他认为,从应用的角度分析,大部分企业对关键业务数据的管理仍将通过传统关系型数据库完成,这也是关系型数据库主导地位长期难以被撼动的原因。而NoSQL数据库则适合用于那些用关系型数据库管理过于昂贵且不适合的数据资产,这样能够充分发挥出NoSQL数据库低成本、扩展性好的特点。 “管理基于互联网的大数据”,是NoSQL数据库一个重要的应用场景。由于大数据具备数据量大、多结构化、增长速度快和价值密度低的特点,采用传统关系型数据库管理技术往往面临成本支出过多、扩展性差、数据快速查询困难等问题。NoSQL数据库可以在很大程度上满足企业对大数据的抓取、管理和处理需求。也正是基于这样的数据管理需求,NoSQL在互联网企业中得到了非常广泛的应用。 贺召表示,目前针对大数据处理的新兴技术已经进入蓬勃发展的新时期,NoSQL只是其中的一个技术方向。针对大数据管理场景,用于大规模数据集并行运算的软件架构MapReduce也是是一项重要的发明。另外,这一领域还有分布式关系型数据库联邦、分布式视频信息处理等技术分支。“不同的技术适用于不同的应用场景,它们之间有时会相互包含,并没有明显的应用界限。”贺召说。 卢东明认为,NoSQL对于企业用户的关键意义在于,它能够解决一些特殊应用场景的数据管理问题,例如互联网企业中对大规模、高并发数据的存储,以及金融、电信等行业的某些应用场景。“NoSQL代表了一类新兴的工具,但是我个人认为,数据库的细分格局实际上已经出现,行式数据库(针对OLTP,联机事务处理)和列式数据库(针对OLAP,联机分析处理)将成为未来最为重要的两个技术分支,另外还有基于内存技术的数据库领域。” 王翔建议,现阶段企业或机构可以使用Hadoop来存储视频监控、服务台语音通话等数据内容。在他看来,企业使用Hadoop的显性成本低,且功能相对完整,非常适合用来这些非结构化、价值密度相对较低的数据。“可以先通过业务流从关系型数据库中提取到具体的事件点线索,然后再配合Hadoop进行一些支持性的实证验证。”他说。 另外,从现阶段企业信息管理架构设计的角度,王翔表达了自己在NoSQL数据库性能方面最为关注的两个方面。首先是产品存储数据的分散性,以及数据查找的便利性。例如,NoSQL数据库能否从100台服务器快速拓展到600台服务器上,在数据分散存储的情况下,是否能够保证数据能够被快速找到。另一个方面是产品的迁移能力。比如说数据能否从关系型数据库快速迁移到NoSQL数据库,并且实现方便的数据备份。 Cassandra 混合型的非关系型数据库,类似于Google的BigTable。Cassandra最初由Facebook开发,后来转变为开源项目。当时Facebook需要一个更快、、更廉价的方式处理数以亿计状态更新的数据库系统,为此他们启动这一项目,并最终将其移植到了Apache上。 HBase 全称为Hadoop Database,是一款高可靠性、高性能、面向列、可伸缩的分布式存储系统,利用它可以在廉价的PC服务器上搭建大规模结构化存储集群。HBase是Google BigTable的开源实现,采用Jave语言编写。 MongoDB 介于关系型数据库和NoSQL数据库之间的开源产品,是NoSQL数据库中功能最为丰富、最像关系型数据库的产品。作为一款基于分布式文件存储的数据库,MongoDB由C++语言编写,最大的特点是能够支持的查询语言非常强大,还支持对数据建立索引。 CouchDB CouchDB的核心由Erlang编写,是面向文档存储的数据库系统。其最大的变化在于查询。其最大的特点是它是一个面向Web应用新一代存储系统,存储半结构化的数据,数据存储方式类似于lucene的index文件格式。 DynamoDB 互联网巨头亚马逊在2012年1月发布的专为互联网规模应用设计的NoSQL数据库。它凝聚了亚马逊在NoSQL数据库和云服务领域开发Dynamo和SimpleDB的经验。DynamoDB是完全托管的数据库,它将数据保存在固态硬盘,并进行跨分区的同步复制,以保证其高可靠性和数据持久性。 【附文2】 三大关系型数据库厂商在行动 NoSQL开发者的不懈努力终于在近期获得了回报。长期统治数据库市场的三大主流数据库厂商分别用自己的方式表达着对这一技术方向的认可。在此前的数年,NoSQL数据库一直处于在边缘地带进行实验性部署的状态,但传统的关系型数据库厂商一直对其保持关注,有些还早早地进行了相关的技术储备。 甲骨文: 2011年10月,甲骨文发布了Oracle NoSQL数据库,同时甲骨文将为Oracle NoSQL数据库用户提供企业级技术支持。Oracle NoSQL数据库秉承了甲骨文数据库坚固、实用的开发风格。2006年,甲骨文收购了开源BerkeleyDB的开发商Sleepycat。Oracle NoSQL数据库以BerkeleyDB为核心,拥有很多严谨的功能性设计。 大数据管理方面,甲骨文与Apache Hadoop软件及服务提供商Cloudera合作,在其集成系统Oracle大数据机中提供Hadoop系列软件。另外,甲骨文还提供Oracle数据集成Hadoop应用适配器、Oracle Hadoop装载器、Oracle Direct Connector,这些工具降低了Hadoop的应用复杂度,还支持从Oracle数据库直接访问Hadoop分布式文件系统上的数据。 IBM: 在2011年10月举办的IBM Information OnDemand大会上,IBM副总裁兼数据库系统CTO Curt Cotner表示IBM将在2012年年内推出内置NoSQL的DB2旗舰级数据库管理系统。新的IBM NoSQL数据库可供DB2和Informix用户使用,将成为现有堆栈的一部分,用户无需支付额外的费用。 2011年5月,IBM先期推出了企业级Hadoop解决方案InfoSphere BigInsights。BigInsights能够在常用、低成本的硬件上运行,并行支持线性可伸缩性,它可以用户支持半结构化或结构化的信息,允许跨信息类型动态添加结构和管理,同时还具备高级文本分析功能。目前,BigInsights提供企业版和基础版两个版本。 在2011年10月举行的SQL PASS峰会上,微软宣布与从雅虎分拆出来的Hortonworks合作,在Hadoop上搭建Windows Server以及Windows Azure平台。双方计划通过合战略合作将Hadoop集成到微软的产品集中。根据当时计划表,微软计划在2012年3月30日提供运行于Windows Azure的最终版本,同时微软还计划推出运行于Windows Sever之上的Hadoop预览版,并将在2012年6月29日发布最终版本。 不是改朝换代,而是兼容并蓄 网界网 于翔 IT世界从来都不缺乏改变世界的豪言壮语,NoSQL也正是借助“颠覆传统”这样挑逗性的言论才赢得了更多关注的目光。但我们必须承认,虽然关系型数据库在某些领域遭遇瓶颈,但它仍然是绝大多数企业业务计算的中坚。本次专题所采访的三位数据库专业人士共同认为,NoSQL正在逐渐与传统关系型数据库形成良性的互补关系,并且有望在未来进行融合。 不可否认,NoSQL的发展还存在着许多这样或那样的问题。在维基百科的NoSQL词条中,我们可以找到近百个NoSQL相关的产品或项目。卢东明在其新浪微博上表达了如下的观点:“在稳固发展数十年后,数据库市场正重新回到“战国”时代,各种新的产品、理念和公司不断涌现,有些项目只拥有几个客户也可以吸引到一大批的粉丝。”可以想见,NoSQL或许会重新演绎传统数据库诸强争霸的故事。这一市场本身也需要进行沉淀和精炼,也只有这样,才会收获更加旺盛的生命力。 与传统关系型数据库的互补与融合,将是NoSQL长期的技术进化方向。与此同时,关系型数据库也期待在持续演进中焕发新生。如果两者间的功能特性能够彼此包容、相互促进,将真正为数据库用户带来福祉。另外,从用户的角度出发,NoSQL的标准化也是提升其市场竞争力的重要方面。在多方共同参与的市场中,NoSQL的开发者和用户需要共同凝聚标准的力量。 |
|