第九十七期 以一当十的数据库路线(20230810)
距离上一期已经过去了整整9天了,相较于前几个月的“生产队的驴”,确实慢了很多,归根结底有几点:一是19c OCM的相关内容暂时告一段落,少了一半内容;另一方面,准备完成了19c OCM的模拟环境,也开始了2天一轮的疯狂练习;当然还有就是大运会保障,我本身工作上也没啥事,素材偏少。
另一件事情,昨晚开源中国了组织了一个线上直播《MySQL 和 PostgreSQL,谁是世界第一?》,很多人都在说,素材来了,但是说真的,我真不想写,文无第一武无第二,选择适合自身应用场景、需求的数据库才是最重要的。
作为一个全职的Oracle DBA和兼职的其他数据库DBA,我还是认为Oracle才是世界第一(其实Excel才是,手动滑稽)。
1 多对单
这里不是指的数据库功能的多寡(如果比功能数量的话,PG能拉出一整页),具体咋解释看下图吧:
其实国产很多数据库,特别是分布式数据库走的路线和AWS是一样的,通过不同组件来实现如HTAP等功能,其实也就是把TP和AP分到不同的数据库组件去执行,也达到了不错的效果。以TiDB为例,就是通过存储引擎 TiKV 、列存储引擎 TiFlash 两款存储引擎实现了HTAP功能。
而Oracle走的却是另一条路,与PG通过插件来实现功能扩展的方式不同,Oracle使用一套统一架构,实现了多种数据库类型、多种数据负载、多种开发场景的支持,同时实现了CPU、内存、IO全方面隔离的多租户架构。这样的好处是显而易见的,维护量是显著减少的,不用去管理那么多组件也不用考虑组件之间的协调与同步;同时很多新功能的视线是无需对原有代码进行变更的;由于统一架构也能实现软硬件资源更加高效的利用,减少不必要的资源损耗。当然问题也是显而易见的,当新功能需要添加的时候,为了性能、稳定性和安全性的考量,同时维持高效的软硬件利用率,数据库本身可能需要从最底层代码进行变更甚至是重写,这往往需要很长时间,比如大版本升级才能实现,也增加了数据库出现bug的几率(这里可以参考19c初始几个版本显现出来的问题)。
两种方式孰优孰劣?我个人是站Oracle的,当然这也源自于Oracle在数据库行业超过40年的技术积累以及至今让人无法望其项背的研发投入,让Oracle有足够的资本选择一条更难但是更优的道路;国内的PolarDB、MatrixDB也走的类似的道路,目标是用户使用简单的统一架构降低使用成本。而使用多组件或者插件的方式,如前面提到的AWS以及PostgreSQL、TiDB、OceanBase等,确实也带来了数据库架构的灵活性,数据库功能扩展的便捷性,但是回到本源,多一个东西多一分损耗,多与优的平衡是需要好好掌控的。
2 能力密度
能力密度这个词,我第一次是在一场Oracle关于Exadata研讨会上听到的:
这里节选了部分PPT内容,Exadata的性能,没用过的人可能不知道,我以我自己经历来说一下,以Exadata X9M-2 1/4替换4节点4U(单台40C512GB)服务器X86架构RAC集群为例:
原来X86架构服务器每台机器是配置了两张双口16Gbps的HBA卡,后面分别挂了EMC VMax和EMC Unity两套存储用以IO分流;两张双口万兆网卡,生产网络做了交叉bond mode1,集群私网做了双路双活;每台机器4颗E7-4820 v3的CPU。
即时是这样,3个用于生产的主机CPU占用率常年超过66%,经常性突破80%;私有网络10GE经常跑满,扩到20GE后也会偶尔跑满(知道为啥用双路双活的模式了吧);集群和IO等待常年较多。迁移前,数据库常态运行的活动会话数约为150左右。
迁移到Exadata过后(直接上截图):
看图说话,相同负载下,不对,现在无论负载还是数据量是远高于迁移之前,Exadata带来的性能提升还是非常可观的。关于具体PDB的性能提升可以参看数据库管理-第四十二期 复盘一下(20221104)中的第四节“喜闻乐见”。
由此可以看出,Exadata确实可以用很小的空间(往往是一个机柜外加用于外部访问的交换机),利用“相对垃圾”的硬件,用极大的性能密度来解决需要很多服务器和配套其他硬件解决的问题。除了带来能耗、维保、空间层面的优势,维护层面的简化也有巨大的优势。
关于Exadata如此强大的根源,其实并不是GI+DB构建的RAC集群(当然数据库本身强也是个基础),更主要源自于Exadata Storage Software带来的诸如smart scan offload(详见数据库管理-第六十一期 Exadata是否需要索引(20230314))、分布式存储、智能存储索引等特性,充分利用NVMe SSD、RoCE/RDMA、PMEM/XRMEM等硬件优势,结合Oracle对自身数据库在数据存储层面的了解,软硬结合,极大扩展了存储提供的IO能力。这个是我们国产数据库和国产数据库一体机需要着重学习的,而不是单纯去堆硬件。
3 卷带来了什么
其实我之前在公众号写了一篇文章我们究竟在卷什么。还是以我这环境为了,好不容易通过Oracle Exadata和DBaas缩减的服务器用量,减少的维护压力,提升的数据库性能和稳定性。在国产化(或者开源替换)浪潮下,我们需要比以前还多的服务器、更多的数据库运维人员、更多的数据库类型来解决数据库层面的问题,不仅付出更多的硬件采购维保费用、电费、场地费、人工费,同时license费用也会增加很多。
总结
昨晚MySQL和PostgreSQL在争第一,直播评论里很多人就说:“Oracle会怎么看”,“Oracle是第一”,“Oracle是这个星球最好的数据库”。诚然,Oracle确实很强。但是要我说,Excel才是最强的:全功能的,图形化,跨平台,HTAP,BI集成,有云原生,自带GUI的Scripts,在Excel上可以创建Button和Event出发事件,也是个内存数据库;EXCEL满足90%企业的数字化需求。
这一期,我也不晓得晓得还是不晓得写了些啥。
最后,感谢薛首席提供的文章标题。