PolarDB for PostgreSQL 开源必读手册-共享存储原理与实践(上)

本文涉及的产品
云原生数据库 PolarDB MySQL 版,通用型 2核8GB 50GB
云原生数据库 PolarDB PostgreSQL 版,标准版 2核4GB 50GB
简介: PolarDB for PostgreSQL 开源必读手册-

 

一、 整体介绍

 

image.png

 

传统RDS架构在高可用的实现上采用了主备复制的模式,通过Binlog逻辑复制保证高可用。该架构存在以下几个问题:

 

增加计算节点需要同步扩容存储,导致存储成本随着节点增加而上升。

扩展只读节点较麻烦,需要进行数据重建。在数据量较大的情况下,数据重建耗时较久,可能会影响HA的耗时。

 

image.png

 

不同于传统的主备复制,PolarDB采用共享存储架构,存储和计算分离,中间通过PolarFS分布式的文件系统和存储进行共享数据。

 

RW负责数据写入,主要流程为:RW调用文件系统的API,文件系统经过内部处理将数据写入到共享存储,数据的可靠性依赖于共享存储的多副本机制。因此在DB层面,无需关心多份数据的写入。因为天然存在多副本的机制,对于DB而言,只需写一份数据在共享存储。

 

共享存储中,所有节点可共享同一份数据,PolarFS分布式文件系统天然解决了一写多读场景下的数据一致性问题。该架构下存储和计算节点分离,计算节点的扩容和存储节点的扩容互相不耦合,均可单独进行扩容。并且因为共享一份数据,新增RO节点时,无需再进行数据重建,可以秒级拉起RO节点,存储层面也可独立扩容,无需扩容计算节点。

 

image.png

 

PolarFS文件系统是专门为DB设计的用户态文件系统,并且基于共享存储支持了一写多读的实现,向上提供兼容posix的接口。

 

写节点的数据写入流程如下:调用PolarFS创建目录,PolarFS将数据写入到共享存储。由于采用了共享存储的机制,数据已经存在于存储内,但是因为PolarFS层面本身也有文件系统的元数据,需要在RO节点上通过日志同步的方式进行感知。

 

以上设计的好处在于PolarFS提供posix兼容,DB无需再大刀阔斧地改造代码,可以以较小的代价实现分布式架构,并且天然地在共享存储架构下实现了高可用。比如新增RO或HA的场景下,相较主备复制,它无需进行数据拷贝,RTO可达到分钟级甚至秒级。

 

image.png

 

PolarFS和常见的文件系统类似,主要有以下几个元数据的概念。

 

Direntry:记录文件或目录的名字。

Inode:描述文件或目录的基本属性,比如inode类型、文件长度、atime/mtime/ctime等。

Blktag:描述该block所属的文件以及在文件中的位置,每个block都拥有一个对应的blktag。

 

比如上图,创建gcc文件并进行写入时,需要为其分配数据块空间,每个数据块默认大小为4M,需要分配大于4M的空间时,将多个block进行连接,达到索引链接的目的。

 

文件系统的目录输入采用了典型的树状结构。

 

image.png

 

文件系统中需要进行MakeFS的操作,目的为对文件系统的空间进行划分,将底层的共享存储块设备进行管理。

 

假设是40G的存储设备,PolarFS将按照实际的chunk对空间进行划分,划分出4个chunk的空间。每个chunk内部又划分了大小为4M的多个block。每个chunk的第0个block将作为superblock,用于记录文件系统的元数据信息,多为blktag、direntry以及inode。每一个4兆的superblock最多可以存储2048个direntry和inode,意味着每个chunk下可以创建2048个文件或目录。

 

除了superblock之外的所有的datablock用于存放文件的数据,共有2560个。blktag元数据会负责管理datablock,映射到datablock。

 

使用PolarFS文件系统时,首先会执行格式化,主要目的是将元数据在superblock内进行格式。

 

image.png

 

日志是文件系统中很重要的组成。文件系统对文件的修改往往涉及多个不同类型的元数据修改,如果修改不能原子性完成,则会造成数据的不一致或损坏。

 

PolarFS的日志除了保证事务提交的完整性,还有一个关键用途为通过一写多读同步数据。

 

文件系统内部有很多元数据需要进行管理,当RW节点对内部的元数据进行修改之后,如果要保证一致性,RO节点上也需要对元数据进行同样的修改,才能保证一致性。该能力通过Journal的设计实现。

 

Journal文件是固定大小的空间,其中head lsn为当前事务提交到的最新位点。因为日志是循环覆盖写的过程,如果日志提交后空间不够,需要做checkpoint操作,将日志trim到磁盘上,变更也将反映到磁盘的共享存储上。checkpoint操作可将位点不停地推进,将块空间进行释放,用于提交新的log。

 

RW提交元数据之后,RO要访问文件时,首先会读取最新位点。同时,RO内部本身会维护已有的事务位点,然后判断最新位点与已有事务位点的差距,比如最新位点为10,已有位点为5,则意味着中间有5个事务尚未同步。RO会将这5个数据进行同步,并进行内存回放。同步完以后,将RO本身的已有事务位点更新至10。

 

接下篇:https://developer.aliyun.com/article/1223072?groupCode=polardbforpg

相关实践学习
使用PolarDB和ECS搭建门户网站
本场景主要介绍基于PolarDB和ECS实现搭建门户网站。
阿里云数据库产品家族及特性
阿里云智能数据库产品团队一直致力于不断健全产品体系,提升产品性能,打磨产品功能,从而帮助客户实现更加极致的弹性能力、具备更强的扩展能力、并利用云设施进一步降低企业成本。以云原生+分布式为核心技术抓手,打造以自研的在线事务型(OLTP)数据库Polar DB和在线分析型(OLAP)数据库Analytic DB为代表的新一代企业级云原生数据库产品体系, 结合NoSQL数据库、数据库生态工具、云原生智能化数据库管控平台,为阿里巴巴经济体以及各个行业的企业客户和开发者提供从公共云到混合云再到私有云的完整解决方案,提供基于云基础设施进行数据从处理、到存储、再到计算与分析的一体化解决方案。本节课带你了解阿里云数据库产品家族及特性。
相关文章
|
1月前
|
关系型数据库 分布式数据库 PolarDB
PolarDB 开源基础教程系列 7.2 应用实践之 跨境电商场景
本文介绍了如何在跨境电商场景中快速判断商标或品牌侵权,避免因侵权带来的法律纠纷。通过创建品牌表并使用PostgreSQL的pg_trgm插件和GIN索引,实现了高性能的字符串相似匹配功能。与传统方法相比,PolarDB|PostgreSQL的方法不仅提升了上万倍的查询速度,还解决了传统方法难以处理的相似问题检索。具体实现步骤包括创建品牌表、插入随机品牌名、配置pg_trgm插件及索引,并设置相似度阈值进行高效查询。此外,文章还探讨了字符串相似度计算的原理及应用场景,提供了进一步优化和扩展的方向。
54 11
|
1月前
|
SQL 关系型数据库 分布式数据库
PolarDB 开源基础教程系列 7.5 应用实践之 TPCH性能优化
PolarDB在复杂查询、大数据量计算与分析场景的测试和优化实践.
74 7
|
1月前
|
搜索推荐 关系型数据库 分布式数据库
PolarDB 开源基础教程系列 7.3 应用实践之 精准营销场景
本文介绍了基于用户画像的精准营销技术,重点探讨了如何通过标签组合快速圈选目标人群。实验分为三部分: 1. **传统方法**:使用字符串存储标签并进行模糊查询,但性能较差,每次请求都需要扫描全表。 2. **实验1**:引入`pg_trgm`插件和GIN索引,显著提升了单个模糊查询条件的性能。 3. **实验2**:改用数组类型存储标签,并结合GIN索引加速包含查询,性能进一步提升。 4. **实验3**:利用`smlar`插件实现近似度过滤,支持按标签重合数量或比例筛选。
45 3
|
2月前
|
Cloud Native 关系型数据库 分布式数据库
让PolarDB更了解您--PolarDB云原生数据库核心功能体验馆
让PolarDB更了解您——PolarDB云原生数据库核心功能体验馆,由阿里云数据库产品事业部负责人宋震分享。内容涵盖PolarDB技术布局、开源进展及体验馆三大部分。技术布局包括云计算加速数据库演进、数据处理需求带来的变革、软硬协同优化等;开源部分介绍了兼容MySQL和PostgreSQL的两款产品;体验馆则通过实际操作让用户直观感受Serverless、无感切换、SQL2Map等功能。
130 7
|
1月前
|
人工智能 关系型数据库 分布式数据库
PolarDB 开源基础教程系列 7.4 应用实践之 AI大模型外脑
PolarDB向量数据库插件通过实现通义大模型AI的外脑,解决了通用大模型无法触达私有知识库和产生幻觉的问题。该插件允许用户将新发现的知识和未训练的私有知识分段并转换为向量,存储在向量数据库中,并创建索引以加速相似搜索。当用户提问时,系统将问题向量化并与数据库中的向量进行匹配,找到最相似的内容发送给大模型,从而提高回答的准确性和相关性。此外,PolarDB支持多种编程语言接口,如Python,使数据库具备内置AI能力,极大提升了数据处理和分析的效率。
76 4
|
2月前
|
运维 关系型数据库 分布式数据库
阿里云PolarDB:引领云原生数据库创新发展
阿里云PolarDB引领云原生数据库创新,2024云栖大会将分享其最新发展及在游戏行业的应用。PolarDB凭借弹性、高可用性、多写技术等优势,支持全球80多个站点,服务1万多家企业。特别是针对游戏行业,PolarDB助力Funplus等公司实现高效运维、成本优化和业务扩展。通过云原生能力,PolarDB推动游戏业务的全球化部署与快速响应,提升用户体验并保障数据安全。未来,PolarDB将继续探索AI、多云管理等前沿技术,为用户提供更智能的数据基础设施。
|
2月前
|
存储 SQL 缓存
PolarDB-X 在 ClickBench 数据集的优化实践
本文介绍了 PolarDB-X 在 ClickBench 数据集上的优化实践,PolarDB-X 通过增加优化器规则、优化执行器层面的 DISTINCT 和自适应两阶段 AGG、MPP 压缩等手段,显著提升了在 ClickBench 上的性能表现,达到了业内领先水平。
|
3月前
|
SQL 关系型数据库 分布式数据库
基于PolarDB的图分析:银行金融领域图分析实践
本文介绍了如何使用阿里云PolarDB PostgreSQL版及其图数据库引擎(兼容Apache AGE,A Graph Extension)进行图数据分析,特别针对金融交易欺诈检测场景。PolarDB PostgreSQL版支持图数据的高效处理和查询,包括Cypher查询语言的使用。文章详细描述了从数据准备、图结构创建到具体查询示例的过程,展示了如何通过图查询发现欺诈交易的关联关系,计算交易间的Jaccard相似度,从而进行欺诈预警。
基于PolarDB的图分析:银行金融领域图分析实践
|
3月前
|
SQL 人工智能 自然语言处理
PolarDB-PG AI最佳实践 1:基础能力实践
Polar_AI 是 PolarDB 数据库的 AI 扩展,集成了先进的人工智能模型和算法,使数据库能够执行机器学习和自然语言处理任务。它支持 PostgreSQL 及 Oracle 兼容版本,通过标准 SQL 轻松调用 AI 模型,具备简单易用、灵活可定制、无缝数据融合、数据安全和高性能等优势。用户可以通过 SQL 快速实现文本转向量、情感分类等功能,并能自定义扩展 AI 模型。
|
关系型数据库 分布式数据库 PolarDB
《阿里云产品手册2022-2023 版》——PolarDB for PostgreSQL
《阿里云产品手册2022-2023 版》——PolarDB for PostgreSQL
402 0

相关产品

  • 云原生数据库 PolarDB