解密AISWare AntDB为何选择基于PostgreSQL研发

2022-04-08 00:00:00 数据库 产品 技术 开源 协议
姜明俊 亚信科技数据库技术创新实验室总监,专注研究方向为分布式数据库技术和系统架构,深入掌握PostgreSQL内核原理和使用。现为中国开源推进联盟PostgreSQL分会专家组成员、PostgreSQL中国社区核心组常委。

1. 摘要

一直以来都有人问我们,为啥要选择基于PostgreSQL进行产品研发,PostgreSQL相比MySQL在中国的用户群体还比较小,研发出来的产品客户会购买吗?为啥不选择MySQL进行研发呢?今天就把咱们团队过去在技术选型上的所思所想通过这篇文章分享给大家。

2. 背景介绍

 

图1:国际主流通用关系型数据库家谱图
  从这张图可以看出,IBM的System R系统是关系型数据库的鼻祖,1973Ingres吸收了System R的一系列文档在Michael Stonebraker和Eugene Wong的带领下诞生,随后在1982年的时候Ingres就闭源了,开始走上商业化道路,发展出了几个的数据库产品比如Infomix、SyBase、SQL Server。PostgreSQL 真正诞生于二十世纪八十年代,它沿用了 Ingres很多的思想。到了1995年,两位华人把 PostgreSQL的SQL引擎改掉之后完成金蝉脱壳,正式社区化,PostgreSQL从此诞生了。经过近30年的持续开发和验证PostgreSQL 在数据库领域已经赢得了良好的声誉。目前被大家公认为世界上先进开源数据库。尤其是近些年,社区明显加快了迭代的速度,每年发布一个大版本,新的release版本已经是PostgreSQL11。正在研发的12版本也会在今年的秋季完成release和用户见面。
从图中也可以反馈出一点PostgreSQL和Oracle一样从诞生以来一直保持着根正苗红的发展。

3. 独特优势

1) 保持独立性
PostgreSQL和Linux一样是纯社区类的开源产品,已经发展了近30年,背后不受任何一家商业公司或某一个国家独立完整控制,主要贡献者来自日本、美国、德国、法国、奥地利、瑞典、英国、俄罗斯等全球各地的企业和个人。其中主要企业有CitusData、VMware、EnterpriseDB、Pivotal、NTT Group、Fujitsu、Google、WAS、IBM、Zalando、Yandex等共24家公司占比63%,个人贡献者占比37%。和MySQL的发展完全受到Oracle控制不一样。自主可控需要保持技术的独立性。

                图2:PostgreSQL社区的主要贡献者
 
2) 开源许可
PostgreSQL使用的是类BSD的开源协议,用户使用没有任何法律风险,可以随意分发、闭源和开源。PostgreSQL社区特别声明了对用户的使用“免费,可以自由的修改,自由的分发,无任何限制的使用。”特别适合上市公司或准备海外拓展的公司进行合规性检查。和MySQL使用的GPL协议完全不一样,GPL协议是一种传染性协议,基于MySQL修改的代码必须强制开源并且不能作为闭源的商业软件发布和销售。因此BSD协议是对商业集成很友好的协议,很多公司在选用开源产品的时候都BSD协议,因为可以根据市场策略完全随意的控制这些第三方的代码。可能很多同学会问为啥AIiSQL或TXSQL也是基于MySQL内核的改造版本可以在阿里云和腾讯云上进行申请使用呢,不是不能作为闭源的商业软件进行发布和销售的吗?请注意在云上售卖的号称是服务而不是产品,从而利用了当前协议的不严谨造成的漏洞,所以近来也看到很多开源社区修改License,比如Redis、MongoDB等,防止云公司只吸血不贡献。
用一棵树来形容三个主流协议之间的关系就是Apache协议像枝叶可以不断的分叉,GPL协议是树干,不允许分叉保证血统,而BSD协议就像树根可以自由随意的生长。

 
开源协议的选择主要考虑著作权,商标权和专利权。所有开源协议均要求代码附开源协议许可证和版权声明,区别主要在于是否可以闭源销售,是否可以保留专利,是否可以保留商标权。三种开源协议之间的主要区别如下:
表1:三种开源协议对比
 

GPL v3
Apache v2
BSD v3
作为闭源商业软件发布与销售
是否放弃专利
是否可以使用商标
 AISWare AntDB开源协议使用的是Apache V2协议,既可以吸引软件厂家参与,又可以避免专利问题。
 
3)发展势头
PostgreSQL在17,18年连续两年获得DB-Engines年度数据库奖项,近又获得了2019年O’Reilly的终身成就奖,从下图DB-Engines的统计数据看,PostgreSQL的受欢迎程度一直保持着持续的增长,社区也保持着每年一个大版本迭代的速度如期和大家见面。
 

图3:PostgreSQL和MySQL相比的增长曲线
 
或许大家又会有另一个问题既然PostgreSQL那么好,为啥互联网公司都大量使用MySQL呢?我认为有如下三个方面的原因:
(1)受经典的LAMP(Linux+Apache+MySQL+PHP)轻量级建站系统架构的影响,我记得上大学期间,在图书馆或书店购买的技术书籍中的实践案例基本都是以MySQL作为例子参考。工作后,面对数据库的技术选型,用熟不用生,在满足业务需要的情况下,就会优先采用MySQL。
(2)互联网业务指数级爆发式增长后,传统的商业数据库已经难以支撑,面临着成本和技术的巨大挑战,去IOE成为一种新的选择,而互联网的业务特别强调业务连续性保障,否则就拿一分钟的宕机可能引起的客户体验差造成金钱和用户量的损失都是难以估量的,当时MySQL具备主从复制的特性可满足故障切换提供业务连续性能力,而PostgreSQL主从复制的特性从2010年才添加进来,而到了2010年整个第二波互联网浪潮都快接近尾部了。自然PostgreSQL错过了和互联网联姻的大好机会。
(3)一件事情的两面性,MySQL背后有商业公司的支持,技术上的宣传和推广要相比纯社区的方式会有更多的资金支持去快速的通过论坛,技术分享等等方式快速建立起自己的技术生态,通过不断的教化加上很多客户的信息渠道来源本身有限,大量的用户会被这种模式吸引到其生态中。这个背后可能忽略了一个逻辑,通过商业手段快速聚集起来的客户群体,其背后不一定有其对等实力的产品。一切都要回归到商业的本质上,是否足够的稳定、好用、高效,功能特性是否丰富,PostgreSQL就是在这样的情况下,经过多年的验证和近几年快速的迭代、不断的补齐过去的短板,直到真正的满足企业级的特性要求,成为一款先进的开源数据库系统。PostgreSQL走到这一步完全靠的是其强大的产品能力获得用户的青睐。
 
4) 丰富的产品生态
基于PostgreSQL内核衍生出的产品变种有很多,比如流式数据库PipelineDB(被Kafka收购);地理信息数据库PostGIS;时序数据库TimeScale;MPP分析型数据库Greenplum;图数据库AgensGraph事务和分析融合的数据库AISWare AntDB、CitusDB(被微软收购); SQL On Hadoop数据库有Vertica、BIGSQL(被AWS收购)等,从这些丰富的产品生态中可以看出两点:
(1)PostgreSQL的license确实足够的开放。
(2)PostgreSQL的内核API开放型做的非常好,不光是一个先进的数据库系统更是一个强大的数据处理编程平台。所以我认为学好PostgreSQL内核会有非常大的优势,通过PostgreSQL简化技术栈统一掉数据处理平台,降低运维的复杂度和各种技术的集成和学习成本。特别是面向未来市场需要的轻量级细分领域的大数据处理系统。
就是因为PostgreSQL有其丰富的产品生态,我认为相比MySQL会更有优势,因为未来的分析是流式的实时计算,分析的时效性是需要融合进数据库,插入到各个业务流程中的,这就要求存放数据的数据库本身必须具备OLTP和OLAP融合处理能力,避免数据在事务和分析两个异构数据源之间搬迁,影响数据处理的时效性和准确性。而PostgreSQL在OLAP和OLTP甚至在HATP领域都已经有了成熟的产品,相比MySQL只有OLTP类的产品。能占点HTAP边的也仅仅使用了MySQL的协议而已,并不是基于MySQL的代码进行开发。所以即使目前MySQL的使用很广泛,但局限性也已经显现。从信通院的《第八批大数据产品能力评测观察》报告中显示MPP分析型数据库中有57%的产品都是基于PostgreSQL生态进行二次定制开发。这个比例一定也会随着大家对PostgreSQL内核的逐步掌握,越来越高。
表2:PostgreSQL和MySQL生态对比
数据库种类
PostgreSQL生态
MySQL生态
图数据库
AgensGraph
流式数据库
PipelineDB
时空数据库
PostGIS
时序数据库
PipelineDB
SQL On Hadoop
Vertica、BIGSQL
MPP分析型数据库
Greenplum等
事务和分析融合原生分布式数据库
AISWare AntDB、CitusDB等
 
在MySQL的生态中还没有一款真正的融合了事务和实时分析于一体的的原生分布式数据库产品,市场上所见到的基本还是通过Proxy实现的数据库分布式部署架构的产品,简称为“伪”分布式数据库。真正的原生分布式数据库和基于代理的数据库分布式部署架构的区别在于:(1)对SQL的完整性支持,是否无裁剪,比如跨分片的聚合、JOIN;存储过程,外键、视图等是否完整支持。(2)分布式事务ACID的四个特性是否完美支持,特别是4个事务隔离级别是否全部支持等,能否与传统Oracle、DB2等的ACID特性保持一致。因为对于大部分公司来说,数据是核心资产,联机交易不能丢弃数据的安全性和一致性,而采用终一致性的措施。
 
5) 超强的软硬平台兼容性
PotgreSQL和芯片、操作系统等底层软硬件生态具备很强的友好型,比如支持ARM,Power、x86、IA64、MIPS、Alpha、S/390x、Sparc 64等CPU架构,支持的操作系统有Linux、Windows、FreeBSD、OpenBSD、NetBSD、Mac OS X、AIX、HP/UX、IRIX、Solaris、Tru64 Unix and UnixWare。
 

4. 所思所做

信息化和工业化逐步深度融合,为构建自主可控的现代新产业体系提供了极为有利的土壤,亚信科技创新引领,质量为本,从提出产业互联网伟大构想开始就深刻意识到深度掌握基础软件是产业发展之基。
只有通过科学理性的规划和判断,阅读大量的资料,看清事情的本质,才能帮助客户选择合适的技术做出好的产品,我们经过深入的调研和综合的分析,AISWare AntDB没有选择基于MySQL而是选择站在巨人的肩膀PostgreSQL内核上进行研发,充分的吸收PostgreSQL全球开源技术新的研发成果并在此基础上进行技术创新,一方面可以把稳定的产品快速的带给客户;另一方面降低研发和学习使用成本。我们受益于开源社区,但我们也有充分的技术自信,通过开源把我们的技术和产品也回馈给社区帮助客户更好的了解和使用AISWare AntDB产品和数据库技术,一起推动PostgreSQL生态的繁荣。AISWare AntDB团队是一支有实力的PostgreSQL内核特种兵团队,它是一把剑,我们就是那个舞剑的人。
 

图4:AntDB+产品特性
我们除了可以提供给客户专业的AISWare AntDB数据库产品和服务外,我们还有AntDB+,基于对内核深度的掌握能力,我们可以帮助我们的客户提供插件形式基于业务场景完成代码级内核的优化,更好的赋能业务的发展。各种技术搭积木的模式在纷繁复杂的数据处理技术面前已经变的越来越难以支撑,带来的直接问题就是开发成本和学习成本变高,产品的稳定性下降难以维护。我们认为轻量级、低延迟实时分析的能力应该Integrated into在数据库中,通过AntDB+针对特定的细分领域比如物联网、车联网、智能家居、边缘计算等应用场景输出精简、高性能的一套数据计算存储组件,用PostgreSQL的开放性多模态能力统一掉时序、空间、流式、Translytical等结构化数据开发运维的技术栈,降低客户的学习和运维成本是未来可实践的方向。


相关文章