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

开源云原生数据库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.xdnf.cn/news/1524110.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

Java 入门指南:Java 并发编程 —— Java 线程池详解

线程池 线程池(ThreadPool)是一种用于管理和复用线程的机制,它可以预先创建一批线程,并维护一个线程队列,用于执行提交的任务。 线程池的主要目的是提高多线程应用程序的性能和效率,通过重用已创建的线程…

【陪诊系统-H5客户端】订单状态进度条

似乎~客户端相对来说,要简单一点,就挑几个其中感兴趣的记录一下 订单状态进度条是根据当前订单的状态动态改变,这里的动态改变实际上是利用后端返回的状态数据,给标签添加不同的class属性来实现。进度条样式其实是两个圆角矩形框…

ABAP正则表达式 特殊字符处理

REPLACE ALL OCCURRENCES OF REGEX [[:space:]] IN <fs_purhdinfo>-cell_value WITH ."可去掉空格或回车键 REPLACE ALL OCCURRENCES OF &#xff1a; IN <fs_purhdinfo>-cell_value WITH ."可去掉空格或回车键 REPLACE ALL OCCURRENCES OF R…

AI绘画SD中如何安装/更新/卸载 Stable Diffusion WebUI 插件?SD新手必看的保姆级教程!

大家好&#xff0c;我是画画的小强 最近有一部分朋友对如何在AI绘画StableDiffusion中 安装管理 WebUI 插件十分陌生&#xff0c;不知道如何下手。 今天就系统地为大家介绍一下 WebUI 插件安装、更新、卸载的相关知识&#xff0c;让初学者能快速掌握插件的使用方法&#xff0c…

iomuxc、pinctrl子系统、gpio子系统(学习总结)

iomuxc、pinctrl子系统、gpio子系统三者的关系 相互依赖&#xff1a;IOMUXC、pinctrl子系统和gpio子系统在功能上相互依赖。IOMUXC提供了引脚复用和电气属性的配置能力&#xff0c;pinctrl子系统负责从设备树中获取这些配置信息并完成初始化&#xff0c;而gpio子系统则在引脚被…

C++中protobuffer的具体使用方法以及重要原理的实现

一、protobuffer的具体使用 对于基本的知识可以看我之前的文章。 那一片文章主要是知识点&#xff0c;这一片是实战。 1、头部 我们通过syntax 这个来指定版本号&#xff0c;如果不写的话就会默认为proto2&#xff0c;2这个版本是一个比较旧的版本。旧的版本写起来就比较繁琐。…

25届计算机毕业设计,如何打造Java SpringBoot+Vue博客系统,一步一脚印,开发心得分享

✍✍计算机编程指导师 ⭐⭐个人介绍&#xff1a;自己非常喜欢研究技术问题&#xff01;专业做Java、Python、微信小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。 ⛽⛽实战项目&#xff1a;有源码或者技术上的问题欢迎在评论区一起讨论交流&#xff01; ⚡⚡ Java实战 |…

Spring源码-从源码层面讲解声明式事务配置文件的加载和相关对象的创建1(创建对向,属性填充,动态代理均有涉及)

tx.xml事务配置文件的解析 <?xml version"1.0" encoding"UTF-8"?> <beans xmlns"http://www.springframework.org/schema/beans"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xmlns:context"http://www.spr…

项目实战 - 贪吃蛇

目录 1. 基本功能 2. 技术要点 3. 环境 4. 效果演示 5. 控制台设置 6. Win32 API介绍 6.1 Win32 API 6.2 程序台控制(Console) 6.3 控制台屏幕上的坐标(COORD) 6.4 GetStdHandle 6.5 GetConsoleCursorInfo 6.5.1 CONSOLE_CURSOR_INFO 6.6 SetConsoleCursorInfo 6…

Android终端如何快速接入GB28181平台实现实时音视频回传

技术背景 GB28181是由中国国家标准委员会发布的基于IP网络的安防视频监控标准。Android平台GB28181设备对接模块&#xff0c;主要涉及到视频监控领域&#xff0c;可实现不具备国标音视频能力的 Android终端&#xff0c;通过平台注册接入到现有的GB/T28181—2016服务&#xff0…

数据结构——单链表查询、逆序、排序

1、思维导图 2、查、改、删算法 //快慢排序法找中间值 int mid_link(Link_t *plink) {Link_Node_t *pfast plink->phead;Link_Node_t *pslow pfast;int m 0;while(pfast ! NULL){pfast pfast->pnext;m;if(m % 2 0){pslow pslow->pnext;}}printf("%d\n&quo…

WPF-快速构建统计表、图表并认识相关框架

一、使用ScottPlot.Wpf 官网地址&#xff1a;https://scottplot.net/quickstart/wpf/ 1、添加NuGet包&#xff1a;ScottPlot.Wpf 2、XAML映射命名空间&#xff1a; xmlns:ScottPlot"clr-namespace:ScottPlot.WPF;assemblyScottPlot.WPF" 3、简单示例&#xff1a;…

刘润《关键跃升》读书笔记6

把教练传授内容的知识含量分成五个级别&#xff1a;⽩⽔级、啤酒级、⻩酒 级、红酒级和⽩酒级&#xff08;⻅图3-4&#xff09; 第⼀个层级是⽩⽔级&#xff08;0&#xff09;。教练在传授的时候&#xff0c;什么都没有教&#xff0c;只 会训⼈。 ⼆个层级是啤酒级&#xff08…

LaTeX各符号表示方式(持续更新~)

- "\mu"&#xff1a;穆 miu - "\sigma"&#xff1a;西格玛xigema - "\lambda"&#xff1a;兰姆达或拉姆达lamuda - "\alpha"&#xff1a;阿尔法aerfa - "\beta"&#xff1a;贝塔beita - "\gamma"&#xff1a;伽马…

比特币客户端和API

1. 比特比客户端的安装 Bitcoin Core 客户端适用于从 x86 Windows 到 ARM Linux 的不同架构和平台&#xff0c;如下图所示&#xff1a; 2. Bitcoin Core客户端的类型 2.1 Bitcoind Bitcoind 末尾的字母 d 表示 daemon (守护程序&#xff09;。所谓守护程序&#xff0c;就是指…

deep-live-cam实时换中文整合包下载,双击exe直接运行

windows环境整合包下载地址&#xff1a; 点击下载 直接解压&#xff0c;双击启动.exe即可使用 硬件要求&#xff1a;有英伟达显卡&#xff0c;且要支持CUDA 硬件不符合要求也不用急&#xff0c;软件也有对应mac版本和windows非N卡版本&#xff0c;我还没做成整合包&#xff0c;…

【python因果推断库6】使用 pymc 模型的工具变量建模 (IV)1

目录 使用 pymc 模型的工具变量建模 (IV) 使用 pymc 模型的工具变量建模 (IV) 这份笔记展示了一个使用工具变量模型&#xff08;Instrumental Variable, IV&#xff09;的例子。我们将会遵循 Acemoglu, Johnson 和 Robinson (2001) 的一个案例研究&#xff0c;该研究尝试解开…

大屏可视化:阿里 DataV 大屏怎么做自适应的?

你好&#xff0c;我是沐爸&#xff0c;欢迎点赞、收藏、评论和关注。 阿里 DataV 大屏是一款功能强大的数据可视化应用搭建工具&#xff0c;由阿里云提供&#xff0c;旨在帮助用户通过图形化的界面轻松搭建专业水准的可视化应用。 下面我们一起看下 DataV 大屏 是如何做自适应…

Leetcode 第 408 场周赛题解

Leetcode 第 408 场周赛题解 Leetcode 第 408 场周赛题解题目1&#xff1a;3232. 判断是否可以赢得数字游戏思路代码复杂度分析 题目2&#xff1a;3233. 统计不是特殊数字的数字数量思路代码复杂度分析 题目3&#xff1a;3234. 统计 1 显著的字符串的数量思路代码复杂度分析 题…

矮草坪渲染尝试

本来说写unity里的&#xff0c;由于three测试方便&#xff0c;先试试three 这个图片是目标效果 可以看见草很矮&#xff0c;很密集&#xff0c;如果用instance来绘制的话&#xff0c;遭不住的 忽然发现这个效果很像绒毛效果 于是找了博客康康 https://zhuanlan.zhihu.com/p/256…