从架构到部署:全面了解Oracle NoSQL数据库

日期: 2014-04-21 作者:Robert Sheldon翻译:孙瑞 来源:TechTarget中国 英文

在甲骨文大数据集成系统Big Data Appliance(下文简称BDA)中,关键组件Oracle NoSQL Database受到了非常多的关注。它的底层基于BerkeleyDB数据库,是一款非关系型的分布式系统产品,能够跨多个数据节点对海量非结构化数据进行处理。与我们所熟知的Oracle关系型数据库相比,Oracle NoSQL Database有着非常大的不同,同时也是数据库巨头甲骨文倾力打造的一款新产品。

NoSQL运动

根植于互联网公司(如Amazon和Google),所谓的NoSQL运动在近5年内获得了业界的普遍关注,许多企业在寻求一种快速、高效应对海量数据处理与分析的方法,而在这一传统关系型数据库所不擅长的领域当中,NoSQL数据库开始逐渐进入人们的视野。NoSQL即Not only SQL的缩写,它为海量数据集处理提供了一个非常灵活的架构,它可以进行横向扩展并部署到多台廉价服务器硬件上。

举例来说,NoSQL数据库的应用场景包括从活跃的网站中收集点击流数据,对在线购物的用户进行行为跟踪监控,收集实时的传感器数据以及支持社交网络中的通信数据等。

大多数关系型数据库管理系统都严格遵循ACID准则,即原子性,一致性,隔离性以及持久性,这样可以确保数据永远是可预测并且受保护的。NoSQL数据库在数据存储方面采取了另外一种方法,或者我们可以称之为BASE准则:

  • Basically Available(基本可用):数据在多个节点中被复制与分区,通常是在独立(self-contained)的标准服务器上,这样能够确保在多台服务器出现故障时数据库仍然可用。
  • Soft state(软状态):基于ACID的系统会要求数据的一致性,而一个NoSQL数据库允许数据处于非一致性状态。这种状态往往出现在数据更改但没有完全复制之后。
  • Eventual consistency(最终一致性):在数据完全被复制之后,最终会恢复一致性状态。

尽管NoSQL数据库可以支持大型数据集与低延迟操作,但它不能提供像传统关系型数据库中确保数据完整并降低数据冗余和不一致性的粒度控制能力。NoSQL数据库可以用来应对特定的数据类型。

当然,NoSQL数据库与传统关系型数据库之间的区别不只是BASE与ACID的区别,它们存储数据的方式也非常不同。而且不同的NoSQL技术之间处理数据的方式也会有所不同。

Oracle NoSQL数据库怎么做?

甲骨文的NoSQL数据库可以完全集成到它的企业级应用技术当中,包括Oracle关系型数据库,Oracle Enterprise R以及Hadoop MapReduce框架。

Oracle NoSQL Database是在Oracle Berkeley DB Java Edition基础上构建的,它为分布式环境下的海量键值(Key-Value)数据提供了一套存储与管理机制。在数据库中,每一条记录都由特定的键(Key)与相关的值(Value)组成。

一条记录的键是由一个主键和一个副键组成的,二者结合可以用来鉴别特定的记录。举例来说,假设一个数据库存储了用户资料的信息,那么针对副键可以使用资料名,对于每一个主键可以使用资料的一个属性,比如姓、名、电子邮件或手机号。记录的相应值部分包含了用户的真是姓名,电子邮件或手机号。这样你就可以通过主键将记录的每一个用户的每个属性组合起来。

这个系统的优势在于应用对于定义主键与副键拥有完全的控制。不同的主键可以拥有多个不同的副键,而副键的数量也是不定的。数据库所需要的就是键值结构,而不会关心数据本身究竟是什么。

Oracle NoSQL Database架构

Oracle NoSQL Database通常是三层应用模型的一部分,其中Web服务器在最上层,应用服务器在中间层,数据库在最后端。与数据库进行通信所需要的应用程序接口(API)是嵌入到应用之中的。为了处理并控制查询,在API和数据库之间会有一个客户端驱动程序提供接口。

Oracle NoSQL Database的核心是一套存储节点,它将数据存储起来并暴露给客户端接口。通常情况下,一个存储节点就是一台物理服务器,拥有自己的内存、CPU核以及本地存储(传统磁盘或SSD)。每一个存储节点都包含一个或多个复制节点。

复制节点会集合到复制组当中,而一个复制组是由一个主节点和一个或多个只读复制节点或副本组成。数据库中的每个复制组都包含相同数量的副本,而且一个复制组中的所有节点都存储相同的数据。

数据修改只在主节点上进行,因此主节点中存储的都是最新的数据。修改后的数据会从主节点中复制到副本,它支持读操作。如果一个应用查询的数据在主节点上进行了修改但并没有复制,那么数据就处在非一致状态。在一个NoSQL系统当中,应用负责确保数据一致性。但Oracle NoSQL Database提供了记录版本,用来帮助应用执行这一任务,而且一些应用能够容忍低级别的不一致性。

每一个应用节点都有一个或多个分区,它包含了实际数据。Oracle NoSQL Database会将记录键映射到分区中,并将数据平均分散到所有可用的分区。当一个键被分配到一个分区时,它就无法再移动了。Oracle NoSQL Database会维护分区结构,以便最好地支持低延迟读操作。

部署Oracle NoSQL Database

本文只是从最浅显的角度来介绍Oracle NoSQL Database,事实上你可以对系统设置进行更全面的控制。比如你可以制定一个一致性策略,确定副本对不一致级别的容忍度。此外,你还可以制定持久性策略,确定哪些数据在系统崩溃后是可以恢复的。

Oracle NoSQL Database灵活的架构使得企业可以控制其吞吐量和存储能力。举例来说,添加存储节点会带来较大的总体吞吐量以及存储能力,添加复制组则可以改进写性能。但二者往往是相互影响的,比如增加节点可能会影响写性能。Oracle NoSQL Database可以提供比较灵活的配置选项,让企业根据自身的需求来权衡读写之间的性能。

Oracle NoSQL Database还针对数据库安装提供了一个管理服务,用户可以选择命令行工具或者Web界面工具进行管理。通过这一服务,用户可以对数据库实例进行配置,启动或停止数据库。这一服务还会收集并监控数据库性能参数,为DBA提供在线监控能力。

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

电子邮件地址不会被公开。 必填项已用*标注

敬请读者发表评论,本站保留删除与本文无关和不雅评论的权力。

翻译

孙瑞
孙瑞

相关推荐