zoukankan      html  css  js  c++  java
  • Oracle 18c体系架构图创作之路

    编辑说明:在刚刚落幕的第八届数据技术嘉年华大会现场,我们正式发布了『Oracle 18c体系架构』,应广大网友的呼吁,特别向不能到场的朋友放送


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


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

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

    640?wx_fmt=png

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

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

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

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

    640?wx_fmt=png

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


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

     

    640?wx_fmt=png

    1、多租户智能优化

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

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

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

    640?wx_fmt=png

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

    640?wx_fmt=png

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

    640?wx_fmt=png

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

    640?wx_fmt=png

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


    640?wx_fmt=png

    2、In-Memory优化

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


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

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

    640?wx_fmt=png

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

    640?wx_fmt=png

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

    640?wx_fmt=png

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

    640?wx_fmt=png

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

    640?wx_fmt=png


    640?wx_fmt=png

    3、ADG及联机操作优化

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

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

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

    640?wx_fmt=png

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

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

    640?wx_fmt=png


    640?wx_fmt=png

    4、RAC与Sharding

    ---融合式应用场景


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


    640?wx_fmt=png

    从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纸,虽然是草稿,一直都舍不得扔。直到后来搬家,只留了其中几张。

    640?wx_fmt=jpeg

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

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

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

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

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


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

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

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

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

    640?wx_fmt=jpeg


    • 创作第四阶段:找茬

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


    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的时候给予我很大的支持,感谢恩墨的大家,让我时常感受到温暖和力量。

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


    640?wx_fmt=png

    作者简介

    640?wx_fmt=png

    640?wx_fmt=jpeg

    孙雪

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


    640?wx_fmt=png

    文末福利


    文末留言:在本文下方留言表达感想,并且转发朋友圈,点赞排行前 30 名,截图发给小助手(微信:Enmoedu05),即可获得 Oracle 18c体系架构图纸质版 包邮到家!


    活动截止时间:2018年11月30日。



    资源下载

    关注公众号:数据和云(OraNews)回复关键字获取

    2018DTCC , 数据库大会PPT

    2018DTC,2018 DTC 大会 PPT

    DBALIFE ,“DBA 的一天”海报

    DBA04 ,DBA 手记4 电子书

    122ARCH ,Oracle 12.2体系结构图

    2018OOW ,Oracle OpenWorld 资料

    PRELECTION ,大讲堂讲师课程资料

    近期文章

    企业数据架构的云化智能重构和变革(含大会PPT)

    Oracle研发总裁Thomas Kurian加盟Google Cloud

    变与不变: Undo构造一致性读的例外情况

    Oracle 18c新特性:动态 Container Map 增强 

    Oracle 18c新特性:Schema-Only 帐号提升安全性

    Oracle 18c新特性:多租户舰队 CDB Fleet (含PPT)

    为什么看了那么多灾难,还是过不好备份这一关?

    640?wx_fmt=jpeg

  • 相关阅读:
    wireshark抓包 TCP 字段详解
    youget使用教程
    JavaScript操作Oracle数据库
    WinForm导出文件,你懂的……
    Docker数据存储原理
    Dockerfile之CMD与ENTRYPOINT使用要点
    DevOps实战(Docker+Jenkins+Git)
    Python和Django web开发工具pycharm介绍
    连出两次
    python2.7发邮件小程序
  • 原文地址:https://www.cnblogs.com/hzcya1995/p/13312228.html
Copyright © 2011-2022 走看看