专家·VoltDBCTORyanBetts表示,SQL在大型企业中获得广泛部署,大数据是它可以支持的另一个领域。·NoSQL是一个可行的选择,在许多方面都是大数据的最佳选择,尤其是在可扩展性方面,Couchbase首席执行官BobWiederhold说。SQL经受住了时间的考验,依然蒸蒸日上RyanBetts,CTO,VoltDBCorporation结构化查询语言(SQL)是久经考验的胜利者,已经统治了数十年,目前被大数据公司和组织(如Google、Facebook、Cloudera和Apache)正在积极投资于SQL。在成为SQL等主导技术之后,有时很容易忘记它的优越性。SQL的独特优势包括:1.SQL可以增强与数据的交互,并允许就个别数据库设计提出问题。这是一个关键特性,因为无法交互的数据本质上是无用的,增强的交互性可以带来新的见解、新的问题和更有意义的未来交互。2.SQL标准化,使用户能够跨系统应用他们的知识,并提供对第三方插件和工具的支持。3.SQL具有可扩展性、通用性和经过时间验证的特点,可以解决从快速写入为主的传输到扫描密集型深度分析的各种问题。4.SQL采用正交形式进行数据表示和存储,部分SQL系统支持JSON等结构化对象格式,比NoSQL性能更好,功能更多。尽管NoSQL的出现产生了一定的影响,但SQL依然占据市场主导地位,在大数据领域赢得了大量投资和广泛部署。NoSQL一词含糊不清,在本次讨论中,我借用了RickCattell对NoSQL的定义,即提供简单的操作(例如键/值存储)或简单的记录和索引,并着重于这些简单操作系统的横向可扩展性。显然,并非所有新数据库都是平等创建的,了解每个数据库背后的基本原理和潜在问题是成功的关键。NoSQL的主要特性使其更适合特定的问题。例如,图形数据库更适合通过关系组织数据的情况,而专门的文本搜索系统更适合需要实时搜索的情况。在这里,让我们看看SQL系统的主要优势和差异化特征:*SQL支持交互性。SQL是一种声明式查询语言。用户说出他们想要的(例如,显示过去五年三月期间顶级客户的地理位置),数据库在内部构建算法并提取请求的结果。相比之下,NoSQL编程创新MapReduce是一种过程查询技术。当用户发出请求时,MapReduce不仅要求用户说出他们想要什么,还要说明如何生成答案。这听起来像是一个无趣的技术差异,但由于以下几个原因它很重要:首先,声明性SQL查询更容易使用图形工具和点击式报告生成器来构建。这允许没有软件编程技能的分析师、操作员、经理和其他员工执行数据库查询;其次,数据库引擎可以使用内部信息来选择最有效的算法。改变数据库或数据库的物理布局,***算法仍然可以计算。在过程系统中,程序员需要重新访问和重新编程算法,这是一个非常昂贵且容易出错的过程。市场理解这一关键区别。2010年,Google宣布部署SQL来补充MapReduce,主要是受内部用户需求的驱动。最近,Facebook发布了Presto(一种SQL部署)来查询其PB级HDFS集群。根据Facebook的说法:“随着我们的仓库增长到PB级并且我们的需求发生变化,我们很清楚我们需要一个提供低延迟查询的交互式系统。”此外,Cloudera还在构建Impala——另一种基于HDFS的SQL部署。*SQL是标准化的。虽然供应商有时会在SQL接口中添加他们自己的语言,但SQL的核心是标准化的,并且还有其他规范(例如ODBC和JDBC)为SQL存储提供广泛可用的稳定接口。这带来了一个管理和操作工具生态系统,用于在SQL系统之上设计、监控、检查、探索和构建应用程序。SQL用户和程序员可以跨多个后端系统重用他们的API和UI知识,从而减少应用程序开发时间。标准化还允许声明性第三方提取、转换、加载(ETL)工具,允许企业在数据库之间和跨系统传输数据。*SQL可以扩展。必须牺牲SQL以获得可伸缩性的想法是完全错误的。如前所述,Facebook创建了一个SQL接口来查询PB级数据。SQL在运行极快的ACID传输方面非常高效。SQL对数据存储和索引提供的抽象允许跨各种问题和数据集大小的一致使用,从而允许SQL跨集群复制数据存储高效运行。使用SQL作为接口独立于构建云、规模或HA系统,SQL中没有任何东西可以防止和限制容错、高可用性和复制。几乎所有现代SQL系统都支持云友好的水平可扩展性、复制和容错。*SQL支持JSON。几年前,许多SQL系统添加了XML文档支持。现在,随着JSON成为一种流行的数据交换格式,SQL厂商也加入了JSON风格的支持。基于当今Web基础设施灵活的编程过程和正常运行时间要求,我们需要结构化数据类型的支持。Oracle12c、PostgreSQL9.2、VoltDB和其他支持JSON的数据库通常比“原生”JSON具有更好的性能。SQL将继续获得市场份额,并将继续看到新的投资和部署。NoSQL数据库提供专有查询语言或简单的键值语义,没有更深层次的技术差异。现代SQL系统在提供可扩展性的同时,还支持更丰富的查询语义,拥有庞大的用户安装基础、广泛的生态系统集成和深度的企业部署。NoSQL更适合大数据应用CouchbaseCEOBobWiederholdNoSQL越来越被认为是关系数据库的可行替代方案,尤其是对于大数据应用。此外,无模式数据模型通常更适合当今捕获和处理的数据种类和类型。当我们谈论NoSQL世界中的大数据时,我们指的是从操作数据库读取和写入。不要将操作数据库与分析数据库混淆,后者通常查看大量数据并从该数据中获得可见性。虽然运营数据库中的大数据可能看起来不可分析,但运营数据库通常为大量用户存储大型数据集,这些用户经常需要访问数据以实时执行交易。这种数据库的运行规模也说明了NoSQL的关键特性,这也是为什么NoSQL成为大数据应用的关键原因。NoSQL是可扩展性的关键每次技术行业在硬件开发方面经历根本性转变时,都会出现一个拐点。在数据库领域,从纵向扩展到横向扩展的转变推动了NoSQL的发展。关系数据库(包括来自Oracle和IBM的数据库)垂直扩展。也就是说,它们是集中的、共享一切的技术,只能通过添加更昂贵的硬件来扩展。NoSQL数据库是一种分布式横向扩展技术。它们使用一组分布式节点(称为集群)来提供高度弹性的扩展,允许用户添加节点以动态处理负载。分布式横向扩展方法通常比垂直方法更便宜。商业关系数据库的许可费用也可能高得令人望而却步,因为它们是按服务器定价的。另一方面,NoSQL数据库通常是开源技术,按运行的服务器集群收费,并且相对便宜。NoSQL是灵活性的关键关系数据库和NoSQL数据模型非常不同。关系模式获取数据并将其分布到许多相互关联的表中,这些表通过外键相互应用。当用户需要在数据集上运行查询时,需要从多个表(通常涉及数百个企业应用程序)中收集所需的信息,组合并提供给应用程序。同样,在写数据的时候,也需要跨多个表协同执行。当数据相对较少且数据以缓慢的速度流入数据库时??,关系数据库通常能够捕获和存储信息。然而,当今的应用程序通常需要快速写入(和读取)大量数据。NoSQL数据库遵循一个非常不同的模型。NoSQL数据库的核心实际上是“NoREL”或非关系数据库,这意味着它们不依赖于表及其之间的关系来存储和组织信息。例如,面向文档的NoSQL数据库获取您要存储的数据并将其集成到JSON格式的文档中。您的应用程序可以将每个JSON文档视为一个对象。一个JSON文档可能提取跨越25个表的数据,将数据集成到一个文档中。聚合此信息可能会导致信息重复,但由于存储不再是成本问题,因此数据模型的灵活性、生成文档的轻松发布以及改进的读写性能使其成为一个不错的选择。NoSQL是大数据应用程序的关键数据正变得越来越容易通过第三方(包括社交媒体网站)捕获和访问。这些数据包括:个人用户信息、地理位置数据、用户生成的内容、机器记录的数据和传感器生成的数据。企业还可以依靠大数据来支持他们的关键任务应用程序。与此同时,企业正在转向NoSQL数据库,因为它们非常适合当今的新型数据。开发人员想要一个灵活的数据库,可以轻松适应新的数据类型,并且不受第三方数据供应商内容结构变化的影响。大多数新数据都是非结构化和半结构化的,因此开发人员还需要能够高效存储这些数据的数据库。然而,关系型数据库采用严格定义的基于模式的方法,无法快速集成新的数据类型,不适合非结构化和半结构化数据。总体而言,随着Web和移动应用程序的增加、新趋势、在线消费者行为的转变以及新数据类型的出现,该行业需要可扩展且灵活的数据库技术来管理和访问数据。NoSQL技术是有效满足这些需求的唯一可行解决方案。
