上周DTCC,有一位网友见面,提出了一个问题:现在是否有没有必要做数据库一体机。我觉得吧,数据库一体机还是很有意义的,但是也很难。
1 误区
很多人以为,数据库一体机,就是单纯的将一大堆强大的硬件塞进一个机柜(或者较小的体积)内,以提供强劲硬件性能和足够的资源。在很多场景下(如第203期中的),客户本身的硬件或者计划采购的硬件是不满足当下或未来的数据库需求的,那么针对数据库单独立项采购更适合的数据库一体机,确实能解决不少问题。
但是在我看来,数据库一体机不仅仅是一堆强大硬件的集合,它是一个硬件、操作系统与数据库的结合,全栈融合发力才是数据库一体机最重要的价值。
2 硬件
其实关于硬件,之前的N多期也讲过硬件相关的内容,这里先借用一下数据库圈著名历史学家『司马辽太杰』洪杰今天在朋友圈的一张图:
这里我也想cue一下吕海波吕大,吕大在北大的课程、公众号文章以及各个大会的演讲内容,多次提到硬件层面可以做的事情,可以做到更大更广的优化的。但是说真的,现在对于客户、DBA甚至是数据库研发人员来说,很少有人关注这些了,如何在硬件的每个层面去适配优化加速。因为对于大家来说,硬件不够加硬件即可,不需要考虑更多的东西,甚至有人觉得消耗大量的资源才NB(源自于首席)。
回到数据库一体机,给人的第一感觉其实是体积可控并且性能强劲,那么在一体机中的每个硬件组件都必须发挥出最大化的效能。那么首先得做到硬件的可控化选择,单项硬件需要针对数据库需求进行选择优化甚至是单独设计,这样也能减少软件对硬件适配的复杂度(有点类似于iPhone);其次,诸如CPU微码、BIOS、主板芯片组、SSD主控(包含驱动)、网卡等等硬件底层的代码都需要针对数据库进行优化调整或单独设计;最后,优良的硬件设计可以支撑操作系统和数据库实现更多强大的功能(比如节点降级)。
3 操作系统
操作系统作为硬件与数据库之间的桥梁,在整个数据库一体机中是发挥了巨大作用的,其内核层需要针对硬件与数据库进行适配调整优化;各种驱动即需要能使用配套硬件也需要充分发挥其性能,也需要与内核协同;同时还要支撑软硬结合的各项功能特性。
4 数据库
数据库一体机,归根结底还是提供数据库服务能力,那么数据库需要做的就是向下与操作系统和硬件进行对接并充分利用。
对于存算分离架构的数据库,那么针对存储层还可以针对数据库物理与逻辑存储的特性设计特定的软件,充分利用内存、非易失内存、SSD的特性加速IO操作、过滤数据,以提升IO能力(这也是Oracle Exadata/ODA强大的原因)。
如果是share nothing架构,就需要充分利用网络能力,增强其性能和稳定性,支撑多节点数据交互,减少网络对性能的影响。
另一方面,如果需要利用网络中类似于RDMA的硬件特性,除了操作系统支持以外,也需要数据库软件去适配(包括但不限于驱动调用、内存和SSD与网络的数据映射等)。
回到前面硬件那节的截图和说明,数据库对于硬件底层的适配优化也是需要的,甚至是必须的,特别是需要应对高负载的数据库,任何一小点提升都能带来整体巨大提升。另一方面,硬件也不是越多越好,比如多CPU核心/Socket的协调;组件/节点也是,网络压力与全局协调都可能出现问题。
总结
数据库一体机是硬件、操作系统和数据库之间的融合,利用更少的硬件实现小体积的高性能密度。