2016年将发布的Oracle 12cR2 Sharding分片特性的痛点在哪里?
Posted AskMaclean
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2016年将发布的Oracle 12cR2 Sharding分片特性的痛点在哪里?相关的知识,希望对你有一定的参考价值。
有人要说Oracle的sharding来的真晚,但我要说:“迟到总比不到好!”
过去几个月我一直有研究MongoDB,这样的一个小型NOSQL数据库(和Oracle比它简直是袖珍动物),其一大卖点就是可以算得上成熟的Sharding分片,丢掉了Sharding的话MongoDB的性能远远不能和Oracle比拟,简直不在一个次元。MongoDB 不是唯一使用分片的NOSQL,它只是众多NOSQL中最流行的一个。从这一点看,Sharding真是不可或缺的Key Feature关键性特性。
为什么Oracle的Sharding来的这么晚?
是技术上很难实现吗?从个人的理解来看,对Oracle而言创造新生事物远远不会比让旧的事物更好地兼容来难。最明显的例子是redo的endian问题,在12c之前的Oracle就做到了让数据文件datafile可以在不同的尾端endian上互相转换,你可以将AIX上的Oracle数据文件转换成在Linux上的Oracle中也可用;但很可惜Oracle至今(12cR2中估计也做不到)也无法实现让不同endian上的redo重做日志能互相转换,这意味着至少现在你没有办法实现例如AIX到Linux的DataGuard。
为什么做到redo的endian转换这一点十分困难?
因为redo format 、buffer、block format 这些东西都是oracle的基石,这些基石的标准从Oracle 6/7就开始存在,这些东西存在了超过25年或更久。基石的标准在这数十年中不断增加,但修改并不多。如果你想要给一桩超过30年的老房子的地基做上些修改,那么你很可能已经入坑了(你可以在地基上动一个bit位试试!)!
为什么我说Oracle要实现Sharding并不困难?
因为Sharding的实现并不要求你去动地基,你只需要在原来的基础上再造阁楼就是了。这让开发sharding变成了传统软件工程上的问题,而不是要动祖宗家法的问题。
Oracle实现Sharding的痛点到底在哪里?
核心的问题在于Oracle原有架构主要是面向Scale up(Scale vertically)的,虽然你我都知道Oracle有个东西叫RAC real application cluster,但你可以回想一下你有在非实验室里遇到过超过10个节点的Oracle RAC Cluster吗?
Oracle是收费的商业RDBMS软件,Oracle是Scale Up的,以及ORACLE RAC的Share Disk,这3点造就了你我今日所目睹的RAC。
如果Oracle要推出Sharding特性,那么就意味着它不可能和RAC重叠,它要解决的是RAC不能解决的问题。那么可以说如果sharding的节点数目和RAC差不多,那时纯粹扯谈的。
而当用户真的要把sharding部署到成百上千个节点时,另一个重要的问题就凸显了。Oracle传统上是一家卖license的公司,Oracle Database的license按照CPU或named user收费;如果按今日的许可证价格来估算的话那无疑将是一笔巨额投资。
所以读到这里你应当意识到了,使用sharding的一个重要前提根本就是软件成本低廉,乃至于软件本身免费。
Oracle意识到这个严重问题了吗?
毫无疑问的是Oracle意识到了,同时在12c的开发过程中引入了一种新的理念:Oracle Core Database, 核心数据库版本,Native Install for Core Database。
Oracle将针对Linux提出一个新的安装版本 Oracle Core Database ,该Core Database将使用Linux上的原生安装方式 例如rpm或其他package,这意味着你安装Oracle Core Database只需要一条命令 yum install oracle-core-database。这与之前Oracle发布过的Oracle Express版本 Oracle XE 看起来有些相似,但是和Oracle XE的有巨大的差别,因为Oracle XE是一个阉割的不能再阉割的一个版本,而Oracle Core Database不是,Oracle Core Database在Oracle数据库的基本功能上完全没有限制,仅仅限制了部分企业版的option。这意味着Oracle将其核心功能精简到一个Core Database中,并在Linux上以 rpm或其他package形式快速发布。”Oracle Core Database 12gR1 will be packaged as an RPM. RPM is considered the standard way to deploy packages on most Linux systems. Also, RPM was originally known as ‘Redhat Package Manager’ which is now updated and known as ‘RPMPackage Manager’.”
显然Oracle Core Database将不支持Oracle的原始的分区partition特性, 在笔者看来Oracle Core Database恰恰是为Oracle Sharding特性而定制的!
Oracle Core Database的提出显然是为了在12cR2 sharding的预演, Oracle Core Database版本将区别于Oracle EE enterprise edition企业版的较高价格,其本身的出现就是为sharding而设计的,为了让用户能从sharding中充分获得横向扩展能力,显然Oracle要在原有EE企业版的基础上搞出一个即易于安装部署、具备Oracle数据库的核心功能,又与Oracle原有EE企业版有功能差距的这么一个版本。在这个Core Database版本上,Oracle可以大幅降低其license 成本费用,达到Oracle EE企业版的几分之一乃至几十分之一的价格。 毕竟Oracle license许可证的价格是阻碍Oracle Sharding大规模横向扩展的唯一的瓶颈,Oracle真要搞sharding,那么其技术上几乎没有什么瓶颈。
Oracle真能忍痛推出Core Database吗?毕竟传统的license的价格已经卖了好多年了
这是最难的一个问题,也是痛点所在。 相信会受到不少的阻力。但当初Exadata推出时的阻力也不小,最终Exadata成了国际上最流行的数据库一体机。
笔者相信主要larry还在位一天,就总有希望。 一家由创始人保驾护航的公司与由职业经理人打理的公司是截然不同的。
Oracle的野望是什么?
从一个Oracle内核开发的故事来说明oracle的野望可能还算合适,在Oracle 12cR1中引入了Flex Cluster的特性,这个Flex Cluster目前看来还有些鸡肋。但实际这个特性模块在设计的时候其内部代号叫做Big Cluster大集群。显然Oracle极度不满足于目前偏安于Scale-up的处境!
Oracle的Sharding会有多强大?
支持SQL和大量Oracle函数就可以征服绝大部分的开发者。对原有应用程序透明,几乎不做任何应用修改就做到scale-out是很多人追求的梦游,是的。。梦游!在这个NOSQL sharding满天飞的时代, Oracle将以完美支持SQL、事务、并行、丰富查询功能的姿态一头扎向sharding的怀抱。
总的来说,如果oracle有了sharding,而且价格合适的话,绝对是大杀四方的!
然后同学们脑补的形象可能是这样的:
2015 Orcl-Con 甲骨文技术大会 暨OTN亚太行 的免费报名将在后动开始前20天关闭,上海和华东地区的朋友们还不快来报名?
扫码报名本次大会:
dbDao.com 引导式IT在线教育
dbDao 百度贴吧:http://tieba.baidu.com/dbdao
以上是关于2016年将发布的Oracle 12cR2 Sharding分片特性的痛点在哪里?的主要内容,如果未能解决你的问题,请参考以下文章
惊喜与局限并存——来自12C sharding 内测用户“三墩IT人”的预研分享
Linux系统Oracle 12cR2 RAC集群安装与维护管理(12.2)专题
Oracle数据库12cR2(项目实战之二):Linux系统安装Oracle12.2
Oracle数据库12cR2(项目实战之一):在Windows上安装Oracle12.2