Oracle加入NoSQL阵营
jopen 13年前
<p>Oracle 最近发布了一种<a href="/misc/goto?guid=4958193938137201471">大数据设备</a>,其中运行有 <a href="/misc/goto?guid=4958192468025175581">Oracle NoSQL Database</a>,它是基于 <a href="/misc/goto?guid=4958193939579899357">Oracle Berkeley DB Java Edition</a> 的新键-值存储系统。该系统的特性包括:十亿行级的记录存储能力、TB 级的B-树存储能力、ACID 事务、CRUD、分片(sharding)、无单点故障、通过数据中心间复制进行灾难恢复等等。</p> <p> Oracle 是关系型数据库的标准,它在2011年5月发布了白皮书“揭穿 NoSQL 的不实宣传”。Oracle 试图在其中证明 NoSQL 数据存储存在很多问题,包括没有标准 API、能源利用效率低、只在诸如 Google 这样的大公司才可行、缺少安全性等等,这篇文章得出下述结论:</p> <blockquote> <p>人们普遍认为,目前 NoSQL 数据库与关系型数据库相比尚未成熟。它们[NoSQL]的功能仍很初级。一般来说只在数据量不是非常大或性能压力不大的情况下才部署 NoSQL 数据库。部署的 NoSQL 数据库数量比较小。基于 NoSQL 数据库的应用程序开发模型也面临挑战,因为它增加了实现的复杂性。而系统的高可用性和 SLAs 仍有待评估。</p> <p>我们应使用经验证可靠的方法。而不要冒险将数据存储于 NoSQL 数据库。</p> </blockquote> <p align="left"> 有趣的是,这份文档已经从 Oracle 的网站上撤下,但还可以从因特网上<a href="https://docs.google.com/viewer?a=v&q=cache:G4pI4ZOkzWYJ:www.oracle.com/technetwork/database/debunking-nosql-twp-399992.pdf+oracle+debunking+nosql&hl=en&gl=uk&pid=bl&srcid=ADGEESiaUPuEdyJ9cnDc_GzgsfsNq6UytDZeO5f0pgDJyUeo7x-xfe2W091nseq4s1cIl9lZ79jmGT0TRpE5PF8svROWbJSjcbrm6TXb2AWfM2TaAa6Z80dEupN3oSFzZG6y9mWBsgTd&sig=AHIEtbSXOrH6n87xP4yC4bqqMaLHSMBBNg&pli=1">找到</a>。撤销这份文档的原因与这次发布的<a href="/misc/goto?guid=4958193941053970842">大数据设备</a>有关,根据 <a href="/misc/goto?guid=4958192703654894994">OpenWorld 2011</a>大会上的一份主题讲演,该设备是“一种为获取、组织和加载非结构化数据而优化的工程系统”,基于新的 <a href="/misc/goto?guid=4958192468025175581">Oracle NoSQL Databse</a>,可伴随 Apache Hadoop、Oracle Data Integrator with Application Adapter for Handoop、Oracle Loader for Hadoop 和开源分布式统计语言<a href="/misc/goto?guid=4958186955958782830">R</a>一起使用。</p> <p align="left">Oracle NoSQL Database 是一种键-值数据存储,设计时考虑到了高扩展性和高可用性,并可部署于多个互相复制的节点上,以便进行快速故障切换及负载均衡。我们可以通过 Java API 提供的 Get、Put 和 Delete 操作访问数据,这些 API 都打包在一个独立的 JAR 文件中。 其它特性包括:</p> <ul> <li> <p> 由纯 Java 编写</p> </li> <li> <p> 容量:十亿条的记录存储能力和 TB 级B-树存储能力</p> </li> <li> <p> 自动的、基于 hash 函数的分区和数据分布</p> </li> <li> <p> ACID 事务</p> </li> <li> <p> 完整的 CRUD 操作和可调整的持久性保证</p> </li> <li> <p> 无单点故障</p> </li> <li> <p> 支持分片</p> </li> <li> <p> 单一和多存储节点的故障容错性</p> </li> <li> <p> 通过数据中心间的复制进行灾难恢复</p> </li> <li> <p> 支持数千个节点</p> </li> <li> <p> 节点级的备份/回复</p> </li> </ul> <p> Oracle NoSQL Database(在一份 <a href="/misc/goto?guid=4958193943829169140">PDF</a> 官方文档中也被称为 Oracle NoSQL Database 11g,这有些容易引起误会)基于开源的 <a href="/misc/goto?guid=4958193939579899357">Oracle Berkeley DB Java Edition</a> 存储引擎构建,并通过 Data Integrator 与 Oracle Database 11g 集成,通过 <a href="/misc/goto?guid=4958193945252781276">In-Database Map-Reduce</a> 与 Hadoop 集成,如下图描述:</p> <p style="text-align:center;"><img title="Oracle加入NoSQL阵营" border="0" alt="Oracle加入NoSQL阵营" src="https://simg.open-open.com/show/a1ef55e400a6bd02fa2c5ff7f84716fa.jpg" width="422" height="320" /></p> <p> 如果过去 Oracle 认为关系型数据库可以存储任何数据,现如今它已经认识到,处理大容量、实时数据对于关系型数据库来说是“不可能完成的任务”,正如他们在一份关于 Oracle NoSQL Database 更加详细的技术白皮书(<a href="/misc/goto?guid=4958192466552142116">PDF</a>)中承认:</p> <blockquote> <p>分析像网站点击流之类的大容量、实时数据时,利用非结构化和半结构化的数据源会提供显著的业务优势,创造更多的业务价值。传统的关系型数据库无法完成上述任务,因此企业会基于十年来对分布式哈希表(DHTs)与传统关系型数据库系统或嵌入式键/值存储——比如 Oracle 的 Berkeley DB 来构建,以开发出高可用性的分布式键-值存储系统。</p> </blockquote> <p> Oracle 将会为 NoSQL Database 提供完整的商业支持。</p> <p> <strong>查看英文原文:</strong><a href="/misc/goto?guid=4958193946664459377">Oracle Joins the NoSQL Club</a><br /> 来自: <a id="link_source2" href="/misc/goto?guid=4958193947402845140" target="_blank">InfoQ</a></p>