Oracle 加入 NoSQL 阵营

  • Abel Avram
  • 姚九强

2011 年 10 月 16 日

话题:OracleDevOps大数据AI

Oracle 最近发布了一种大数据设备,其中运行有Oracle NoSQL Database,它是基于Oracle Berkeley DB Java Edition的新键 - 值存储系统。该系统的特性包括:十亿行级的记录存储能力、TB 级的 B- 树存储能力、ACID 事务、CRUD、分片(sharding)、无单点故障、通过数据中心间复制进行灾难恢复等等。

Oracle 是关系型数据库的标准,它在 2011 年 5 月发布了白皮书“揭穿 NoSQL 的不实宣传”。Oracle 试图在其中证明 NoSQL 数据存储存在很多问题,包括没有标准 API、能源利用效率低、只在诸如 Google 这样的大公司才可行、缺少安全性等等,这篇文章得出下述结论:

人们普遍认为,目前 NoSQL 数据库与关系型数据库相比尚未成熟。它们 [NoSQL] 的功能仍很初级。一般来说只在数据量不是非常大或性能压力不大的情况下才部署 NoSQL 数据库。部署的 NoSQL 数据库数量比较小。基于 NoSQL 数据库的应用程序开发模型也面临挑战,因为它增加了实现的复杂性。而系统的高可用性和 SLAs 仍有待评估。

我们应使用经验证可靠的方法。而不要冒险将数据存储于 NoSQL 数据库。

有趣的是,这份文档已经从 Oracle 的网站上撤下,但还可以从因特网上找到。撤销这份文档的原因与这次发布的大数据设备有关,根据OpenWorld 2011大会上的一份主题讲演,该设备是“一种为获取、组织和加载非结构化数据而优化的工程系统”,基于新的Oracle NoSQL Databse,可伴随 Apache Hadoop、Oracle Data Integrator with Application Adapter for Handoop、Oracle Loader for Hadoop 和开源分布式统计语言R一起使用。

Oracle NoSQL Database 是一种键 - 值数据存储,设计时考虑到了高扩展性和高可用性,并可部署于多个互相复制的节点上,以便进行快速故障切换及负载均衡。我们可以通过 Java API 提供的 Get、Put 和 Delete 操作访问数据,这些 API 都打包在一个独立的 JAR 文件中。 其它特性包括:

  • 由纯 Java 编写

  • 容量:十亿条的记录存储能力和 TB 级 B- 树存储能力

  • 自动的、基于 hash 函数的分区和数据分布

  • ACID 事务

  • 完整的 CRUD 操作和可调整的持久性保证

  • 无单点故障

  • 支持分片

  • 单一和多存储节点的故障容错性

  • 通过数据中心间的复制进行灾难恢复

  • 支持数千个节点

  • 节点级的备份 / 回复

Oracle NoSQL Database(在一份PDF官方文档中也被称为 Oracle NoSQL Database 11g,这有些容易引起误会)基于开源的Oracle Berkeley DB Java Edition存储引擎构建,并通过 Data Integrator 与 Oracle Database 11g 集成,通过In-Database Map-Reduce与 Hadoop 集成,如下图描述:

如果过去 Oracle 认为关系型数据库可以存储任何数据,现如今它已经认识到,处理大容量、实时数据对于关系型数据库来说是“不可能完成的任务”,正如他们在一份关于 Oracle NoSQL Database 更加详细的技术白皮书(PDF)中承认:

分析像网站点击流之类的大容量、实时数据时,利用非结构化和半结构化的数据源会提供显著的业务优势,创造更多的业务价值。传统的关系型数据库无法完成上述任务,因此企业会基于十年来对分布式哈希表(DHTs)与传统关系型数据库系统或嵌入式键 / 值存储——比如 Oracle 的 Berkeley DB 来构建,以开发出高可用性的分布式键 - 值存储系统。

Oracle 将会为 NoSQL Database 提供完整的商业支持。

查看英文原文:Oracle Joins the NoSQL Club
OracleDevOps大数据AI