开源云原生数据库PolarDB PostgreSQL 15兼容版本正式发布

news/2024/9/17 1:34:43/ 标签: 数据库, 开源, 云原生

开源云原生数据库PolarDB PostgreSQL 15兼容版正式发布上线,该版本100%兼容开源PostgreSQL 15。PolarDB是阿里云自研云原生关系型数据库,基于共享存储的存算分离架构使其具备灵活弹性和高性价比的特性,在开源PostgreSQL很好的性能表现的基础上极大增强了可扩展性和弹性。

PolarDB for PostgreSQL 架构

PolarDB采用云原生架构,相较于传统架构,其两大突破性改革为:存储计算分离、基于共享存储的一写多读。存储计算分离架构解决了传统架构的2大弊端:单机存储容量限制和弹性升降配需要迁移数据。得益于共享存储的设计,存储成本大幅降低的同时,减少多副本复制延迟和回放成本,从而可以进行高效的读能力扩展。PolarDB架构如下图所示:

PolarDB云原生架构具有以下优势:

  • 高扩展性:支持一写多读,最高可扩展到16个计算节点(1写15读),存储计算分离,分钟级加减节点;

  • 高可用性:毫秒级延迟,秒级切换,支持跨AZ高可用;

  • 更低成本:多个计算节点共享一份数据,大幅降低存储成本;

  • 混合负载:支持多节点并行查询,随着计算资源的增加,性能可以线性提升,相较于单机平均加速23倍,可以支持HTAP混合负载。

PolarDB进行了深度的内核优化,从而实现以更低的成本提供商业数据库的性能。主要技术包括:自研的分布式文件系统支持共享存储,日志索引LogIndex技术加速只读节点回放,Online Promote技术实现秒级切换,Persistant BufferPool、Direct IO等实现共享存储架构下的数据一致性和低复制延迟。同时PolarDB进行了深入的性能优化,例如优化 SIMD 指令集和原子操作指令集的使用,在事务处理等模块中加速高并发场景性能,支持批量读取、扩展数据页面,优化 IO 性能,并进行了深入的参数调优,提供了极致性能。此外,在首个发布版本中还支持GBK/GB18030 字符集,以及以下插件:hll、hypopg、log_fdw、pase、pg_bigm、pg_cron、pg_jieba、pg_repack、pg_similarity、pgtap、pgvector、pldebugger、prefix、roaringbitmap、rum、varbitx、zhparser。

PostgreSQL 15关键提升

相较于之前版本,PostgreSQL 15版本发布侧重于性能提升,在管理本地和分布式部署中的工作负载方面成效显著,对逻辑复制进行了多项改进,提高了排序性能。该版本增强了 SQL 功能,引入了MERGE命令;大幅改进了逻辑复制功能,例如支持复制 2PC 事务,发布内容可以使用 WHERE 进行过滤,一次性发布 schema 下所有的表;优化了数据库性能,例如更快的内存排序和基于磁盘的排序,内存占用降低,崩溃恢复加速等。

PostgreSQL核心组成员Jonathan Katz表示:“PostgreSQL开发者社区持续构建那些改善开发人员体验,并简化那些支持高性能数据工作负载的功能, PostgreSQL 15 展示了如何通过开放式软件开发,为我们的用户提供一个非常适合应用程序开发并保证其关键数据安全的数据库。”

PostgreSQL 是一个创新的数据管理系统,以其可靠性和健壮性著称,得益于全球开发者社区 超过25年的开源开发,它已成为各种规模组织首选的开源关系型数据库

排序及压缩性能提升

在这个最新版本中,PostgreSQL 改进了其内存和磁盘排序 算法,基准测试显示,在对不同数据类型的排序时,速度可提高25%到400%不等 。使用 row_number()rank()dense_rank() 和 count() 作为窗口函数 在 PostgreSQL 15 中也有性能上的优化。使用 SELECT DISTINCT 的查询现在可以并行执行 。

基于之前PostgreSQL版本 的异步远程查询功能,PostgreSQL外部数据包装器 ,postgres_fdw ,现在可支持异步提交 。

PostgreSQL 15 的性能改进也扩展到了归档和备份工具。 PostgreSQL 15 增加了对 预写日志(WAL) 文件 LZ4和Zstandard (zstd)的压缩支持,这可以在一定的工作负载下获得空间和性能上的改进。在一些操作系统上,PostgreSQL 15 增加了对WAL页面的预载支持 以帮助加快恢复时间。 PostgreSQL内置备份命令pg_basebackup ,现在支持服务器端的备份文件压缩,可以选择gzip、LZ4和zstd格式。 PostgreSQL 15 包含了使用自定义模块进行归档 的能力,从而减少了使用 shell 命令的开销。

开发人员特色功能

PostgreSQL 15 包含 SQL 标准的 MERGE 命令。MERGE允许用户编写包含 INSERTUPDATEDELETE操作的SQL语句。

最新版本增加了使用正则表达式的新函数 来检查字符串: regexp_count()regexp_instr()regexp_like(),和 regexp_substr()。 PostgreSQL 15还扩展了 range_agg 函数来聚合上一个版本 引入的 multirange 数据类型 。

PostgreSQL 15 允许用户使用访客权限而不是视图创建者权限创建视图 。这个选项被称为 security_invoker,它增加了一层额外的保护,以确保视图调用者使用正确权限处理底层数据。

更多逻辑复制选项

PostgreSQL 15 为管理逻辑复制 提供了更多的灵活性。这个版本为Publishers引入了行筛选和数据列列表 来允许用户选择从表中复制数据的子集。PostgreSQL 15 增加了一些功能来简化冲突管理 ,包括跳过重新执行冲突事务的能力,以及在检测到错误时自动停止订阅的能力。该版本还支持在逻辑复制中使用两阶段提交(2PC)。

日志和配置增强

PostgreSQL 15 引入了一种新的日志格式:jsonlog 。 这种新格式使用JSON结构输出日志数据,这允许在结构化日志系统中处理PostgreSQL日志。

该版本在管理PostgreSQL配置方面为数据库管理员提供了更大的灵活性,增加了授予用户更改服务器级配置参数的权限的能力。此外,用户现在可以使用psql 命令行工具中的\dconfig命令搜索有关配置的信息。

其他值得关注的改动

PostgreSQL服务器级的统计数据现在收集到共享内存,去除了统计收集进程以及定期将这些数据写入磁盘的过程。

PostgreSQL 15 使ICU 排序 作为集群或单个数据库的默认排序规则成为可能。

该版本还增加了一个新的内置扩展pg_walinspect ,它允许用户直接从SQL接口检查预写日志文件的内容。

PostgreSQL 15 还允许除数据库所有者之外,从 public (或default)模式的数据库中 撤销所有用户的CREATE权限 。

PostgreSQL 15 删除了长期被弃用的“独占备份”模式,也删除了PL/Python中对Python 2的支持。

关于社区的详细发布信息,请参考社区公告:PostgreSQL: Documentation: 15: E.9. Release 15

升级指导

在PolarDB PostgreSQL 14 版本升级到PostgreSQL 15 版本的过程中,大部分的数据类型、内置函数、表列和对象都没有发生显著变化,大多数变化属于细节改进。通过逻辑复制等方式可以实现接近100%的兼容性,而具体的变化细节如下所示。

类型

禁止零长度Unicode 标识符,例如U&""。

防止数字文本有非数字结尾的字符,例如 123abc 会被解析为 123。

调整JSON数字文本处理方式,以匹配SQL / JSON标准。现在可以接受 1.和.1 输入了,同时不接受非数字结尾,例如1.type()。

当interval输入的单位分数值大于月份时,四舍五入到最接近的月份,例如 1.99 year 转换到 2years,而非过去的 1 year 11 months。

提高interval与尾随句点解析的一致性。

"char":更改非 ASCII 字符的输入输出格式,将会以八进制展示。

函数与表达式

array_to_tsvector():如果传入一个空字符串数组元素,将会产生错误。

chr():当提供负参数时,将会产生错误。

将输出类型为 interval 的函数标记为 stable,而非 immutable,因为它依赖于IntervalStyle。

检查调整时间间隔函数中的整数溢出,这会影响justify_interval(), justify_hours(), and justify_days()函数。

改进计算算法random():即使种子值相同,这也会导致random()的结果与之前版本的结果不同。

查询优化

将hash_mem_multiplier默认值增加到 2.0,这会导致查询哈希操作比其他操作使用更多的 work_mem 内存。

防止CREATE OR REPLACE VIEW改变输出列的排序规则。

权限

删除登录角色的对自身默认的 ADMIN OPTION 权限。过去登录角色可以添加/删除其自身角色的成员,即使没有ADMIN OPTION 权限。

允许逻辑复制作为订阅的所有者运行 。

阻止对订阅所有者没有 SELECT 权限的表进行逻辑复制操作 (UPDATE DELETE)。

其他

删除排他备份及相关函数。

删除对 python2 的支持。

删除 xml_is_well_formed 函数。

libpq的PQsendQuery()函数不再支持管道模式,可能会导致部分应用程序或者驱动不兼容。

删除过时的 DB 参数 stats_temp_directory。

当EXPLAIN引用会话临时对象的 schema 时,将其称为pg_temp,过去 schema 名称也会被包含在内。

了解更多

开源云原生数据库PolarDB社区:PolarDB_云原生数据库_自研数据库_数据库-阿里云

PolarDB for PostgreSQL开源代码仓库:https://github.com/ApsaraDB/PolarDB-for-PostgreSQL

云原生数据库 PolarDB PostgreSQL 商业版:云原生数据库 PolarDB PostgreSQL 版_PostgreSQL_Oracle_数据库-阿里云


http://www.ppmy.cn/news/1521793.html

相关文章

Matlab 并联双振子声子晶体梁结构带隙特性研究

参考文献:吴旭东,左曙光,倪天心,等.并联双振子声子晶体梁结构带隙特性研究[J].振动工程学报,2017,30(01):79-85. 为使声子晶体结构实现范围更宽的多带隙特性,基于单振子型声子晶体结构弯曲振动带隙频率范围窄的局 限,提出了一种双侧振子布置…

监理工程师职业资格考试

根据住房城乡建设部、交通运输部、水利部、人力资源社会保障部关于印发《监理工程师职业资格制度规定》《监理工程师职业资格考试实施办法》(建人规〔2020〕3号)文件精神,监理工程师职业资格考试实行全国统一大纲、统一命题、统一组织。 一、…

TikTok直播为什么要用独立IP

TikTok直播作为一种受欢迎的社交媒体形式,吸引了越来越多的用户和内容创作者。在进行TikTok直播时,选择使用独立IP地址是一种被广泛推荐的做法。本文将探讨为什么在TikTok直播中更推荐使用独立IP,并解释其优势和应用。 独立IP是指一个唯一的互…

Linux是如何收发网络包的

Linux网 络协议栈 从上述⽹络协议栈,可以看出: 收发流程 ⽹卡是计算机⾥的⼀个硬件,专⻔负责接收和发送⽹络包,当⽹卡接收到⼀个⽹络包后,会通过 DMA 技术,将⽹络包放⼊到 Ring Buffer ,这个是…

Identifying User Goals from UI Trajectories论文学习

通过UI轨迹识别用户的需求。 这篇论文同样聚焦于UI agent,只是思路比较特别。他们想要通过训练agent通过用户的行为轨迹反推出他们想要干什么的能力来锻炼agent识别,理解,使用UI的能力。同时这个训练项目本身也有一定的实际意义,…

RISC-V单片机智能落地扇方案

在众多产品中,智能落地扇产品凭借其出色的性能和质量优势,备受消费者青睐。智能落地扇有着卓越的性能和智能化的操作。 RAMSUN提供的智能落地扇方案主控单片机芯片采用RISC-V微处理器,内置高速存储器,最高工作频率可达144MHz&…

Mac基本使用记录

快捷键 将窗口拆分为两个面板Command-D关闭拆分面板Shift-Command-D 打开任务管理器 基本操作 在 Mac 上使用桌面叠放 - 官方 Apple 支持 (中国) commandc 复制 commandv 粘贴 聚焦 快捷键 commandspace 可以用于搜索文件,应用和网页等内容。 也…

TOMCAT实验

TOMCAT 一、TOMCAT功能介绍 1.1 安装TOMCAT 配置Java环境 [roottomcat1 ~]# yum install java-1.8.0-openjdk.x86_64 -y [roottomcat2 ~]# dnf install java-1.8.0-openjdk.x86_64 -yJava环境被存放在 /etc/alternatives/目录下 [roottomcat1 ~]# ls /etc/alternatives/…

软件测试 - 性能测试 (概念)(并发数、吞吐量、响应时间、TPS、QPS、基准测试、并发测试、负载测试、压力测试、稳定性测试)

一、性能测试 目标:能够对个人编写的项目进行接口的性能测试。 一般是功能测试完成之后,最后做性能测试。性能测试是一个很大的范围,在学习过程中很难直观感受到性能。 以购物软件为例: 1)购物过程中⻚⾯突然⽆法打开…

Java项目: 基于SpringBoot+mysql+mybatis校园管理系统(含源码+数据库+答辩PPT+毕业论文)

一、项目简介 本项目是一套基于SpringBootmysql校园管理系统 包含:项目源码、数据库脚本等,该项目附带全部源码可作为毕设使用。 项目都经过严格调试,eclipse或者idea 确保可以运行! 该系统功能完善、界面美观、操作简单、功能齐…

visual studio 2022更新以后,之前的有些工程编译出错,升级到Visual studio Enterprise 2022 Preview解决

系列文章目录 文章目录 系列文章目录前言一、解决方法 前言 今天遇到一个问题:visual studio 2022升级成预览版以后,之前的有些工程编译出错。首先代码、项目设置都没有改变,只是更新了visual studio 2022。 在编译工程时,编译器…

【HTTP、Web常用协议等等】前端八股文面试题

HTTP、Web常用协议等等 更新日志 2024年9月5日 —— 什么情况下会导致浏览器内存泄漏? 文章目录 HTTP、Web常用协议等等更新日志1. 网络请求的状态码有哪些?1)1xx 信息性状态码2)2xx 成功状态码3)3xx 重定向状态码4&…

2024国赛数学建模评价类算法解析,2024国赛数学建模C题思路模型代码解析

2024国赛数学建模评价类算法解析,2024国赛数学建模C题思路模型代码解析:9.5开赛后第一时间更新,更新见文末名片 1 层次分析法 基本思想 是定性与定量相结合的多准则决策、评价方法。将决策的有关元素分解成目标层、准则层和方案层&#xff…

UDP通信实现

目录 前言 一、基础知识 1、跨主机传输 1、字节序 2、主机字节序和网络字节序 3、IP转换 2、套接字 3、什么是UDP通信 二、如何实现UDP通信 1、socket():创建套接字 2、bind():绑定套接字 3、sendto():发送指定套接字文件数据 4、recvfrom():接收指定地址信息的数据 三…

2024.9.6

1> 手写unique_ptr智能指针 #include <iostream> //#include <memory> using namespace std; //unique_ptr<AA> p0(new AA("西施"));// 分配内存并初始化。 template <typename T> class unique_ptr { public:explicit unique_ptr(T p) …

当天审稿,当天上线,9月检索!

各领域CNKI知网普刊&#xff0c;最快一期预计下周送检&#xff0c;最快1天上线 领域广&#xff0c;计算机&#xff0c;社科&#xff0c;医学等各个方向都能收 包检索&#xff0c;可提供期刊部发票 知名出版社英文普刊 NO.1、Food Science and Nutrition Studies ISSN: 2573…

Linux——redis主从复制、哨兵模式

一、redis 的安全加固&#xff1a; 对redis数据库访问的角度 auth // 验证登录redis 数据库的用户acl // 设置redis用户的权限将配置完成的ACL策略写入配置文件 config rewrite //目前redis生效的配置全部写入到默认配置文件的尾部写入到acl文件中&#xff0c;在加载配置文件时…

开源通用验证码识别OCR —— DdddOcr 源码赏析(二)

文章目录 前言DdddOcr分类识别调用识别功能classification 函数源码classification 函数源码解读1. 分类功能不支持目标检测2. 转换为Image对象3. 根据模型配置调整图片尺寸和色彩模式4. 图像数据转换为浮点数据并归一化5. 图像数据预处理6. 运行模型&#xff0c;返回预测结果 …

DWPD指标:为何不再适用于大容量SSD?

固态硬盘&#xff08;Solid State Drives, SSD&#xff09;作为计算机行业中最具革命性的技术之一&#xff0c;凭借其更快的读写速度、增强的耐用性和能效&#xff0c;已经成为大多数用户的首选存储方案。然而&#xff0c;如同任何其他技术一样&#xff0c;SSD也面临自身的挑战…

C++ 栈的使用

在 C++ 中,栈(Stack)是一种后进先出(LIFO,Last In First Out)的数据结构,表示最后插入的元素最先被移除。C++ 提供了 STL(Standard Template Library)中的 std::stack 容器适配器来方便使用栈。 std::stack 的使用 std::stack 是一个容器适配器,它默认使用 std::de…