暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

为什么关系型数据库PostgreSQL更适合金融行业?

恒生LIGHT 2022-03-09
2229


太白PROFILE

恒生研究院高级技术专家,Oracle ACE,著有《Oracle 高性能架构实战》,恒生 LightDB(基于开源 PostgreSQL)负责人。曾主导恒生开放式基金登记过户系统 5.0 产品架构设计与落地、恒生电子 AOP 1.0 研发管理,JRES3.0 中间件研发管理,以及多家金融资产交易所架构设计。在 Java、微服务、消息中间件、MySQL 等后端技术方面也有较深的研究和经验。


伴随着近日LightDB在中国信通院机房内通过全部稳定性测试项目,LightDB已是目前少数在2个月内一次性完成信创基础能力、性能、稳定性三项评测认证的中国分布式关系型数据库。
在墨天轮国产数据库排行榜中它位列第23名,成功超越一众国产数据库成为年度增长最快的数据库之一。
短期内实现多项进展的背后,值得讨论的行业话题恐怕就是“为什么关系型数据库PostgreSQL更适合金融行业?”。



关于PostgreSQL


PostgreSQL 最早起源于伯克利的POSTGRES项目。POSTGRES的实现始于1987年左右,之后经历了几个版本的迭代。官方曾自诩其为世界上最高级的开源关系型数据库,最新版本为PostgreSQL 14.1,大约每季度发布1个版本,PostgreSQL全球开发组负责发展规划和维护,从2010年开始常居DB-Engines数据库流行度排行榜第4,仅次于Oracle、MySQL、SQLServer三巨头,甚至高于MongoDB,流行度稳步增长。
2021年,PG成为年度数据库,其流行度已经进一步接近SQL、Server,成为TOP5中唯一增长且大幅增长的数据库。
PostgreSQL所有核心源码使用ANSIC编写,完全没有使用各种C++库以及GNU之外的库,这使得它非常透明,自动化代码覆盖率大于75%,对于高达120万行代码的系统来说,这样的覆盖率可以说是极高。
虽说当今数据库产品之间不断地互相学习、借鉴,特性差异在不断缩小,但由于早期架构和定位的不同,许多底层模型也不同,比如MySQL是线程模型,而POSTGRESQL是进程模型,这就导致在进程创建性能更弱的Windows上,PostgreSQL无法与MySQL相比。
反过来,PostgreSQL一开始就考虑支持完整的SQL,所以在SQL特性和事务支持上,相比MySQL要完整的多。
另外,虽然POSTGRESQL支持原生的JSON格式JSONB,让它能像MongoDB一样作为文档数据库使用,但MongoDB在创建的那一刻起,就为了其横向扩展性牺牲了ACID,这导致PostgreSQL无法像MongoDB一样方便地创建分片集群,这也是所有关系数据库与NoSQL数据库在特性上很大的区别之一。
全球范围内除去很多不那么知名的PostgreSQL发行版和技术支持服务商,最让PostgreSQL证明其开放和先进的案例是Greenplum在MPP领域的极大成功。


开源数据库选型评测


不同于首先考虑现有系统的SQL语法兼容性和先能用,为了最大程度的避免推倒重来的风险,恒生对PostgreSQL进行了全面深度预研,我们主要从稳定性、高可用、高性能、复杂SQL、内核易扩展性、运维支持几个角度进行评估。
笔者针对开源数据库(含MPP、内存数据库)之间的较深入正式选型评测起始于2015年,彼时属于国内去IOE和采用分库分表中间件的第一个高峰期。
金融行业的开源数据库测评一般主要关心的是MySQL及中间件在运营类系统中的表现,包括复杂SQL以及大表SQL的关联、分析函数方面的支持,以及中间件在聚合函数方面的支持情况。
如果有人问开发人员为什么使用MySQL,回答几乎都是上手简单,但运维和可靠性方面却被严重忽视了、即使可能是存疑。
不同于首先考虑现有系统的SQL语法兼容性和先能用,为了最大程度的避免推倒重来的风险,对PostgreSQL的全面深度预研,我们主要从稳定性、高可用、高性能、复杂SQL、内核易扩展性、运维支持几个角度进行评估。

稳定性

在评估数据库时,我们首先会考虑高负载下的稳定性,主要通过BenchmarkSQL客户端进行压测,单服务器(鲲鹏920,768GB内存,96核)在1000仓库、2000活跃客户端的情况下,仍然能够保持非常稳定,且tpmC达到33万(300活跃客户端时能够稳定在45万)。

单个连接异常不影响整个实例。因为PostgreSQL采用多进程架构,所以即使不小心“杀”掉一个客户端进程也不会导致整个PostgreSQL实例崩溃。

高可用

PostgreSQL有类似Oracle ADG 物理复制和逻辑复制的流复制,物理复制性能在低延时网络下几乎没有损耗,相比MySQL复制的重放机制,Postgresql在性能、稳定性、延时方面大大超出。在角色切换和故障自动切换管理方面也有较多的选择,主流的包括repmgr、Pacemaker、Patroni以及PAF。

从可用性级别来看,支持一主多从,同步成功的节点数量有多种配置方式,和Quorum机制非常类似但是能够更加灵活。

此外,部署结构支持级联流复制,可在备机下面再挂备机,降低了主库的负担,能在不使用同步复制的情况下支撑更大的写入量,非常适合生产数库同步给数据仓库或大数据。

高性能

因为数据库属于基础服务且在一个运行时实例下需要能够同时应对各种负载类型,所以对于高性能的预研进行了拆分。

首先是垂直扩展能力。PostgreSQL从2C/4GB的虚拟机到96C/1024GB的高配置服务器都能运行非常良好,单机能支持2000并发连接保持运行稳定,日常TPC-C普遍使用200-1000客户端进行性能回归测试,在PostgreSQL 14中对大量空连接如上万的场景进行了优化,非常适合于微服务架构。

其次是水平扩展能力。PostgreSQL本身不支持分布式,但得益于其可扩展性,有很多高可用扩展实现。在OLTP方面当前最成熟的实现是Citus,不少中国分布式数据库直接用Citus作为分布式数据库的协调层。在OLAP方面,由于Greenplum的巨大成功,自然扩展性不在话下,中国有不少几十、数百TB替换Teradata的金融生产案例。

复杂SQL表现

基于历史经验,对于PostgreSQL在复杂SQL性能方面的表现优于MySQL我们一点也不意外,实际测试也是如此。无论是在TPC-H和业务系统跑批测试中还是在OLTP中,PostgreSQL的表现均远优于MySQL。在100GB的TPC-H测试中,PostgreSQL执行完成的时长是MySQL的25%;在跑批清算中,PostgreSQL全流程完成的时间是MySQL的60%。

由于Oracle不是分布式数据库,得益于Greenplum的MPP架构,在TPC-H 1TB下,4台低配服务器组成的开源Greenplum性能高于一台等同高配服务器下Oracle性能的30%以上。

除了性能外,PostgreSQL在CTE、分区、索引、分析函数、序列、并行执行、匿名块、explain、存储过程等SQL特性方面也比Oracle MySQL强大很多。

对于开源PostgreSQL,我们认为相比MySQL唯一最大的遗憾是不支持优化器提示,即使是三方插件PostgreSQL_plan_hint也是非常弱,恒生LightDB对优化器提示模块进行重新实现,能和Oracle、MySQL一样支持在任何语句块中使用优化器提示,任何子查询和内嵌视图都能进行优化。

内核易拓展性

主要聚焦于数据库特性、执行引擎、MPP、分布式这几大方面在内核层面的扩展性。

PostgreSQL一直以来的学术化风格,使得其源代码组织非常清晰,精心设计的hook机制使其能无侵入式地扩展PostgreSQL内核,涵盖从认证、解析、优化、执行及PL/pgSQL编程等每个SQL执行可能经过的主要环境。

EDB、GPU扩展、优化器提示、中文全文检索甚至TimescaleDB、PostGIS引擎、Citus分布式数据库扩展等都是基于PostgreSQL的hook机制研发,足以可见PostgreSQL的扩展性。

PostgreSQL 12为表引入了抽象层访问方法,使得存储层和SQL层相互解耦,用户可以自行实现存储优化如列式存储、内存存储等。如下图:

此外,PostgreSQL的插件和扩展使得管理扩展功能可以作为一个整体进行管理,跟Dockerfile一样自包含。

因此,在扩展性方面PostgreSQL可以说相比任何开源数据库都有着无可比拟的优势。

运维支持

运维监控方面,可以使用开源的Promethous或Zabbix,恒生LightDB-EM除了LightDB外,也支持开源PostgreSQL。

在物理备份方面的选择有Barman、pg_probackup以及pgBackRest,能够支持远程备份、增量备份及基于时间点的恢复、集中备份,还提供加密和压缩特性等。

除了上述方面外,在接洽各类内外部用户需求的过程中,预研还包括了PostgreSQL在全文检索、作为强一致性可靠K/V使用时纯主键查询和修改性能表现等,经过优化后,整体来说其表现超越预期,甚至在很多点上强于Oracle。
因此,从性能、稳定性、可扩展性以及复杂SQL特性、运维支持方面来说,PostgreSQL更优于MySQL。


PostgreSQL生态及其全球采用情况


PostgreSQL在全球范围的生态很完善,涵盖范围从北美、日本、欧洲和澳洲,不仅各云厂商对PostgreSQL各种增强、RDS支持,还有很多的发行版和技术服务商、数据库管理平台。
其生态涵盖了MPP数据仓库、时序数据库、流数据库、分布式数据库、GPU计算、云数据库等,并且很多非云独立厂商都获得极大的成功而被大厂纳入麾下,如Citusdata被微软收购、pipelinedb被confuent收购,Greenplum被pivotal收购。
主流云原生监控软件Prometheus包含了PostgreSQL export,支持对各版本PostgreSQL开箱即用的监控,同时Prometheus还包含Adapter 支持将PostgreSQL作为Prometheus的时序数据存储。
除了商业领域外,很多高校都用PostgreSQL为原型做数据库工程的研究项目。
根据相关公开信息和调研分析,国内不少关系型数据库均是基于PostgreSQL二次开发而来,包括openGauss、PolarDB、Tbase、人大金仓、优炫、AntDB、OushuDB和SequoiaDB的SQL层等,大多数偏向事务型处理为主。中国信通院2021年数据库发展研究报告调查则显示,我国关系型数据库产品基于PostgreSQL和MySQL开源数据库的比例分别在45%左右,加起来非常接近60%。(注:GoldenDB从2018年开始,也开始新开发PostgreSQL版,AntDB MySQL也有意合并到AntDB PostgreSQL版。)
由此可见,数据库内核从业人员已经认同PostgreSQL各方面综合表现是不比MySQL差,如果排除纯粹的易上手和普及性原因,PostgreSQL在技术上的表现已经超过MySQL。


PostgreSQL在金融业的使用与选型


数据库作为IT产业最重要的基础软件之一,是支撑各类应用系统运行的主要支柱,然而在当前金融行业尤其是证券行业应用系统主要使用的是国外厂商提供的成熟商业数据库产品,如Oracle、DB2、SQLServer等,证券行业普遍面临国外商业数据库昂贵授权费用带来的成本问题。
随着微服务和云原生的快速发展,各传统行业开始对开源数据库感兴趣,金融行业也逐渐使用MySQL、PostgreSQL数据库构建部分应用系统,同时针对它们的适用场景进行了论证分析。
因为MySQL在中国互联网圈的广泛流行,大多数论证通常也从MySQL开始,但由于MySQL的一些技术局限性尤其是AP方面,进展并非顺畅,而PostgreSQL在金融行业的应用热度稳步提升。
很多关于PostgreSQL应用的案例分析,都无一例外地提到了其在OLAP和复杂业务方面的适用性。基于PostgreSQL,互联网行业有腾讯、阿里巴巴、高德地图、去哪儿网、苏宁云商、斯凯网络等科技公司在内部广泛使用,电信行业有亚信的AntDB。而金融行业使用最广泛、最全面的应该算是邮储银行和平安,TB级的数据集市中也广泛在各证券基金行业使用Greenplum。很多非互联网行业在系统集成中也内置PostgreSQL,像视频监控主要的厂商均有自己的PostgreSQL维护团队。
兴业证券在上交所2021年3月《交易技术前沿》第四十三期发布的文章《证券行业关于数据库信息技术应用创新工作的探索和思考》中,对开源和国产数据库进行了相关选型测试,表明MySQL数据库比较适用于OLTP场景,在开源方面选用PostgreSQL开始数据库信创工作的探索与实践。
虽然业界的使用情况已经表明PostgreSQL在技术上的表现已经超过MySQL,但它并没有像MySQL那样在国内互联网应用里如此流行。
这是因为在互联网发展最快的年头里,PostgreSQL显得过于重量,比如触发器、存储过程这些东西,简单的互联网应用用不上。直到今天,互联网圈仍然对存储过程、各种分析函数比较抵触,而在传统行业,开发者却很喜欢用。我们认为这是不同领域的业务需求不同所导致的。
早期(通常指的是9.5版本之前)PostgreSQL功能特性强大,性能却不如同时期的MySQL。彼时的MySQL非常轻量,没有InnoDB引擎作支撑,对事务、触发器、存储过程的支持都不好,但性能却甩开POSTGRESQL很大一截。在“快”重要性远高于“一致性”的互联网界,它被高频率选择是再自然不过的事。


任何东西被引入到新环境都需要经历适应阶段,或因为怀旧情绪,或因为工作惯性。
金融领域的开发人员已经习惯了基于Oracle进行开发,面对新的数据库产品不免会产生抗拒心理。企业要做好无缝切换,对开发者的影响降到最低,如发掘比较便利的工具和运维平台,或是给开发人员做一些培训等。也可以向社区或者供应商寻求资源和帮助,这样新产品的落地和后期的推广会更加顺畅。
恒生LightDB Enterprise Postgres始终坚持客户价值和开发效率第一,完全聚焦金融领域企业级分布式数据库,现已实现高度兼容Oracle与MySQL语法,未来继续进化满足更多金融需求
转载自《恒生世界》


往期推荐
恒生成功入选国家级区块链基础设施星火•链网骨干节点技术供应商
喜讯!LightDB完成分布式数据产品稳定性测试
扎根高性能,如何从无名之辈成长为技术大牛?
 

文章转载自恒生LIGHT,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论