国产数据库系列之 - 该不该用国产数据库
近期关于国产数据库的讨论非常多,大家的态度褒贬不一。
作为一个从业多年的老DBA,也谈一谈自己的看法。
首先,作为数据库从业人员,很欣喜的能够看到数据库行业的百货齐放。
随着国产数据库厂商的增多,对于数据库行业的人才需求越来越大。这对数据库从业者来说是一个非常好的事情。
就拿我们公司来说,之前对于老员工是千年不涨薪资。以前觉得没压力,因为招一个DBA太容易了,走了一个后面还有大把的人排队等着进。但现在不一样了,给的待遇不高,外面的厂商随便就翻番,很容易就把人挖走了。可是后面又补不进人来,交付端的压力就会越来越大,时间长了就会导致服务质量下降,内部军心涣散,导致更多的人离职。时间长了就成了恶性循环。
所以这两年也慢慢开始主动涨工资,究其根本,我觉得还是数据库行业人才的需求大了,使得这个行业的整体待遇水平在不断的上升。
其次,国产数据库的水平到底如何,该不该用国产数据库。
说到数据库,人们自然会想到Oracle。一旦听说有一个新的数据库产品,也会下意识的和Oracle做一番比较。
Oracle的数据库产品诞生于上世纪70年代末期,经过30多年的发展,早已经成为数据库领域的王者,市场占有率超过50%。反观国产数据库,大部分基于MySQL或PostgreSQL两个开源数据库产品开发,这些产品基本都是一些大厂作为内部支撑系统使用,真正以产品的形态对外商用,也就是近5年的事。
指望一个5年的商业产品和发展了30年的顶级产品去比较,很明显不能期望太多。
但这样就不应该选择国产数据库吗?很明显也不是这样的。这里从我个人的角度列举以下几点理由:
其一,国产数据库能够解决某个特定场景的问题。
随着IT技术的不断发展,数据类型也发生了很大的变化,数据应用的场景也越来越多。
Oracle数据库在基础领域已经足够成熟,因此在朝着多模态的方向发展,比如最新版的21C中,支持区块链、JSON等众多的新数据类型,建设一个新的应用系统时,不需要考虑太多架构上的问题。数据统统都放在Oracle数据库,对于大多数应用系统来说,都是一个不错的选择。
而国产数据库,更多的是专注在某一个特定的场景中,比如联机在线交易(OLTP),这类系统通常都是小事务,由于要面对前端用户,对于系统响应时间要求非常高。而决策分析或者报表之类的业务,对于响应时间的要求并不是很高,但处理的数据量非常大,这时候又需要选择另外一套数据库系统来处理这部分业务。
其二,单体处理能力的不足,可以通过架构来弥补。
市面上的国产数据库,通常都是以分布式的形态出现。
不可否认,分布式有其独到之处。比如对于资源的动态扩容,对于超大事务的支持等。但分布式使得整个架构更加复杂,构造数据一致性需要额外的成本,而且跨节点的分布式事务、全局事务的完整性上也存在着天然的弊端。(当然,这些弊端也可以看做是国产数据库未来的发力方向,谁做的更好,就更有可能在竞争中胜出。)
因此我认为,国产数据库之所以选择分布式,主要是基于两方面的原因:单体处理能力不足和高可用的需要。
即使是OLTP场景,单体的处理能力上,国产数据库和Oracle也存在较大的差距,这些差距更多的体现在CPU和内存等计算资源上。所以同等类型的业务,部署在国产数据库上,需要更多的计算资源来支撑。所谓能力不够,架构来凑,就是如此。
Oracle数据库的RAC和ASM等技术,能够提供实例级和存储级的高可用保护。国产数据库暂时还做不到这一点,因此需要分布式技术从整体架构提供高可用保护。
其三,技术之外的因素。
这两年发生了很多的事情,数据库作为一个非常重要的基础产业,不能完全受制于人。
非技术的因素,这里不展开来说了。作为一个中国人,作为中国的数据库从业者,应该有这样的责任感,为国产数据库的产业发展,做出自己的贡献。