Comments
Description
Transcript
热门 NoSQL 是否必须放弃
热门 NoSQL 背后的事实 英文原文:http://ibmdatamag.com/2012/03/behind-the-buzz-about-nosql/ 是否必须放弃 SQL 的确定性和质量保证才能受益于 NoSQL 的敏 捷性? 作者:Chris Young | 发布日期:2012 年 3 月 1 日 您的公司刚刚引入了一种新的 Web 应用程序,它彻底改变了您的生活。作为一名应用程 序开发人员,用户希望您能及时响应他们报告的任何问题,在报告问题的当天解决这些问题。 这就意味着您每天都可能要对应用程序做出及时修改,每天都要将新版本上传到 Web 三 至四次,而不再是每个月一两次。这就是您应该开始考虑采用 NoSQL 的原因。 开放源码的 NoSQL 数据管理系统是迅速执行应用程序更改的理想选择。不同于传统 SQL 关系型数据库,NoSQL 数据存储不要求您在更改数据模型时获得审批,也不需要请求 DBA 建立一个新列,更不需要与 IT 部门配合工作来确保您的更改不会干扰相同数据库上运行的 其他应用程序。 通常,每天执行多次更改需要获得组织其他多个部门的认可,而您根本没有足够的时间获得 这样的认可。而在使用 NoSQL 时,您不必再为此担心。 了解 NoSQL 如何帮助您提高敏捷性 敏捷性是许多公司采用 NoSQL 的主要动机。组织始终面临着部署关键业务应用程序以确 保竞争优势、最大限度提升收入的压力。在开发人员创建或修改应用程序时,往往需要更改 相关数据库。 NoSQL 定义了一系列开放源码数据库管理系统,它们与传统 SQL 关系数据库管理系统 (RDBMS) 截然不同。NoSQL 不再使用传统的表、行和列,您可以将它构建为查询包含松 散定义的字段的文档组。IBM 数据库服务器副总裁兼首席技术官 Curt Cotner 说:“这意 味着开发人员能够摆脱关系方法的束缚,不必在执行更改时实施保护、检查和平衡。利用 NoSQL,开发人员可以毫无负担地直接进行更改。“ 在使用传统 IT 系统和 SQL 关系数据库技术时,如果未得到 IT 团队中其他小组的首肯, 开发人员可能无法更改与数据库相关的应用程序。Cotner 解释说: “与此同时,IBM DB2 等 SQL 数据存储提供了许多组织希望保留的显著优势。这些组织急需找到一种在利用 DB2 优势的同时能够满足提高敏捷性的需求的方法。” NoSQL 的多种风格 如今的开放源码 NoSQL 数据存储可划分为多种不同的类别: 文档存储:类似于内容管理系统,旨在存储文档,以及为文档编制索引,从而加快 访问速度 图形存储:旨在存储任意复杂数据集合,并使用三元组表示数据元素之间的关系, 例如“Bob is 35” 键值存储:支持使用关键字(例如 “Joe Smith”)及其相关值(例如他的地址)填 充数据库 表格存储:类似于关系系统,旨在使用类似于电子表格的格式存储数据,支持搜索 和检索条目 XML 存储:专门存储 XML 内容,使用针对 XML 文档的查询语言,例如 Xquery 对象存储:专门设计为根据对象相关元数据来存储和检索对象 NoSQL 环境仍然在不断演进。目前已有百余种开放源码数据库可供使用,其中部分数据库 只有三四年的历史,致力于其发展的贡献者数量也相对较少。 认识传统 SQL 数据库的优势 与 SQL 数据库的完全原子性、一致性、隔离性和持久性 (ACID) 特征相比,NoSQL 架构 往往仅提供了不甚可靠的一致性保证,例如最终一致性。“在许多类型的数据库驱动型联机 事务处理中,ACID 提供的保证都是非常重要的。”Cotner 说,“试想一下在两个银行帐 户间转账的情况。从一个帐户中提款,再将款项存入另一个帐户,这个过程中会发生许多变 化,无论如何,必须保证确定性。” 这些都是非常重要的考虑事项。在 Cotner 设想的财务交易中,SQL 的 ACID 特征有助于 保证交易准确执行,即便系统因电力中断或其他故障而中断的情况下也是如此。原子性能保 证不出现不完整的事务。一致性特征能确保所有更新都能立即得到传播,在整个系统内保持 一致。隔离性表示必须保证任何事务都无法干扰其他事务。持久性意味着,即便数据库崩溃, 事务也永远不会丢失。 相比之下,大多数 NoSQL 数据存储仅提供了称为“最终一致性”的保证。数据存储更新 最终将在整个基础设施和应用程序间得到传播。但在任意时间点,用户都可能会发现更新并 未完全传播完成,尚未出现在用户界面之中。“对于某些类型的事务来说,即时更新并不是 那么重要,比如说在线客户更新自己的地址时,”Cotner 说。“人们的地址不会每天都变, 所以在这种情况下保证最终一致性足矣。” 但在某些情况下,最终一致性是不够理想的。“如果客户从一个帐户中取出了 20,000 美 元的现金,随后很快又取出了 20,000 美元现金,那么系统必须认识到客户总共提取了 40,000 美元。”Cotner 说。“您绝对不会希望将第 2 笔 20,000 美元的取款误解成错误 的重复输入。但如果没有内置的 ACID,这种误解就很可能会发生。” DB2 等成熟的数据库管理系统也提供了高可用性和数据压缩等优势,这都是新兴的 NoSQL 系统还没来得及发展成型的优势。高可用性对于保证业务关键应用程序的正常运行 至关重要,而压缩能够显著减少数据存储所需的内存量。最终,DB2 在实验室中的设计和 开发目标就变成了交付业界领先的性能,并在数据库性能基准测试中取得了好成绩。数据库 性能是整体系统性能的关键驱动要素。 两全其美之道:DB2 与 NoSQL API 利用 DB2 的组织完全可以两者兼得。为了提供 NoSQL 的敏捷性,同时保留 DB2 的 ACID、高可用性和数据压缩优势,IBM 使 DB2 用户能够采用一种全新的编程模型,结合 使用图形存储范例和数据三元组。 截至 2012 年 4 月,IBM 通过新的应用程序编程接口提供了这种新编程模型,这一编程 接口支持多种调用以及随 DB2 附带的一种 NoSQL 软件解决方案体系。DB2 的分布式平 台和 DB2 Connect 产品中免费附带了这项 NoSQL 技术。该 API 可与 DB2 的任意版本 配合使用。“IBM 正在开发其他类型的 NoSQL 数据存储,计划将来与 DB2 配合使用; 但我们首先开发和发布了图形存储技术,”Cotner 说。“这是最灵活、最有用的 NoSQL 方 法之一。” 在传统关系数据库中,每一行都包含随机数量的列。相比之下,图形存储内的任何行都只有 三列:以一个名词、一个动词和另一个名词的形式表示数据。例如 “Gary lives in Gilroy”, 这就是一个三元组。作为开发人员,您可以插入另外一个包含家庭住址的三元组:“1234 South Street is in Gilroy”。使用这样的数据库时,可以再添加另外一个条目:“1234 South Street has bedrooms, 4”。 数据存储可以继续包含地板等材料信息,链接到包含木制地板品牌名的另外一个条目,再链 接到描述制成该地板的原材料的制造商条目。“只要有某些名词匹配,一方即可将其任意三 元组链接到另一方的三元组,”Cotner 说。“例如,一个图形存储可以轻松展现一家零售 商的客户资料版本与一家供应商拥有的相同客户的资料版本之间的关系。通过这样的方式, 两家企业均可获得更完整的视图,最终提供更好的服务。” 提供额外的 NoSQL 和 NewSQL 功能 DB2 还提供了另一种与 NoSQL 相似的数据库:XML 数据存储。这些数据存储使您能够 轻松管理如今不断增长的基于 Web 的数据量,部分开放源码 NoSQL 项目也使用 XML 作为底层数据类型。DB2 用户可以利用现有 DB2 功能管理 XML 数据存储。 DB2 pureXML 特性提供了以 XML 数据的原生分层格式来存储、处理和管理 XML 数据的 先进功能。除此之外,DB2 用户还可以使用 XPath 和 XQuery 等查询语言处理 XML 文 档。XML 数据模型提供了模式灵活性,在所管理的信息不断变化的用例中,这将是一项极 为显著的优势。 某些 NoSQL 和 NewSQL 方法也极其注重水平可伸缩性。如果需要更高的容量,组织可 以跨更多机器分布数据和工作负载,根据需要扩展服务器基础架构的规模。 “将 NoSQL API 与 DB2 配合使用也能实现这样的可伸缩性,”Cotner 说。“事实上,我们已经成功地测 试了拥有超过 128 台机器的 DB2,完全没有遇到任何可伸缩性问题。” 最后,IBM DB2 内置的数据压缩功能能够促进完全在主存储器中运行数据库的 NoSQL 和 NewSQL 数据存储方法。设计这些方法的目的是为了减少对缓冲池等重要资源的压力,从 而显著提高性能。数据压缩使这些方法更为切实可行,因为数据压缩能减少数据存储所需的 内存量,为其他处理任务留出更多内存,最终帮助降低服务器硬件成本。 IBM 自身经验:将 DB2 与 NoSQL 图形存储结合使用 关注开发环境的 IBM Rational 软件组需要管理来自不同工作团队的多种数据。这使该组成 为使用 NoSQL 三元组设置图形存储的最佳候选者。 出于对比目的,我们首先使用开放源码 NoSQL 解决方案实现了图形存储,但 IBM Rational 团队在使用开放源码解决方案的过程中很快就遇到了性能和可用性方面的问题。 开放源码 NoSQL 解决方案采用了一种异步索引编制机制。 在向数据存储添加新三元组时,这种异步索引编制机制明显减缓了新三元组的处理 速度,甚至常常导致此类处理完全停止,造成整个数据库被锁定。 随后,我们又使用 DB2 API 和 NoSQL 解决方案体系实现了图形存储。 切换到 DB2 之后,IBM Rational 团队看到了显著的性能改进。 DB2 比开放源码解决方案的速度快四倍。 DB2 是一项成熟的技术,IBM 开发人员和贡献者此前已经付出大量的时间和努力,解决了 索引编制锁定这样的数据库问题,但某些较新的解决方案仍然存在这些问题。 拓展 DB2 环境的能力 DB2 内的 NoSQL 技术为您的组织带来了把握 NoSQL 优势的新机遇。组织将有机会获得 NoSQL 部署的灵活性和敏捷性收益,同时延续 DB2 关系数据库技术的 ACID 属性、可 用性和性能优势。DB2 也提供了压缩等企业级特性,使组织能够将磁盘空间占用率降至最 低限度,这是开放源码项目无法提供的特性。 使用 DB2 的组织在考虑采用 NoSQL 时,路线非常明确。“要受益于 NoSQL 的灵活性, 但不一定要放弃 SQL 的质量保障,也不一定要实施大范围的 NewSQL 架构更改。”Cotner 这样说。“您可以利用我们的 NoSQL API 扩展 DB2,实现许多 NoSQL 支持者倡导的范 例——包括传统 Oracle 数据库中无法实现的水平可伸缩性。” 无相关文章。