Oracle NOSQL DATABASE简介

Oracle2011年10月27日宣布,Oracle NoSQL数据库即日起可以在Oracle技术网下载。为了方便阅读,摘录如下。

甲骨文公司将提供一款新型集成设计系统,即Oracle大数据机(Oracle Big Data Appliance),该系统可以对Oracle NoSQL数据库以及其它Oracle大数据产品进行优化。据悉,Oracle大数据机将于2012年第一季度面市。

Oracle NoSQL数据库是Oracle大数据产品线的关键组成产品之一,能够帮助企业以动态架构轻松管理大量数据,例如博客数据、传感器和智能电表数据、个性化数据收集以及社交网络存留的数据。其中,高度可用和可扩展的Oracle NoSQL数据库采用简单的关键价值数据模型,从而能够更加简单、格式灵活的进行高效率数据存储,是快速开发和部署应用的理想工具。

2006年,甲骨文收购了开源伯克利数据库(BerkeleyDB)的开发商Sleepycat,为C语言和后来的Java程序员提供了灵活的键值存储。而Berkeley DB的技术据说就是甲骨文NoSQL数据库的核心,虽然看上去像是被完全重写了一遍。

特性:
一、数据模型
key包含一到多个major key component和零到多个minor key component,组合起来唯一标准一条记录。key component为Java String,按对应encoding排序。value则是字节流。key和value的大小都没有严格限制。

记录还有版本号,每次更新都产生唯一的新版本号。在put/delete/get操作时,都可以指定要版本号,其中get时用于指定要读的版本,而 put/delete指定版本号是指当记录的最新版本还是指定版本时才更新,用于实现原子Compare-and-Swap语义。版本号应该至少是在一个 partition内部是全局唯一的。

二、分区与架构
两层架构,客户端直接到存储节点。核心架构是Replication Node和Replication Group,一个Replication Group包含一个可写的Master Replication Node和多个只读的replica。master失败时会failover到某replica。现在发布的版本暂时还不能动态调整存储节点个数,以后会加。

数据按major key hash分区到partition。这样拥有相同的major key仅仅minor key不同的多条记录一定在同一partition,可以提供高效的多记录操作,且系统还支持原子性的操作这样的多条记录。一个Replication Group一般负责多个partition,一个存储节点一般负责一个Replication Node,如果调整存储节点个数,则以partition为单位来移动数据。为方便以后scale-out,应该一开始就多一些partition。

系统底层用的是Berkeley DB Java Edition,用Btree数据结构。缓存包含Berkeley DB的缓存和文件系统缓存,不用DIRECT_IO,文档建议Berkeley DB缓存用于容纳Btree的内部节点,叶节点用文件系统缓存。另外也提供单机版称为KVLite。

三、操作
Oracle NoSQL提供的操作比较丰富,主要包括:

1、用于插入或更新记录的put类操作,包括put/putIfAbsent/putIfPresent/putIfVersion,都要指定一个完整的Key。用途顾名思义就不说了,稍提一点是putIfVersion功能提供了Compare-and-Swap,在处理并发时很有用

2、用于删除记录的delete类操作,包括delete/deleteIfVersion/multiDelete。前两者要指定完整Key,用途顾名思义。说一下multiDelete,这个操作最多可以指定三个参数,一是必须指定完整的major key,二是可以指定一个由第一个minor key的上下限构成的KeyRange,三是可以指定是删除子节点/子孙节点/父节点和子节点/父节点和子孙节点等多种Depth模式。

3、用于读取记录的get类操作,包括get/multiGet/multiGetIterator/storeIterator。multiGet和 multiDelete一样可以指定KeyRange和Depth。multiGetIterator用于批量取一个完整major key下的大量记录,防止占内存过多,可以指定遍历方向,不保证数据是某时刻的一致视图。storeIterator用于遍历不完整major key下的大量记录,甚至遍历所有记录。

4、用于批量原子更新多条记录的execute操作。系统保证这批操作的原子性,限制是操作的记录必须都拥有相同的major key,且同一条记录不能操作多次。

四、数据一致性
目前,很多 NoSQL产品仅可以提供“最终一致性”,即对多个数据副本进行“最终”更新,因此很难进行应用编写。这便将生成代码以处理一致性的责任留给了应用开发人员。相反,Oracle NoSQL数据库具有管理一致性,并为开发人员提供可配置的一致性选项,满足了不同应用的需求,并为企业提供了强大的技术支持。因此相对于诸多同类型解决方案,Oracle NoSQL数据库更易于安装、配置和管理。

甲骨文NoSQL数据库中重要的地方是针对ACID遵从而做的近似工程,这让甲骨文NoSQL达到了SQL数据库所能够提供的严格标准。ACID的意味着事务所具备的四个特性:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation,又称独立性)、持久性(Durability)。

不过,目前对于如何解释其具体含义还存在着很大的争议。而大多数的NoSQL系统走的是另一条路:BASE,即基本可用(Basically Available)、软状态(Soft State)和最终一致性(Eventually Consistent)。换句话说,你可能会得到正确的答案,除非你不做。关于甲骨文NoSQL数据库是否真正提供ACID遵从还有不少争论,但甲骨文NoSQL数据库确实可以做出这样的承诺。

Oracle NoSQL的数据一致性比较灵活精细。就读取而言,可以指定只从master读、不管replica是否落后都可以从replica读、只在 replica落后master时间在某阈值之内时才能从replica读、只在replica的版本号不小于某指定版本号时才读。指定版本号的读一致性可以用于实现read-your-own-write形式的一致性,即保证自己能读到自己刚写的数据。

就更新而言,可以指定两方面的策略。一是master要不要等各个replica的应答,这里可以选要所有replica应答、要大多数replica应答和不等replica应答等3 种。二是数据要不要持久化到磁盘,这里可以选不要(更新到内存就可以了)、写磁盘但不SYNC、写磁盘且要SYNC等3种。持久化策略可以指定 master和replica分别指定。根据文档看似乎没有用到2PC。

五、系统管理及其它
系统提供命令行或WEB界面的管理工具,管理比较方便。可以创建snapshot,snapshot只在partition内部一致,不保证全局一致。可以从snapshot恢复。提供将NoSQL Database数据导入到Hadoop功能。客户端驱动是jar包。

六、小结与评价
优点:
1、数据模型和操作强大。通过由多个key component来构成key并且设计操作时加以支持,Oracle NoSQL实际上不再是纯平面的Key-Value模型,而经常呈现为一种树形模型。多一个key component后缀的记录可以看作是子节点。系统提供了许多批量操作一个子树的功能,对比关系模式可以看出这解决了一部分JOIN问题,提高了开发效率。

2、数据一致性灵活精细。读取和更新都提供了很多一致性选项,可以实现不同的性能和一致性折衷。此外通过版本号,可以支持Compare-and-Swap、Read-your-own-write等语义,为实现并发正确性提供了便利。

3、支持多记录原子性操作。

当前版本最主要的问题是不能加存储节点,不过相信这个问题不久后会被解决。

 

 

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/18922393/viewspace-713935/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/18922393/viewspace-713935/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值