前 言
PostgreSQL被誉为最先进的开源数据库。今年9月,官方发布PostgreSQL 16.0,在性能、逻辑复制、开发者体验、监控、权限&安全等方面进行了改进和优化。阿里云RDS PostgreSQL已支持PostgreSQL 16.0,同时,AliPG在社区版16.0的基础上,在安全、成本、可运维性等多个方面做了提升,新增了多种内核/插件特性,用以满足用户特定业务场景的需求。
详情可查阅阿里云数据库RDS PostgreSQL对社区PostgreSQL各大版本的生命周期说明
官方发布的PostgreSQL 16.0在性能、逻辑复制、开发者体验、监控、权限&安全等方面进行了改进和优化。例如,在性能方面,通过改进buffer管理机制,提升了使用COPY命令批量加载数据的效率;通过改进vacuum策略,减少了full-table freezes的频率。在逻辑复制方面,社区16.0支持订阅端能够并行应用大事务;支持使用binary format来加快初始表同步。在开发者体验方面,添加了更多的SQL/JSON语法,改进了对文本排序的支持。在监控方面,新增pg_stat_io视图提供IO统计信息;通过记录传递到参数化语句中的值增强auto_explain可读性。在权限&安全方面,提供了更细粒度的权限控制,和更灵活的安全配置等。
但是作为商业化的数据库产品,针对特定用户场景的业务需求,社区版PostgreSQL 16.0在安全、成本、可运维性等方面仍有可提升空间;阿里云数据库RDS PostgreSQL版的自研内核AliPG在社区16.0基础上,在这些方面(安全、成本、可运维性)提供了不少自研能力。
安全方面
针对数据加密(如备份恢复、查询和分析、存储)场景或有特殊安全合规要求的场景,AliPG提供表级别的透明数据加密(TDE)功能,对数据文件进行实时加密和解密,保护用户数据隐私。透明数据加密功能通过在数据库层执行静态数据加密,阻止可能的攻击者绕过数据库直接从存储读取敏感信息的情况发生。所有加密解密操作均在内存中进行,内存中的数据是明文,磁盘中的数据是密文,这可以避免用户业务场景中因磁盘被盗而产生的数据泄露问题;同时,对用户而言,这个功能全程无感知,用户无需改变使用数据库的方式,0适配成本。
成本方面
AliPG提供表空间级别的透明页压缩TPC(Transparent Page Compression)功能,用以减少用户业务中对存储空间的使用,同时提高数据库的读性能。TPC主要是对Buffer Pool中的页执行实时的I/O压缩和解压缩,数据在写入磁盘时自动压缩,数据在从磁盘读取时自动解压缩。通过压缩数据,可以有效降低磁盘I/O,减少存储,提高缓存效率,加快数据传输速度。经过线上环境测试,开启TPC功能后,存储成本平均可节约50%,IO使用平均可节约50%,在读场景TPS会有提高,部分读场景最高可提升100%。
运维体验方面
针对类似SaaS等具有大量长连接的业务场景,AliPG提供缓存淘汰功能,通过LRU(Least Recently Used)的策略释放不常使用的缓存,从而降低连接的内存使用量,解决了原生PG长连接占用内存过多的问题。针对高并发、防止恶意攻击、控制资源使用等场景,AliPG提供SQL限流功能,通过限制某一类SQL的最大并发量,确保数据库不会因突发流量或资源消耗过高的SQL语句而引起严重的性能问题。
同时,AliPG还集成了众多自研和三方插件,为用户提供丰富的扩展功能(详细可见RDS PostgreSQL支持的插件列表),例如:
1. Ganos时空引擎(自研)
PostgreSQL Ganos时空引擎提供一系列的数据类型、函数和存储过程,从而,用户可以在阿里云RDS PostgreSQL中对空间/时空数据进行高效的存储、索引、查询和分析计算。
2. 全密态数据库(自研)
用户可以对数据库表中的敏感数据列进行加密,这些列中的敏感数据将以密文进行传输、计算和存储。全密态数据库可以解决用户不同应用场景下的数据安全问题,如平台安全运维、敏感数据合规、多源数据融合等场景。
3. index_adviser索引推荐(自研)
索引推荐(index_adviser)可以帮助用户确定应该对哪些列编制索引,以提高指定工作负载中的性能。
4. oss_fdw读写外部数据文本文件(自研)
支持将OSS中的数据加载到RDS PostgreSQL数据库中,也支持将RDS PostgreSQL数据库中的数据写入OSS中。
5. pgbouncer轻量级连接池(三方开源)
用于优化数据库连接的性能和资源利用率。当应用程序需要与PostgreSQL数据库建立连接时,它可以通过连接池复用现有的数据库连接,避免了频繁地创建和销毁连接产生的性能开销。这种连接复用可以显著减少数据库服务器的负载,提高应用程序的响应速度和并发性能。适用于短连接较多,频繁创建和销毁连接的场景。
6. pg_jieba中文分词插件(三方开源基础上加入自研功能)
用于中文的全文搜索,支持自定义词库。
7. pgvector向量插件(三方开源)
pgvector插件,能够存储向量类型数据,并实现向量相似度匹配,为AI产品提供底层数据支持。