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

关于PostgreSQL

开源数据库选型评测
稳定性
在评估数据库时,我们首先会考虑高负载下的稳定性,主要通过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生态及其全球采用情况
PostgreSQL在金融业的使用与选型






