浅析Oracle NoSQL Database

近日Oracle提供了不久前公布的NoSQL数据库的下载,目前只有企业版,开源的社区版还没提供,也就是说还看不到源码。不过根据文档也能大致了解这个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,且同一条记录不能操作多次。

四、数据一致性

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、支持多记录原子性操作。

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

原文出处:http://wangyuanzju.blog.163.com/blog/static/130292011919114541710/

【编辑推荐】

  1. Oracle发布NoSQL数据库
  2. 微软进军NoSQL 发布Trinity数据库
  3. 微软研究人员:NoSQL需要标准化
  4. MySQL中的NoSQL插件
  5. SQL与NoSQL——MySQL与NoSQL的融合

文章来源网络,作者:运维,如若转载,请注明出处:https://shuyeidc.com/wp/239506.html<

(0)
运维的头像运维
上一篇2025-04-23 10:50
下一篇 2025-04-23 10:51

相关推荐

  • 个人主题怎么制作?

    制作个人主题是一个将个人风格、兴趣或专业领域转化为视觉化或结构化内容的过程,无论是用于个人博客、作品集、社交媒体账号还是品牌形象,核心都是围绕“个人特色”展开,以下从定位、内容规划、视觉设计、技术实现四个维度,详细拆解制作个人主题的完整流程,明确主题定位:找到个人特色的核心主题定位是所有工作的起点,需要先回答……

    2025-11-20
    0
  • 社群营销管理关键是什么?

    社群营销的核心在于通过建立有温度、有价值、有归属感的社群,实现用户留存、转化和品牌传播,其管理需贯穿“目标定位-内容运营-用户互动-数据驱动-风险控制”全流程,以下从五个维度展开详细说明:明确社群定位与目标社群管理的首要任务是精准定位,需明确社群的核心价值(如行业交流、产品使用指导、兴趣分享等)、目标用户画像……

    2025-11-20
    0
  • 香港公司网站备案需要什么材料?

    香港公司进行网站备案是一个涉及多部门协调、流程相对严谨的过程,尤其需兼顾中国内地与香港两地的监管要求,由于香港公司注册地与中国内地不同,其网站若主要服务内地用户或使用内地服务器,需根据服务器位置、网站内容性质等,选择对应的备案路径(如工信部ICP备案或公安备案),以下从备案主体资格、流程步骤、材料准备、注意事项……

    2025-11-20
    0
  • 如何企业上云推广

    企业上云已成为数字化转型的核心战略,但推广过程中需结合行业特性、企业痛点与市场需求,构建系统性、多维度的推广体系,以下从市场定位、策略设计、执行落地及效果优化四个维度,详细拆解企业上云推广的实践路径,精准定位:明确目标企业与核心价值企业上云并非“一刀切”的方案,需先锁定目标客户群体,提炼差异化价值主张,客户分层……

    2025-11-20
    0
  • PS设计搜索框的实用技巧有哪些?

    在PS中设计一个美观且功能性的搜索框需要结合创意构思、视觉设计和用户体验考量,以下从设计思路、制作步骤、细节优化及交互预览等方面详细说明,帮助打造符合需求的搜索框,设计前的规划明确使用场景:根据网站或APP的整体风格确定搜索框的调性,例如极简风适合细线条和纯色,科技感适合渐变和发光效果,电商类则可能需要突出搜索……

    2025-11-20
    0

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注