<< 返回文章列表

Oracle 18c体系架构图创作之路 - 设计者说

2018年11月30日
孙雪
2372

编辑说明:在刚刚落幕的第八届数据技术嘉年华大会现场,我们正式发布了『Oracle 18c体系架构图』,在此我们整理了一些18c的特性等,希望对大家有帮助。


(回顾嘉年华:云数据库时代:企业数据架构的云化智能重构和变革(含大会PPT)


自2012年的Oracle 11g体系架构图开始,已经连续发布了四个版本。而我很荣幸,作为12.2版本和18c版本的设计师,今天跟大家分享一下我个人在设计和绘制图的过程中的一些体会,也跟大家一起聊聊18c中最核心的变化和技术点。


除了前期的时候采用手绘图的方式,整个海报的设计基本上是采用OneNote来完成的。以下是设计稿的一个版本。


1543559575799076307.jpg


12.2从开始读文档储备知识到最后绘制出完整的图经历了4个月时间,完成了上百个新特性和模块的设计,18c的新特性相对较少,但是从传统数据库跨域到自治数据库,其中的新特性更细致专业,这也引导我在画图的时候更关注细节,也经历两个月的查阅和设计才完成。


海报所包含的新特性的维度有:功能模块、组件、关联关系、进程、算法、内核存储。针对每一个新特性,都会从以上维度做深入分析,并最终落在纸上,将技术的精美与艺术的优雅结合为一体。 


【技术篇】Oracle18c的神秘和真实



揭开自动驾驶的神秘面纱,首先我们从Oracle数据库的生命周期表中可以看出,18c并不意味着跟以前我们所熟知的11g 12c有天壤之别。事实上,18c在Oracle的产品体系中的真实身份是 Oracle12.2.0.2.  之所以这样改,一方面是为了避开13,另外一方面刚好从2018年开始,Oracle也开始走向了每年一更新这种小步快跑的研发方式。


1543559685520057187.jpg


每一个熟悉 Oracle的人都知道,Oracle每一次薄发,都来源于多年的厚积。本次从12.2.0.1到12.2.0.2(18c)的版本,虽然从开始到推向市场只用了一个季度的时间,却实现了数据库从自动管理到自动驾驶的质的飞跃。


我们挑选了最核心的40多个新特性进行设计。可以简单归纳为4个维度的智能优化提升。

 




1、多租户智能优化


---将自动化运维进行到底


随着互联网和移动应用场景的深化,企业中的IT系统越来越复杂,在运维管理上面临巨大的压力。整合与集中管理是必然之路。多租户跨出的第一步证明了它可以解决企业的IT系统在运维和管理上面临的众多问题,那么接下来就是从“可用”到“如何用得更好”的问题。在12.2的基础上,Oracle 18c在多租户的方案上实现了如下优化:

1)增强的PDB复制功能:在12.2的基础上支持对克隆PDB进行refresh,可实现完全的数据同步,除了应用于故障内外的failover和switchover之外,还可以创建同步的测试环境。对PDB的复制实现上,还支持对PDB进行加密复制和传输,更是扩展了其应用场景。


1543559717384016724.jpg


2)快照转盘实现全面数据保护和基于时间点的恢复。数据安全越来越成为企业的核心关注点。从内部管理的角度来说,有效的备份是不可或缺的。而以往需要DBA制定的备份策略,在18c中已经完全实现了自动化。


1543559775754013947.jpg

3)CDB Fleet的管理,不止于整合,更实现系统规范管理。将不同的CDB作为一个整体来管理,分配不同的CDB的角色。可以通过其中的leader角色统一负责资源的协调和管理,并对其他成员进行操作。


1543559815987032697.jpg


4)通过ContainerMap的特性,在app root中统一对PDB的表进行管理,定义PDB中表的分区策略。当Container Map的内容发生更新时,会自动同步到PDB的map-tab当中。这为application Container中的表的管理提供了极大的便利。

1543559844788098776.jpg


通过这些特性的引入,Oracle多租户方案从简单的整合集中,到自动运维管理,再迈向智能自治自动驾驶,水到渠成。




2、In-Memory优化

---卓越性能,极致用户体验



性能是一条没有尽头的路。从硬件到软件,从系统到算法,Oracle每一个版本在性能提升上都会带来惊喜。在18c版本中,其性能提升主要体现在IN-MEMORY的优化上。包括以下新特性:

1)In-Memory 自动内存管理:主要指的是指自动选择适合In-Memory的对象并压缩提速等。自动管理IM列存储数据,无需人为干预,有益于Oracle管理的云服务,该特性会带来2x的性能提升。

1543560820849015867.jpg


2)In-Memory动态扫描:内存中动态扫描提供了同时扫描多个IMCU的功能。充分利用CPU资源,最大限度提高列式扫描性能,最高达到2X性能

1543560871214074595.jpg

3)对XMEM的支持,并非易失性内存(NVRAM)极大扩展内存容量,可以有大于3x 列式存储。而加大的列存储将极大地提高数据仓库场景下的数据查询效率。

1543560927862079760.jpg


4)Memoptimized Rowstore:该特性是访问OLTP工作负载的内存优化,存在于SGA中,用于启用快速查找时存储表的哈希索引。


1543560960321070524.jpg


除此,18c中IN-MEMORY做了以下算法优化,number类型可以使用SIMD硬件进行快速计算,列存储将NUMBER数值列以原生二进制表示,通过使用SIMD矢量处理,简单聚合和Group by聚合性能明显提升,可高达9倍。针对混合工作负载性能,达到2x提升,同时通过压缩,fast-start优化,dynamic capturewindows等技术,在各个应用场景下的性能都得到了极大改善。

1543560993464044860.jpg


3、ADG及联机操作优化

---从高可用到全面可用


首先nologging功能在ADG环境下得到更好的支持,可用于分解负载或实现高可用两种场景,通过nologging的支持,极大地减少生成Redo的数量。而用户可以根据需求选择主备之间的数据同步级别。

在使用多实例的Redo应用场景下,ADG中可以启用RMAN的块变更跟踪文件(block change tracking file),将多实例日志应用(12.2新特性)与增量备份技术结合,提高adg环境的性能和可用性。同时还支持在主备之间直接传输dml语句。

1543561024799068325.jpg


在功能优化的基础上,Oracle在adg上同时增强了安全策略,比如可以对standby环境做单向加密,而不影响主备之间的数据传输和同步。

同时数据库在表的操作支持上,比如对多态表,inline外部表的支持,表的在线分区重构和合并的实现,都体现了全面兼容可用,灵活切换的趋势。外部表同时也支持在IN-MEMORY中使用。

1543562315308083674.jpg



4、RAC与Sharding

---融合式应用场景



自从Sharding和多租户场景推向市场后,很多用户认为这是完全不同的两种场景下的解决方案。前者用于大表大库的分解管理,后者则是多库的集中和一体化管理。在12.2中通过多租户与RAC结合,也形成了Flex Cluster,Cluster Domain等各种超集合方案。那么与Sharding是否有共通和兼容之处呢?


1543561124193087108.jpg


从18c中我们可以看出,pdb可以作为Sharding中的分片,可以作为Flex Cluster中的节点,而每一个Shard也可以是RAC集群中的节点。这样的兼容,为企业中各类数据库的合并和分解提供了极大的便利。不用再担心技术上的沟壑,只需要根据业务需求,在合适的时间选择合适的方案,灵活切换。当然应用场景融合毕竟不属于高频需求,目前也只是在简单的技术上实现支持,但我们相信,随着Oracle一步步前进,最终走向灵活的业务管理不是问题。


就像罗马不是一天建成的,Oracle的智能化和自动管理,绝不是一蹴而就,而是经过多年的积累和优化,当然18c的推出仅仅代表Oracle终于迈出了这一步,而不是彻底走向了智能。我们期待在后续的版本中,看到Oracle更多的在本地数据库,尤其是exadata之外的数据库环境发力,从而扩展其可服务范围。

(本文只包含重要的新特性,如果想了解更多,请查验官方文档,或持续关注公众号,我们会继续分享。)


 【非技术篇】设计之路,一路走来

从Oracle12.2的从0开始设计绘制,到现在完善了Oracle 18c的新特性版本,从手绘到电子稿到正式的设计图,一篇篇新特性文档啃下来,一条线一个框画出来,一点点上色美化,整个过程我学习到了很多东西,远远超过了技术。所以很想分享一些技术以外的感想,与大家共勉。

 

做一件看似力所不能及的事情


人是一种很复杂的生物体,哪怕是自我这样熟悉的躯体里面,你可能并不知道存在什么样的力量,或者是什么在驱动她的运转。而人生中最大的乐趣之一,就是不断地尝试,并发现自己还能做更多,承受更多的过程。

 

梁宁把人的核心驱动力划分为恐惧驱动和愉悦驱动两种。很多时候我们很难区分二者,只会表现出既兴奋又有点害怕的状态,或许他们就是共存的,就像一个追求完美的人,很难区分是因为完美给他带来的愉悦多一点,还是不完美让他受不了多一点。

 

最初想自己创作这张图的时候,刚开始是12.2,有一次老板无意中说起,想要更新以前的海报,但当时整个团队忙于其他事情,谁都没有放在心上。那时候我对于Oracle的学习并不深入,只是公司的学习资源比较多,而我整理文档会学习到各种不同的思路,也比较真实地感知着Oracle的完美和强大,它如此细致优雅,是让人着迷的。而体系架构图,则是它优雅躯体的完美展现。


当时触发我的点是,在Oracle领域,在云和恩墨,大家都是专家,无论做什么,都是别人做过的。已经有了标准有了约束。一件有对错的事情是容易产生挫败感的。但12.2的架构图,是未知的,是全新的。未知的事物就代表着没有恐惧。你可以尝试失败并把它定义为常态,而如果恰好成功,那就是意外的惊喜了。


  • 创作第一阶段:啃文档,积累知识

我当时默默地开始读文档,去理清楚上一个版本的逻辑关系,整理下一个版本的新特性。那是在技术里面最单纯快乐的日子。把陌生的东西变成熟悉,惧怕的变成享受,复杂的通过纸和笔一点点列出来理清楚。当时花了多少遍不记得了,但我印象中用了好几沓A4纸,虽然是草稿,一直都舍不得扔。直到后来搬家,只留了其中几张。

1543561148535067017.jpg


刚开始最大的挑战还是在技术上。作为一个技术菜鸟,要读懂Oracle十几本新特性文档并将整个体系关联起来并不容易。常常会遇到昨天刚刚理清楚的思路,被今天新发现的一个细节完全推翻的情况。不得不从头再来。但那时候工作很忙,很少有完整的时间去思考,有时为了思维不断片,晚上会连续盯着墙上的图看很久,生怕有什么遗漏。那段时间做梦都是在看文档和画图。

事实上那样的坚持,非但不枯燥反而给我的生活带来了很多乐趣。有时候工作特别忙,或者特别不开心的时候,看到自己整理的技术点,或者看着已经整理过的好多文档,就特别满足。从而更有动力。

第一个阶段,也就是整理技术的阶段很快过去,接下来就是如何将技术优雅地呈现。

  • 创作第二阶段:绘图设计

为了一开始不陷入绘图软件的限制,在读文档的时候一直是手绘图,但并不方便更新,每次修改都是重新画。于是需要做成电子版。查过很多专业的绘图软件,最后却选择了用OneNote笔记。原因是简单随意。它没有模板框架的限制,只提供最基本的颜色,笔和纸。你可以定义所有自己眼里的美。有很多同学经常问起关于工具和软件的选择,每个人都特征不一样,只要自己用起来舒服的,你就可以用它来创作。


这里也联想到产品设计中最基本的一个原则,不要让用户思考,要顺从他的潜意识。我个人就是很典型的懒用户,对于有复杂规则和使用方法的工具,我都敬而远之。OneNote就是这样一款看似傻傻的什么都没有的工具,却可以让用户最大程度的满足和发挥自己的创造力。

  • 创作第三阶段:梳理进程,框线,颜色等各类细节

先是把手绘图搬到了OneNote上面,之后不断地完善,每一个模块,每一个功能,每一个线条,每一次上色,都会让你觉得,原来还可以更好,而正是这种更好的反馈激励我不断去更新完善,每一个细节都不会错过。

周末的时候,把画板放大到极限,然后一点点把颜色凃进去。看着色彩在框架里跳跃,感觉图终于有了生命。

1543561207696068108.jpg


  • 创作第四阶段:找茬

最后几个星期,简单概括为找茬。每天盯着图看那一条线还有问题,哪一个框的颜色对不对,哪一个进程,是否还可以有更好的位置方便连接。越是到快要结束的时候,越觉得整个过程太美舍不得结束。又兴奋地期盼着终版出来然后开心地拿去印刷。


life is a journey, and one of the most  exciting  things  in it is try your best  to find out what you can do and who you can be. 

我说人总要做一些有挑战的看似力所不能及的事情,并为此拼尽全力。未知是没有束缚的,成功是幸运,就算你天天被打击,也不用担心,因为你会在被打击的过程中,逐渐变得强大。这样的成长,是确定性给不了的。



绘画是我的能量场


曾经看到过一句话,外向的人从社交中获得能量,而内向的人则从事物中获得能量。绘图对于我来说,就是我的能量场。我不懂专业的色彩搭配,光度对比,甚至不用懂。但每次沉浸其中,花一个下午的时间把色彩装进线条里面,看着他们在纸上在电脑上跃动,心生喜悦。

 

色彩是阳光的产物,却是另一种让人温暖的表达。在选择配色的时候,每一个框的底色,每一条线,都会细细琢磨。而我脑海中的场景,是各种阳光。比如阳光穿过树叶的时候是灰绿与金黄色的结合,阳光透过玻璃照进来,是橘色和蓝色,阳光经过建筑在角落打下阴影,是蓝绿色和灰色,或在湖面的涟漪上,溅起的水花是玫红与紫色,每一个场景它都是不一样的,都有最适合它的颜色表达出来,有最灵动的生命。



给每一个人:成为更好的自己


跟那些有明确想法的同学和同事相比,我总是处于各样的困扰中。很多时候看不清未来的路,也会很慌。也许是因为我本就喜欢未知,也享受未知带来的痛苦和愉悦。不过如果有跟我一样迷茫的孩子,我很想分享一段话。我不记得摘抄自哪里,它一直在我的日记本里,静静地存在,在我迷茫困惑的时候会给我力量。


有一天你将破蛹而出,成长得比人们期待的还要美丽。但这个过程会很痛,很辛苦,有时候还觉得灰心,面对汹涌而来的现实觉得自己渺小无力。但这也是生命的一部分。做好现在你能做的,然后一切都会好的。我们都将独孤地长大,不要害怕。



迷茫是人生的常态。只有极少数卓越的人一路上一直很清楚自己要走到哪里,看到什么样的风景。我们大部分人,都是在不断试错中成长。迷茫的时候,做些让自己心动愉悦的事情,找到自己的能量场,不要被残酷的现实打倒。机遇总是会来,今天或是明天。你准备好了,就要不遗余力。


不要怕,不要沮丧。做最好的自己。为你所爱的,和你想要的。


在两次绘图过程中,感谢盖总,杨老师,kamus,罗海雄等各位专家的指导和帮助。感谢熊总,在我设计18c的时候给予我很大的支持,感谢恩墨的大家,让我时常感受到温暖和力量。

云和恩墨,是一个值得你托付才华和梦想的地方。如果你有梦,如果你愿意为此付出努力。我们欢迎你,来这里一起进步!



作者简介

1543562639025080605.jpg

孙雪

云和恩墨数据安全产品经理。Oracle 11g OCP, Oracle 12.2,18c 体系架构图设计师,参与出版《Oracle性能优化与诊断案例精选》,主讲在线系列课程“Oracle RAC深入解析”、“Oracle 12.2新特性“