Oracle NoSQL 数据库介绍

  • Jonathan Allen
  • 孙镜涛

2013 年 3 月 2 日

话题:Oracle架构AI

Oracle 的键 - 值数据库(简称“Oracle NoSQL 数据库”)已经更新到了版本 2.0。该数据库本质上是一个 Berkeley DB 的分布式前端,但是它提供了更多的功能。

Oracle NoSQL 数据库和 Oracle 数据库做了深度集成。通过 Oracle 的外部表功能,可以对 NoSQL 数据库编写 SQL 查询,甚至可以连接关系表。同时它还支持 Hadoop 以及 Apache 的 map-reduce 技术。

在运营方面,“它支持 SNMP/JMX,能够和 Oracle 及第三方管理工具集成”。(JMX 指 Java 管理扩展,大概从 Java5 之后它便是标准的暴露应用程序状态的方式。)

和 MongoDB 等流行的数据库不同的是,Oracle NoSQL 数据库除了提供最终一致性之外,还提供了绝对一致性。Peter Wayner 解释说:

注意,这个结构使用 Oracle 级(Oracle-grade)的严肃性存储数据。如果你不想使用由许多其他的 NoSQL 存储所提供的懒鬼级(slacker-grade)的最终一致性,可以通过 Oracle NoSQL 在所有复制节点的机器上使用绝对一致性。为此将会牺牲写入性能,当然这取决于你的选择。

顺便说一下,这不仅仅是一个二元决定。你可以在某个、大多数或者所有节点向磁盘发送完数据之后告诉 Oracle NoSQL 注销该写入方式。文档中将这个特性称之为持久化策略。

如果程序员有时间搭理这些内容,则可以利用其中的一些灵活性。所有的键 - 值对都有一个版本号,如果你想要在复制时做一些自己的事情那么可以自己查看该版本号。如果你试图提升修改记录时的性能,这对你会有所帮助。

它可以存储通用对象,那些关注性能的人可能想要查看 Avro 模式。文档中宣称:

使用 Avro 模式能够将序列化的值存储到一个空间高效的二进制格式中。除了一个小的内部模式识别符(大小介于 1 至 4 个字节之间)之外,每一个存储值都没有任何元数据。每一个键 - 值对都会存储一个这样的引用。通过这种方式,被序列化的 Avro 数据格式始终会和序列化它的模式关联,同时开销最小。这种关联对应用程序是透明的,同时内部的模式识别符由 AvroCatalog 类所提供的绑定管理。应用程序永远不会看见或者直接使用内部的标识符。

NoSQL 数据库社区版基于 AGPL 许可提供。当然也有商业许可的企业版。

查看英文原文:A Look at Oracle’s NoSQL Database

Oracle架构AI