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

news2024/12/22 19:24:24

开源云原生数据库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.coloradmin.cn/o/2103649.html

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

相关文章

AI绘画界的赛博佛祖,开源最强SD3它来了!(整合包)

前言 全网期待已久的SD3终于和大家见面了。这款以Stable Diffusion为基础,进一步优化和升级的模型,无疑将会深刻地又又又一次改变AI绘画界! 这次发布的是Medium版本,在多个方面展现出惊人的能力和效率,堪称开源最强&…

多线程篇(可见性 原子性 有序性(有序性))(持续更新迭代)

目录 一、指令重排序(并发编程之美) 二、指令重排序(百度) 1. 为什么需要指令重排序 2. 什么是指令重排序 3. 指令重排序分类 3.1. 编译器优化重排序 3.2. 指令级并行的重排序 3.3. 内存系统的重排 4. 指令重排序规范 4…

【AI工作流】未来的我将何去何从?亲身感受!

在这个瞬息万变的科技时代,人工智能(AI)已经成为推动各行各业变革的核心动力。随着AI技术的不断进步,工作流程的智能化正在悄然改变我们的生活和工作方式。那么,未来的我将何去何从?这是一个值得深思的问题…

揭秘!焦虑症背后的隐形推手:气血不足,你了解多少?

在这个快节奏、高压力的时代,焦虑症似乎成了许多人心头挥之不去的阴霾。失眠、心悸、易怒、持续担忧……这些症状不仅影响着我们的生活质量,更在无形中侵蚀着我们的身心健康。然而,你是否知道,这些看似心理层面的困扰,…

springboot高校实验室教学管理系统的设计和实现

基于springbootvue高校实验室教学管理系统的设计和实现(源码L文ppt)4-045 4 系统总体设计 此次高校实验室教学管理系统通过springboot框架。springboot适合快速构建Web应用。springboot将B/S设计模式中的视图分成了View模块和Template模块两部分,将动态的逻辑处理…

如何获取本地时区名称:JavaScript 实用技巧

如何获取本地时区名称:JavaScript 实用技巧 在现代 web 开发中,处理日期和时间是一个常见的需求。尤其是在涉及到用户的本地时间时,正确获取时区信息显得尤为重要。在这篇博客中,我们将探讨如何使用 JavaScript 获取本地时区名称…

数学基础(四)

一、特征值与特征向量 特征空间: 特征向量的应用: 特征值表达了重要程度且和特征向量所对应,那么特征值大的就是主要信息了,基于这点我们可以提供各种有价值的信息。 二、SVD矩阵分解 基变换: 特征值分解&#xff…

红黑树的插入 C++

红黑树与二叉搜索树类似 它在每个节点增加了一个存储位记录节点的颜色,可以是RED,也可以是BLACK;通过任意一条从根到叶子简单路径上颜色的约束,红黑树保证最长路径不超过最短路径的二倍,因而近似平衡(最短路径就是全黑…

zlib压缩解压文件

zlib_utils.h #pragma once#include <Windows.h> #include <tchar.h>// 压缩文件 BOOL CompressFile(LPCTSTR lpSrcFileName, // 输入文件LPCTSTR lpDestFileName // 输出文件 );// 解压缩文件 BOOL UncompressFile(LPCTSTR lp…

在BrowserStack上进行自动化爬虫测试的终极指南

一、背景介绍 随着互联网的快速发展&#xff0c;数据变得越来越宝贵&#xff0c;爬虫技术已成为从网页中提取信息的重要工具。然而&#xff0c;在不同的环境中测试和运行爬虫脚本可能会带来挑战。尤其是在多浏览器、多平台的环境中确保爬虫的稳定性和兼容性是一个令人头疼的问…

GB/T28181和JT1078哪个更先进?

上篇blog我们探讨到GB/T28181规范和JT1078区别和各自应用场景&#xff0c;如果非要比较GB/T28181和JT1078哪个更先进&#xff0c;我们可以从二者更适合哪一类场景&#xff0c;包括规范的设计目标、功能特性、应用场景、技术发展趋势来做个探讨。 GB/T28181 GB/T28181&#xf…

电脑浏览器显示代理服务器拒绝连接的解决办法

问题&#xff1a; 打开电脑浏览器显示代理服务器拒绝连接 解决办法&#xff1a; 1、按住winq键&#xff0c;输入代理&#xff0c;出现更改代理设置 2、将下面的自动检测设置、使用设置脚本、使用代理服务器都设置为关闭&#xff0c;刷新网页即可

【Centos】绕开报错ModuleNotFoundError: No module named ‘dnf‘

问题原因&#xff1a; 安装python3.9后不能使用yum Traceback (most recent call last):File "/usr/bin/yum", line 57, in <module>from dnf.cli import main ModuleNotFoundError: No module named dnf绕开yum解决方法&#xff1a; 直接下载相关依赖包 htt…

性能优化:自动化处理系统设计

性能优化&#xff1a;自动化处理系统设计 前言需求分析系统设计1. 调度中心2. 任务执行器3. 错误处理机制4. 通知系统5. 报表生成器6. 日志记录器 技术实现结语 前言 在当今这个信息爆炸、技术日新月异的时代&#xff0c;企业面临着前所未有的挑战和机遇。随着业务量的不断增长…

ssm基于微信小程序的校园商铺系统论文源码调试讲解

第二章 系统实现的技术支持 2.1微信小程序框架 微信小程序的开发框架是微信所独有的一套框架&#xff0c;分为View视图层和App Service逻辑层两部分。框架提供了一种类似于Web中html语言的wxml语言&#xff0c;作为视图层的标签语言&#xff0c;用于构造页面的布局。另外提供了…

公式编辑支持SUBSTITUTE()函数

08/21 主要更新模块概览 条件展示 精准搜索 新增函数 有效时长 01 表单管理 1.1 【表单查询外链】-新增条件为空时不展示数据 说明&#xff1a; 之前表单查询外链&#xff0c;当查询外链的条件为空时&#xff0c;数据会全部展示。现在&#xff0c;我们新…

NetApp数据恢复—WAFL文件系统误删除的数据恢复案例

NetApp存储故障&#xff1a; 一台NetApp存储配置24块磁盘。管理员几个月之前删除一个文件夹&#xff0c;后期发现这个文件夹中的数据很重要&#xff0c;需要恢复。 根据NetApp文件系统WAFL的特性&#xff0c;新写入数据覆盖之前的数据的可能性不大&#xff0c;可以尝试恢复这个…

JAVA 二维码生成

1.pom依赖 <dependency><groupId>com.google.zxing</groupId><artifactId>core</artifactId><version>3.3.3</version></dependency><dependency><groupId>com.google.zxing</groupId><artifactId>ja…

影响因子14.7!转录组和微生物组学纯分析!

研究背景 炎症性肠病(IBD)为累及回肠、直肠、结肠的一种特发性肠道炎症性疾病。临床表现腹泻、腹痛&#xff0c;甚至可有血便。本病包括溃疡性结肠炎(UC)和克罗恩病(CD)。粘膜水平上宿主-微生物相互作用的破坏是IBD病理生理的关键。本研究对收集的肠道活检组织进行了转录组学(…

可以收银的积分会员卡源码系统 带完整的安装代码包以及搭建部署教程

系统概述 随着消费市场的日益竞争激烈&#xff0c;商家需要不断探索新的营销方式来吸引和留住顾客。积分会员卡制度作为一种经典的营销策略&#xff0c;通过积分累积、兑换礼品、享受会员专属优惠等方式&#xff0c;有效提升了顾客的忠诚度和消费积极性。然而&#xff0c;传统…