国产数据库百态(1)国产数据库老四家
春节假期我彻底休息了几天,没去管什么技术。实际上春节好像事情挺多的,没干啥正事也就很快过去了。唯一思考的事情就是回顾了一下我接触过的一些国产数据库,把他们的一些我认知的情况总结了一下,供大家在做数据库选型的时候参考。这篇文章涉及的数据库产品不少,篇幅也比较长,我可能会分多期发出,大家可以先收藏再慢慢阅读。
实际上数据库选型与企业自己的应用场景与技术特点有关,并不一定有很标准的选择依据。有一点经验可能是比较通用的,那就是作为一个企业长期要使用的数据库,要选择企业规模较大,具有一定实力,能够长期发展的数据库产品。选择MySQL、PostgreSQL这两个已经十分成功的开源数据库,在这个原则下是没有任何问题的。而如果要选择国产数据库,那么最重要的是要看数据库后面的企业的规模,在这场内卷严重的竞争中,肯定会倒下一大批实力不够的数据库厂商。什么样的企业靠谱一些呢?我有一个建议,那就是选择那些通过国测的数据库产品。数据库国测的要求不低,根据国测的流程和标准分析,能够过国测的厂家,最起码有三五十个比较靠谱的数据库产品研发人员,从公司规模上是可以让人放心的。目前过国测的公司拿到的证书都是1级,今年的国测比以往更加严格,能通过今年国测的数据库产品不会太差,不知道今年能不能出现通过二级的产品。
下面进入正题,聊聊哪些我了解的国产数据库,今天这部分介绍最早的四个国产数据库厂商达梦、人大金仓、南大通用、神舟通用。
达梦数据库是我真正接触的第一款国产数据库,2012年我协助客户组织了一次分析型数据库基准测试,参加测试的国产数据库是DM MPP、Gbase 8A,腾讯数据库(基于PGXL)、浪潮等,其中参与的比较积极的是达梦和南大通用。测试结束后,冯老师还特意到南京和我讨论了那次的测试结果,当时给我的印象还是挺深的。14年我到武汉出差的时候,还到达梦总部做了回访,和达梦的朋友做了一次关于国产数据库需求的交流。
2014年我们的一个优化项目中有几套系统使用了DM6数据库,于是开始了与达梦数据库的亲密接触。2015年,有一个省调想对OMS系统做高可用建设,问我利用全国产的堆栈,能不能做出类似Oracle的双活系统。于是我们协助他们分析了整个堆栈,提出了一套基于DMHS复制的读写分离的双活方案,并在2016年完成上线运行。在光纤距离105公里的一个跨城市的环境中实现了主站承担全部写和80%的读,备站承担20%读的双活系统。当主站故障时,可以在10分钟内实现全部应用功能的自动切换,这套系统上线后,经历过一次主站存储故障,备站很好的承担了全部业务,达到了设计目标。
关于达梦数据库的技术来源,我可以很负责的说,这是一款完全自主研发的关系型数据库管理系统,特别是DM7做了一次彻底代码重构优化后,其核心代码的自助率应该是比较高的。现在有些声音是“某数据库不是自主研发的,是当年买了Oracle 9的代码”,这是因为达梦数据库与Oracle在SQL等方面太像了,其主要功能基本上可以与Oracle 9i对标。实际上这是一个模仿秀而已,购买Oracle早期代码是一种误解。以我对Oracle与达梦数据库的 了解,以及与达梦研发团队多年的合作来看,这个说法百分之百是假的。首先底层块结构是完全不同的,Oracle是堆结构的,达梦是B树结构的。另外是进程架构,达梦是采用单进程多线程架构的。再看REDO机制,达梦没有Oracle的LOG SWITCH机制。从这几点上看,两种数据库是完全不同的。
达梦与Oracle在应用代码迁移方面的便捷性是目前所有国产数据库中最好的,2016年的时候我们参与南方电网人资系统从Oracle向DM8的迁移,其应用代码除了一个拼接字符串的函数之外,没有做任何的改造。目前达梦在党政,金融行业的OA系统国产数据库替代中占有较高的市场份额,也是国网、南网调度系统国产化替代的主力数据库,主要也是受益于其良好的兼容性。
从DM6到DM7/DM8,我感受到最大的是稳定性的提升,特别是DM8之后达梦数据库的小毛病少了不少。这些年我和达梦研发的朋友交流的时候说我感觉DM8在性能提升方面的进展远不如功能与兼容性等方面,他们给我的回答是国产化替代大面积开始后,大量的用户在使用达梦数据库,因此他们的首要任务是让这个产品更加稳定,满足党政与国企在数据库应用上的基本需求,保证用得稳定。另外就是在Oracle、MySQL等的兼容性上做大量的适配工作,以便于让用户把大量的应用系统迁移到达梦数据库上。他们在对标Oracle RAC的DM DSC上也投入了大量的研发,RAC功能是不大好做的功能,目前国产数据库只有达梦正式商用了此类功能,不过在实际应用中还是遇到了不少问题,全局热块和缓冲区融合带来的闩锁争用会导致系统性能出现瓶颈,必须通过应用改造来解决。当年Oracle 9i遇到的问题,DM DSC也正在面对。DM8是比较早通过国测的国产数据库产品,据说也是在上一期国测中得分较高的厂家之一。
DM DPC
达梦数据库基于DM8已经衍生出了DM DSC/DM DPC/DM MPP等产品,这些产品的SQL引擎核心是统一的。其中DM8主打主从复制高可用,DM DSC是类似Oracle RAC的产品,而DM DPC是为金融、工业互联网、物联网打造的存算分离的分布式数据库产品。DM MPP主打OLAP场景,2013年我曾经测试过该产品,不过好像近些年达梦已经不主推该产品了。
人大金仓国内最早的数据库厂商之一了,KingbaseES数据库是基于PostgreSQL开源代码开发的,早期的KingbaseES基于PG 9.X, 后续版本采用了较新的PG内核。人大金仓的开发团队是比较早基于PG内核进行研发的团队,在PG内核技术方面的积累是比较深的,这些年在KingbaseES中也针对PG优化器的一些能力不足做了大量的增强,在这方面积累了大量的经验。KingbaseES做了大量的Oracle、MySQL、SQL SERVER、DB2、Informix等语法兼容方面的改造,因此当用户有在做数据库国产化改造时有大量上述种类的数据库的时候,人大金仓数据库会给与比较好的支持。与金仓的合作中给我感受比较深的是他们的服务是不错的,对于客户的需求响应速度与配合度都是相当不错的,后来在与一些金仓的客户接触的时候,他们给我的反馈也大多如此。
早期人大金仓的数据库产品也很分散,这是国内内卷的数据库市场逼出来的,分布式、KV等产品目前已经不是公司主推的了。目前人大金仓主推KingbaseES。其中也有一个模仿Oracle RAC的共享存储多读多写的版本,不过仅在一些重点客户处应用,并没有做大规模推广。人大金仓的“RAC”目前主打的还是高可用切换,TAF等方面的能力对比Oracle来说还有一定的差距,对应用而言,最好做一定的隔离,否则缓冲区融合很可能会遇到一些性能问题。另外金仓在去年推出了一个类似于Oracle apex的低代码开发平台,主要也是希望给客户一站式解决方案。金仓数据库的传统客户在能源、党政、军方等领域,也是目前电网调度系统的两个主要供应商之一。KingbaseES也是最早通过国测的数据库厂家之一。
南大通用最早是做MPP架构的OLAP数据库的,当时主要的目标是解决Oracle不太擅长的数据仓库领域。2012年开始到2015年,我曾经配合用户对GBase 8A做过多次测试,评估其是否能够用于替代TD、GP等国外的数据仓库。在我们的测试报告一次次的给它判死刑的过程中,我也有幸见证了一款数据库产品的不断提高与成熟的过程。从早期的负载上去集群都会TIMEOUT到能够完成我们近于残酷的即席查询,后面是厂商多个团队的不断努力。从那以后,我收起了对国产数据库的轻视,觉得只要给他们时间,在中国的复杂应用场景中,是能够磨练出几款成功的数据库产品的。
后来南大通用购买了IBM INFORMIX的IP授权,拿到了除去安全模块的所有Informix源代码,并基于此搞出了Gbase 8S/8T,并通过了国测,我们也祝愿他们能够在IP授权到期前吃透Informix代码,改写出一套真正国产的GBase 8S来。去年开始,南大通用基于openGauss内核开发了Gbase 8C,Gbase 8C作为目前openGauss生态里唯一一个分布式数据库产品,其对标的是华为GaussDB分布式,在市场上主打性价比。目前Gbase 8C已经报名参加了今年的国测,估计在今年下半年可以看到测试结果。Gbase 8A目前在国产OLAP数据库替代中应用中用户数量较多,是华为DWS的强劲对手。Gbase 8S/8T在金融行业有一定的客户群体,在电网调度系统中也有部分应用。
神舟通用是早期四大国产数据库厂商里最为神秘的一个,主要专注于其传统行业:航天、党政军和金审工程等,近些年才看到他们参与一些外部活动。神通Oscar也是基于PG源代码开发的一个 数据库产品,不过已经经过了魔改。
神通Oscar的参数已经与PG数据库之间有了较大的差异,说明其对内核的修改还是挺大的。
Oscar对PG做了魔改,进程架构上采用了单进程多线程架构,存储引擎也做了较大的修改,底层采用了和Oracle类似的表空间,数据文件的结构。REDO LOG虽然也采用了类似Oracle的可回绕文件结构,不过并没有采用多个REDO LOG,因此在WAL算法上与Oracle有较大的差异。Oscar的参数体系、监控视图也参考了Oracle数据库,与原生PG差异较大,在运维中不能按照原生PG的方式。神通数据库目前也加入了openGauss生态,除了Oscar外,也有基于openGauss的版本。
目前我们的D-SMART也已经完成了与神通Oscar的对接并在用户侧使用,不过我们对Oscar等神通数据库产品的了解并不多。在与使用他们产品的用户交流时,他们觉得用起来还可以,会遇到一些BUG,不过厂家的服务和响应还不错。
未完待续,系列预告:
国产数据库百态(2)分布式数据库篇
国产数据库百态(3)集中式数据库篇
国产数据库百态(4)openGauss生态产品篇
国产数据库百态(5)PostgreSQL生态产品篇
国产数据库百态(6)MySQL生态产品篇