PolarDB PG 版冷热数据分层功能介绍

本文涉及的产品
对象存储 OSS,20GB 3个月
对象存储 OSS,内容安全 1000次 1年
云原生数据库 PolarDB PostgreSQL 版,标准版 2核4GB 50GB
简介: 本文介绍了云原生数据库PolarDB PG版的冷热数据分层存储功能,涵盖其原理、特性及最佳实践。冷热分层存储通过将冷数据归档至OSS(对象存储服务),实现低成本高效存储,同时保持SQL操作透明性和性能优化。支持多种分层模式,如表与索引分层、大字段独立归档等,并提供压缩和缓存机制以提升访问速度。此外,还介绍了如何通过DDL语句轻松转存数据至OSS,以及一系列最佳实践,包括自动冷热分层、无锁表转存和一键转存等功能。

PolarDB PG 版冷热数据分层功能介绍

 

内容介绍:

一、冷热分层存储原理及特性

二、冷热分层存储支持模式的几种模式

三、冷存数据访问及数据压缩率

四、如何将数据转存OSS

五、分层存储最佳实践

 

本次分享的主题是在云原生数据库PolarDB PG上自研实现的冷热数据分层存储功能,由刘建伟分享。

 

一、冷热分层存储原理及特性

1.冷热分层的原理

左边是冷热分层的架构图。上面是PolarDB PG异写构图的架构。中间是共享存储也就是云盘,下面是OSS。数据从云盘写入OSS需要经过一层压缩。同时从OSS读出到共享存储有一个解压缩过程。冷热分层的功能可以用两句话概括。第一是PolarDB可以将OSS对象存储。直接作为一种存储介质。存储价格十分低廉。第二是可以与块存储联合使用。根据不同维度自动将冷热数据分层存储。既保持增删改查的SQL透明性。同时通过多级缓存保障性能的最少衰减。

图片2.png

2.分层存储的特性

(1)第一个特性是易用性比较好。

客户通常认为数据存入OSS之后没办法修改。只能读不能写。但在PolarDB 机上实现的冷热分层存储。没有OSS限制。也就是数据写入OSS之后表可以增删改查,索引是完全透明的。也支持join的联合操作查询。同时分层存储的索引透明。基表数据存储在OSS中。可以在此基础上建立索引。同时索引可以建在云盘上。也可以直接建在OSS上。

(2)第二个特性是灵活度比较高。

PolarDB PG实现的分层存储支持多种OSS分层的策略。最直接的是将OSS基表和索引分开,将基表归档。然后是将分区表归档。这是使用最常见的场景。将历史分区存入OSS进行归档。然后热分区依旧保留在云盘中。

(3)第三种是按大字段进行独立归档。

这是PolarDB PG独有的一个特性。比如有时候一张表里有JSON或者TEXT或者其他符合类型的字段。它比较占用空间。但它的访问量也比较低。访问频度频率比较低。可以将大字段独立的存储在OSS上。其他字段依旧保留在云盘中。第三个特性是性能上采用了三层缓存的设计。首先针对逻辑对象,一些特殊的对象有一层缓存。其次是页面的共享缓存。也就是我们的shared buffer。第三层是文件的缓存。也就是利用云盘实现对OSS的一层物化缓存。在做增删改读时。可以合并一些IO。减少对OSS的访问次数。就可以将OSS的读写延迟影响降到最低。

(4)第四个特性是覆盖的场景比较广泛。

除了通用的场景之外,在时空、时序数据的归档上都可以。例如时空轨迹,随着时间的增长轨迹,历史轨迹可以写入OSS。以及高精地图不更新的部分们也可以放到OSS。时序数据,历史分区也可以直接放到OSS进行归档,可以大幅降低成本。

(5)第五个特性是安全可靠。

由于实现的冷存是SQL透明的。增删改都可以操作。所以在数据的高可用上跟云盘对齐。它是利用copy online机制实现OSS的数据快照。如果有误删或者误改操作。也可以基于OSS快照快速恢复。同时冗余也降到最低。

图片3.png

 

二、冷热分层存储支持模式的几种模式

1.首先最普通的是数据冷归档模式。

就是无脑的将表索引以及物化视图等任何数据都扔到OSS中。

2.第二种是表与索引分层。

就是将基表的数据存储在OSS中。但是索引建立在云盘上。这样做点查或者索引扫描时能确保性能。

3.第三种是表内的大字段分层。

就是将某一个字段独立写入OSS,其他字段依旧存储在云盘。第四种是比较典型的分区表的分层,可以将过期的历史分区转存到OSS。热分区依旧存储在云盘上。如果查询和写入只达到热分区上。性能完全没有影响。

图片4.png

 

三、冷存数据访问加速及数据压缩率

由于OSS的访问延迟比较高。为了降低OSS延迟对数据的访问影响,做一层物化缓存。描述OSS物化缓存的一些机制。在默认情况下。会在云盘上开1GB的物化缓存,确保基础的数据写入的IO合并。如果对表的访问性能要求变高。可以通过Polar_smgrcache_size参数来调高缓存。访问性能也能得到加速。

图片5.png

接下来介绍数据压缩率。PolarDB分层存储将数据写入OSS。不是直接写进去,是会通过一层压缩。可以进一步降低在OSS上的存储空间。对于压缩率不同的类型表现不一样。像序列化的int类型,压缩效果最好。它的压缩率可以达到10%以内。也就是1GB的数据压完后不到100兆。其他通用类的integer、Double、text、timestamp数据的压缩率在十几%到三十几%。最多的是通用类型的多字段组合。压缩效果会有所降低。但也能达到30%到40%的压缩率。也就是1GB数据压完之后存到OSS上只有300到400兆。最后是空间几何类型的数据压缩。点类型压缩表现效果比较好。压缩率能达到20%到30%。对于线面数据。压缩效果稍微弱一些。只能达到60%到70%。这是数据在OSS上存储过程中的压缩率。

图片6.png

 

四、如何将数据转存OSS

只需要通过简单的DDL就可以将数据库中现有的数据存入OSS。首先将一张表或者是索引转存OSS。可以使用ALTER TABLE SET TABLESPACE OSS、ALTER INDEX SET TABLESPACE OSS、ALTER Materialized SET TABLESPACE OSS 将他们写入OSS。对于大字段独立转存OSS开发了一种新的DDL语句。就是alter table set,直接alter column时。设置storage type为OSS。在写入OSS数据时。如果大字段有数据写入,是直接写入到OSS。然后访问和增删改都是完全透明的。第三个是针对分区表的子分区转存。子分区跟普通的表是一样的。所以操作语句也是一样的。通过ALTER TABLE SET TABLESPACE OSS语句就可以实现。

图片7.png

 

五、冷数据分层存储最佳实践

第一个实践是分区表按时间线自动做冷热分层。分区表如果是按时间序列进行分区。那随着时间的推移。一段时间之前的数据就归为历史数据。历史分区就要自动的转存OSS。对于这种场景,在PolarDB PG里面可以通过pg_corn插件来配合实现按时间线自动冷存的功能。

第二个实践是大字段直接通过DDL语句将storage type设为OSS。

第三个实践是关于转冷存时锁表的问题。在执行表转OSS时,普通的操作会长时间锁住表,直到最后转完才会释放锁。PolarDB 有pg_repack插件。在此基础上实现不锁表直接可以转冷存的功能。

第四个实践是如何实现一键转冷存。当将表还有索引或者是分区表的很多个分区以及分区表上多个索引转存。如果一次一次做DDL操作会比较麻烦,所以提供一键转冷存的函数。就是可以直接调函数,将表以及表上的索引或者是分区表以及底下所有的分区表索引一次性转存到OSS中。

图片8.png

第五个实践是关于统计。怎么统计存储在OSS上数据的大小。提供一系列的统计函数。和5Pg的统计函数不一样。5Pg的函数只能统计在云盘上的存储空间。OSS部分需要通过独立的额外的函数进行统计。接下来是将冷存数据进行预热。通过polal_osfs_prewarm函数将冷存表进行预热。访问时就可以达到比较好的效果。最后是提高读写性能。如果想临时提高对一张表的访问性能。可以临时把polal_smgr_canche值在控制台上调大。当想降回来时再把它调小。期间调大调小是不需要重启数据库非常方便。

图片9.png

接下来打开官网的文档,最佳实践里面涉及很多函数可以直接到官网的自研内核能力,底下的冷数据分层存储最佳实践。里面提供辅助操作的具体函数。比如统计冷数据有专门的函数来进行统计。

图片10.png

 

以上为分享全部内容。

相关实践学习
使用PolarDB和ECS搭建门户网站
本场景主要介绍基于PolarDB和ECS实现搭建门户网站。
阿里云数据库产品家族及特性
阿里云智能数据库产品团队一直致力于不断健全产品体系,提升产品性能,打磨产品功能,从而帮助客户实现更加极致的弹性能力、具备更强的扩展能力、并利用云设施进一步降低企业成本。以云原生+分布式为核心技术抓手,打造以自研的在线事务型(OLTP)数据库Polar DB和在线分析型(OLAP)数据库Analytic DB为代表的新一代企业级云原生数据库产品体系, 结合NoSQL数据库、数据库生态工具、云原生智能化数据库管控平台,为阿里巴巴经济体以及各个行业的企业客户和开发者提供从公共云到混合云再到私有云的完整解决方案,提供基于云基础设施进行数据从处理、到存储、再到计算与分析的一体化解决方案。本节课带你了解阿里云数据库产品家族及特性。
目录
打赏
0
35
36
1
1028
分享
相关文章
PolarDB开源数据库进阶课17 集成数据湖功能
本文介绍了如何在PolarDB数据库中接入pg_duckdb、pg_mooncake插件以支持数据湖功能, 可以读写对象存储的远程数据, 支持csv, parquet等格式, 支持delta等框架, 并显著提升OLAP性能。
69 1
让PolarDB更了解您--PolarDB云原生数据库核心功能体验馆
让PolarDB更了解您——PolarDB云原生数据库核心功能体验馆,由阿里云数据库产品事业部负责人宋震分享。内容涵盖PolarDB技术布局、开源进展及体验馆三大部分。技术布局包括云计算加速数据库演进、数据处理需求带来的变革、软硬协同优化等;开源部分介绍了兼容MySQL和PostgreSQL的两款产品;体验馆则通过实际操作让用户直观感受Serverless、无感切换、SQL2Map等功能。
158 7
云栖重磅|从数据到智能:Data+AI驱动的云原生数据库
在9月20日2024云栖大会上,阿里云智能集团副总裁,数据库产品事业部负责人,ACM、CCF、IEEE会士(Fellow)李飞飞发表《从数据到智能:Data+AI驱动的云原生数据库》主题演讲。他表示,数据是生成式AI的核心资产,大模型时代的数据管理系统需具备多模处理和实时分析能力。阿里云瑶池将数据+AI全面融合,构建一站式多模数据管理平台,以数据驱动决策与创新,为用户提供像“搭积木”一样易用、好用、高可用的使用体验。
云栖重磅|从数据到智能:Data+AI驱动的云原生数据库
拥抱Data+AI|“全球第一”雅迪如何实现智能营销?DMS+PolarDB注入数据新活力
针对雅迪“云销通App”的需求与痛点,本文将介绍阿里云瑶池数据库DMS+PolarDB for AI提供的一站式Data+AI解决方案,助力销售人员高效用数,全面提升销售管理效率。
PolarDB开源数据库进阶课16 接入PostGIS全功能及应用举例
本文介绍了如何在PolarDB数据库中接入PostGIS插件全功能,实现地理空间数据处理。此外,文章还提供了使用PostGIS生成泰森多边形(Voronoi diagram)的具体示例,帮助用户理解其应用场景及操作方法。
49 1
PolarDB 开源基础教程系列 7.1 快速构建“海量逼真”数据
本文介绍了如何使用PostgreSQL和PolarDB快速生成“海量且逼真”的测试数据,以满足不同业务场景的需求。传统数据库测试依赖标准套件(如TPC-C、TPC-H),难以生成符合特定业务特征的复杂数据。通过自定义函数(如`gen_random_int`、`gen_random_string`等)、SRF函数(如`generate_series`)和pgbench工具,可以高效生成大规模、高仿真度的数据,并进行压力测试。文中还提供了多个示例代码展示.
57 7
阿里云PolarDB重磅发布云原生与Data+AI新特性,打造智能时代数据引擎
阿里云PolarDB重磅发布云原生与Data+AI新特性,打造智能时代数据引擎
PolarDB开源数据库进阶课11 激活容灾(Standby)节点
本文介绍了如何激活PolarDB容灾(Standby)节点,实验环境依赖于Docker容器中用loop设备模拟共享存储。通过`pg_ctl promote`命令可以将Standby节点提升为主节点,使其能够接收读写请求。激活后,原Standby节点不能再成为PolarDB集群的Standby节点。建议删除对应的复制槽位以避免WAL文件堆积。相关操作和配置请参考系列文章及视频教程。
45 1
PolarDB开源数据库进阶课15 集成DeepSeek等大模型
本文介绍了如何在PolarDB数据库中接入私有化大模型服务,以实现多种应用场景。实验环境依赖于Docker容器中的loop设备模拟共享存储,具体搭建方法可参考相关系列文章。文中详细描述了部署ollama服务、编译并安装http和openai插件的过程,并通过示例展示了如何使用这些插件调用大模型API进行文本分析和情感分类等任务。此外,还探讨了如何设计表结构及触发器函数自动处理客户反馈数据,以及生成满足需求的SQL查询语句。最后对比了不同模型的回答效果,展示了deepseek-r1模型的优势。
113 0
PolarDB开源数据库进阶课14 纯享单机版
PolarDB不仅支持基于“共享存储+多计算节点”的集群版,还提供类似开源PostgreSQL的单机版。单机版部署简单,适合大多数应用场景,并可直接使用PostgreSQL生态插件。通过Docker容器、Git克隆代码、编译软件等步骤,即可完成PolarDB单机版的安装与配置。具体操作包括启动容器、进入容器、克隆代码、编译软件、初始化实例、配置参数及启动数据库。此外,还有多个相关教程和视频链接供参考,帮助用户更好地理解和使用PolarDB单机版。
59 0