标题 | 国产数据库发展之路 |
范文 | 苗健 中国作为一个信息化大国,拥有自主可控的关系型数据库产品非常必要。与此同时,我们的国产数据库经过20多年的发展,目前的现状依然是:完全自主开发的产品至今为止还“不堪重用”,还未能进入市场与研发的良性循环,也未能缩短与国际先进水平的差距;至于源代码引进,2015年,引进Informix源代码的道路,如今亦已成为死路;云計算数据库平台方面,互联网、云计算公司推出的数据库产品,不能承担起传统领域Oracle替代品的角色。 那么,国产数据库到底应该怎样发展呢?我们需要从市场上的客户对国产数据库到底存在哪些疑虑谈起。目前,国内客户对于国产数据库存在的疑虑主要有:技术先进性—总感觉国产数据库还不够先进;产品稳定性—产品的稳定性需要广泛的应用的磨炼;市场案例—对于自研产品来说,同样是死结;支持服务保障—这一点是唯一有可能做的;未来发展持续性—这需要公司实力来支撑,而且要有强大的科研力量。如何在短时间内消除客户的疑虑,我们把目光投向了开源软件。 开源软件是国产数据库发展的可行之路 而今,开源软件已经得到广泛应用,这其中也包括开源数据库软件。在技术的先进性上,开源数据库软件虽然比起商业产品,还存在一定的差距,但这个差距已经不妨碍开源软件在市场上的接受度以及应用的领域;在产品稳定性上,与小规模商业软件不同,开源软件业已得到市场的广泛应用,其产品的稳定性得到了市场应用的磨炼;在应用案例上,开源软件的应用案例甚至多过大部分商业软件;在服务上,开源软件的服务完全取决于对产品的掌握和服务的体系和意识;在发展的持续性上,开源软件来源于开源社区。 我们可以看到,开源的数据库软件其市场的接受度、应用的广泛性,远大于传统的国产数据库。那么国产数据库的发展为什么不借助开源的数据库产品呢?借助开源产品可以直接获得源代码,免去重复“发明轮子”的工作,把有限的时间、精力、资金用在最需要解决的问题上。从2009年开始,国内就有公司组织力量开始研究PostgreSQL的源代码,力图为国内的数据库客户提供一个基于开源数据库软件的新选择。 PostgreSQL适合作为国产数据库发展的基础 市场上知名的开源数据库有几个,但哪一个适合作为国产数据库发展的基础呢? 从影响力与普及度方面考虑 有一个网站叫DB-Engines(https://db-engines.com/en/ranking),它通过收集互联网上的信息,对各个数据库产品的普及度和“人气”进行排名,每个月更新(如图1)。我们可以看到,2018年2月的最新排名,前四位是:Oracle、MySQL、Microsoft SQL Server、PostgreSQL。第五位是文档数据库MongoDB,而著名的IBM DB2排在第六位。我们注意到,PostgreSQL如今排在第四位。而前三位中,只有MySQL属于开源数据库,剩下的就是Oracle和MS SQL Server了。PostgreSQL的排名说明了它拥有大量的用户与案例,除了北美,PostgreSQL在日本和俄罗斯拥有非常广泛的应用。 我们没有采用MySQL的源代码作为国产数据库的起点,主要有两个原因。 第一,MySQL虽然是目前应用最广泛、普及度最高的开源数据库,但MySQL的技术架构和产品功能与PostgreSQL相比是存在差距的。PostgreSQL相对而言是一个全功能的专业数据库产品,而且MySQL社区如今已被Oracle掌控,它的发展多少会受到Oracle的影响,MySQL与Oracle商业产品之间会永远保持一个明显的差别。这样,以MySQL源代码为基础发展国产数据库产品,无法承担起取代Oracle数据库的使命。 第二,MySQL虽然是开源产品,但MySQL的开源协议是GPLv2。这不是一个“活雷锋”的协议,它要求在该源代码基础上开发的产品也必须开源。因此,在MySQL源代码上发展国产数据库,在知识产权法律条款上是行不通的。所以,我们选择了市场普及度第一,适合作为国产数据库基础的开源数据库平台—PostgreSQL。 从产品的血统与开源政策分析 谈到PostgreSQL,就不能不提加州大学伯克利分校。加州大学伯克利分校是当今数据库领域产品技术与人才的摇篮。早在20世纪80年代末90年代初,加州大学伯克利的服务器(当时还是ftp服务器或者是BBS)上就放满了各种数据库相关的软件,很多都是研究生的习作(它们有些直接提供源代码,有些则不提供源代码,但可以自由使用,称之为share ware),其中的一些技术和想法后来都出现在著名的商业数据库软件中。 PostgreSQL是数据库大师、加州大学伯克利的Michael Stonebraker教授(因其对数据库领域做出的杰出贡献,在2014年荣获图灵奖)带领他的研究生们从1986年开始研发的关系型数据库项目。后来,因为出售了之前的Ingres数据库产品,他们把学校里的这个数据库项目在1995年前后命名为PostgreSQL,其含义是Ingres的后来者。 Michael Stonebraker在数据库业界有非常大的影响力,著名的Sybase数据库代码就出自他的学生Robert Epstein博士。Sybase于1984年成立,1988年与微软合作,将Sybase SQL Server代码提供给微软。直到今天,微软SQL Server在业界依然名列前茅。 20世纪90年代初,Michael Stonebraker提出了对象关系数据库理论,率先将面向对象的概念融入传统的关系数据库中,为此他成立了一家公司叫Illustra。1995年,Illustra被Informix收购,Michael Stonebraker由此担任Informix CTO,从此开创了通用数据库(Universal Database)的时代。除了Informix UDB 9.0,IBM的DB2在1995年也进行了重大的改写,并改名为DB2 UDB,同样在扩展性上吸取了Michael Stonebraker的对象关系数据库理论。 PostgreSQL是Michael Stonebraker教授与他的研发团队在传统关系数据库时代的理想化身。他们把他们认为的关系数据库所应有的系统架构、访问方法、优化策略、功能与理念、通用性和扩展能力都在PostgreSQL的代码中加以实现,整个产品具有相当高的技术水准。可以说,PostgreSQL代碼本身,就是一部关系数据库的教科书。 PostgreSQL除了是一个拥有纯正技术血统的平台,更重要的是,它是目前几乎唯一的一个BSD协议的开源产品。当年,Michael Stonebraker的团队将PostgreSQL作为开源提供的时候,就是基于一种技术分享的理念。它不限制任何人直接采用这些源代码去做工作,也不限制人们直接采用它去进行商业的活动。 正因如此,20多年来有很多成功的商业化产品,它们是基于PostgreSQL源代码发展起来的。第一,Netezza,2001年在PostgreSQL基础上,采用了FPGA辅助数据的扫描过滤,推出一款数据仓库一体机。2010年被IBM收购,成为今天IBM数据分析的重要平台。第二,Greenplum,2003年基于PostgreSQL发展起来,开发出MPP架构的数据仓库平台,今天成为数据仓库领域中重要的一款产品。第三,ParAccel公司同样采用PostgreSQL构建了MPP架构,在2013年加入了AWS。如今,它就是AWS数据仓库云服务的后台—RedShift。 从功能与技术特性上分析 PostgreSQL是一个功能全面的数据库产品。在分布式关系数据库发展的历史中,所有重要的功能,PostgreSQL不可能没有,因为很多功能和想法原本就出自加州大学伯克利。PostgreSQL的功能非常全(与Oracle比肩,超过绝大部分同类产品)。如果参与今天国内的各类数据库产品招标,在常规功能的对标中,PostgreSQL是不会吃亏的。 PostgreSQL的代码和设计,具有典型的加州大学伯克利风格,也就是任何功能都力图通用化,很少会固定死某个功能,而是尽量留给用户自行定义和扩展的机会。因此,在PostgreSQL上进行扩展和创新远比其它的平台更为便捷与可靠。 国产数据库持续发展、换道超车 国产数据库的发展必然经历引进、吸收、掌握、创新的过程。我们目前正处于吸收和掌握阶段。但是,我们看到创新的机会就在不远的将来。 今天的数据库软件要面对的系统环境与前些年相比已经有了很大的变化。今天,系统的主流是x86架构的PC服务器+Linux操作系统+虚拟化+云服务。在系统架构层,基本实现了国产化。数据库软件要面对的系统是多路、多核CPU+大内存,存储是NVRAM+闪存+软件定义存储,通信环境是Infiniband与IPoIB+RDMA。 这样,在多服务器的群集系统设计,数据库基础访问方法等方面会有新的实现思路。在这里,NVRAM的发展将更加引人注目。这是一种介于内存与闪存之间的新型半导体存储介质,能够在断电时保持存储的信息,但访问速度又高于闪存一个数量级。在NVRAM价格普及的那一天,将对传统的数据库软件产生巨大的影响。 数据库发展到今天,数据库软件中大量的代码和运行时间是在与磁盘I/O作斗争:大量的数据预读到内存作为缓冲,查询优化器拼命找寻能够使用索引或者减少磁盘访问的策略。闪存和SSD的推出,大幅度提升了随机I/O的速度,但还没能动摇数据库软件的整体架构。 但是,一旦NVRAM普及,很多事情就有可能改变。大量的数据扫描,甚至可以直接在基础数据存储上进行,而不必另行缓冲。这样的改变,即便是Oracle,都需要重新改写代码、调整结构。这对于大家都是一个改变。这就是我们所说的“换道超车”的机会。 这种机会,很可能在未来的一两年就发生。作为国产数据库,我们做好准备了吗?要做这样的准备,就需要在今天充分掌握基础代码。对于各个技术创新点,进行各种探索与试验。 同时,对开源社区技术发展的洞察与把握是非常重要的,它能够保证我们的数据库国产化道路不会偏离业界技术发展的主流,避免出现技术二次落后的风险。我们国内有一个大型的企业,前几年也决定采用PostgreSQL。他们内部的技术实力很强,也打算在源代码层面上做一些创新的工作。他们发现PostgreSQL在查询并行处理上存在不足,便投入了大量人力、物力自研一套并行查询处理的模块。当这个模块还没做好的时候,他们发现社区中的新版本已经拥有了更为强大的并行处理能力,而他们自己的设计相比之下就显得粗糙。这样,之前的投入都白费了。因此与国际社区的密切联络,是避免此类事情的最好办法。 国产数据库的竞争对手 今天,国内的数据库市场,企业级商业软件市场Oracle一家独大,整体态势如图2所示。国产数据库的客户来源有三个方面。 第一,现有的Oracle用户。这些用户中,如果有希望能够摆脱对于Oracle独家依赖的(原因可能来自多个方面,从成本、服务、版权、安全等),国产数据库就是一个很好的选择,这也是国产数据库最主要的任务和使命。 第二,目前未购买正版Oracle的用户。因为成本的关系,国产数据库同样是他们最好的选择之一,我们将给出合理的、有竞争力的价格,让客户用上高效、可靠的数据库产品。 第三,使用开源数据库的用户。对于这些客户来说,国产数据库可以作为开源软件的一个升级,我们将在产品的企业级应用功能上、高可用性、性能、安全性、可管理性等方面提供商业软件才有的功能与服务。 因此,我们的竞争对手不是MySQL,同样也不是现有的各类国产数据库。如果说我们要有一个竞争对手,这个竞争对手就是Oracle。其实,对于Oracle,我们不是简单的竞争。我们的目的与使命是提供给广大中国数据库用户一个新的出路,一个可以摆脱Oracle的出路,一个既能摆脱Oracle,同时又不需要在技术先进性、产品可靠性上做出让步的出路,甚至是一个能够在各方面获得超越的出路。 |
随便看 |
|
科学优质学术资源、百科知识分享平台,免费提供知识科普、生活经验分享、中外学术论文、各类范文、学术文献、教学资料、学术期刊、会议、报纸、杂志、工具书等各类资源检索、在线阅读和软件app下载服务。