State of PostgreSQL 2023 报告解读

基于 PostgreSQL 内核的时序数据库厂商 Timescale 发布了一年一度的 State of Postgres 2023 报告。
file

Timescale 介绍

简单先介绍一下 Timescale 这家公司的历史。它最早是提供了一个 PG 的插件,引入了 Hypertable 这个概念,来高效地处理时序数据,后来提供了托管的云服务。今年又紧跟潮流陆续引入了 Serverless 和 Vector。

file

Timescale 也在今年做了一次品牌升级,笔者觉得是比较成功的。Logo 有辨识度且含义贴切,整体的风格也契合公司的阶段。在商业能力这块,Timescale 应该是目前 Postgres 阵营里最成熟的。不过 Timescale 本身做的是基于 Postgres 的时序数据库而不是 Postgres 通用数据库,所以它也要面临其他专门做时序数据库的竞争。

file

Wiki 上显示的发布时间应该是错误的,2017 年笔者在 Google Cloud SQL 负责 Postgres 时, Timescale 团队就接触过我们希望可以引入他们的插件。当时从成熟度的考虑,并没有接纳。不过有点意外的是,现在 Google Cloud SQL 上仍然没有上架 Timescale 插件。

file

报告整体

首先这是一份相对有偏向性的报告,本身 Timescale 的立场就使得报告的受众群体会是 Postgres 的使用者。比如说下面这个问题的答案。

file

Timescale 从 2019 开始做 State of PostgreSQL,今年的调研持续 6 周,报告结果从 888 份问卷中汇总而成。

file

相比于我们之前做过的谷歌 DORA 以及 JetBrains 开发者报告,Timescale 报告样本数要小许多,一是因为 Timescale 还没有那么大的影响力,二是 PostgreSQL 只是整个开发者群体下的数据库领域下的一个垂直领域。

调研人群

file

没有再细分到国家。工作经验分布比较平均,有点意外的,尤其是 10 年以上占了 2/3。

file

Postgres 基本盘还是后端开发人员。

选择 PostgreSQL 的原因

file

开源证书是最大的优势。但这里没有说清楚是相比于使用不同开源证书的 MySQL,还是相比于闭源的数据库。丰富的的功能另一个显著的优势。相对来说选择 Extension 的人没有预想的多。这里最有意思的是 15+ 工作经验的,排序是证书 > 稳定性 > 功能 > ACID。大道至简,返璞归真。

PostgreSQL 的上手体验

file
平均水平以上,但谈不上很优秀。PostgreSQL 强大功能的另一面就是上手更有门槛。比如说 Database / Schema / Table 三层以及对应的权限系统,适合大型项目,对小型开发就显得臃肿了。

生态和工具

file

这个插件的问题有点狡猾,把 favorite 和 most frequently 并在了一起,结果东道主的 timescaledb 就力压 pg_stat_statements 了🤔。

file

DBeaver 在通用数据库客户端里遥遥领先。

file

pgBouncer 依然是最流行的工具,不用连接池的话,很容易造成连接打满。第二常用的就是可视化查询计划工具 Depesz,这个工具也存在好久了,也是开源的,Bytebase 也在 SQL Editor 中集成了。

file

版本分布情况。

file

使用上的挑战。果然是把 VACUUM 单独拎出来吊打了。

file

部署的方式,这个图没有太看懂,如果大家都跌了,那应该有人大涨才对?不过当年最早做 Postgres 托管的 Heroku 也快要退出历史舞台了。

file

在 Kubernetes 上部署 PG 的方式,CloudNativePG 和 Helm 并驾齐驱。国内用前者的应该不多。

file

使用的功能点,这些都算是高级功能,也体现了 PostgreSQL 高级能力的实用性。

file

JSON 还是很香。

file

阿里云在全球市场份额和 GCP 比较接近。但这个报告主要面向海外,所以阿里云就相对靠后了。也可以从侧面看出光中国是一个多么巨大的市场。

file

除了 PG 外使用的其它数据库,也可以侧面反映其他数据库的流行度,和 DB-Engines 排名是有些区别的。

file
file

PG 实例数据量大小,相当符合正态分布。

社区

可以给做社区的同行一些参考。

file
file

Postgres Weekly Newsletter 比较有影响力。不过它这次也给报告带了货,所以也会造成偏向性。

file

一些希望社区改进的地方。其中几点笔者也有感触:

  • PG 的官方文档已经很详尽了,不过如果配些示例图的话,会更容易吸收。
  • 邮件列表的问答形式比较过时,找帖子,翻帖子真的有点累。
  • 需要更多面向应用开发者以及研发流程 DevOps 的内容,而不是仅仅针对 DBA 和数据库内核开发者的内容。

AI

今年报告里自然不能免俗的会有 AI 问题。

file

大多数人还是持观望态度。

file

让向量处理和关系型数据处理在同一个数据库是 PG 最大的优势。一专多能,传统艺能。
就这些啦,这里只选取了部分报告摘要,也建议去阅读原文。

也欢迎阅读我们之前写的行业报告解读:

  • 一份谷歌写给 CTO 们的报告 - DORA 2023 版全面解读
  • 关于数据库,JetBrains 最新的开发者报告里说了些什么

以及数据库生态对比:

  • 全方位对比 Postgres 和 MySQL (2023 版)
  • 为何在中国 MySQL 远比 PostgreSQL 流行
  • 为何在中国 Navicat 远比 DBeaver 流行
  • Bytebase vs Flyway
  • Bytebase vs Liquibase

💡 更多资讯,请关注 Bytebase 公号:Bytebase

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/238393.shtml

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

相关文章

飞天使-k8s知识点5-kubernetes基础名词扫盲

文章目录 deploymentspodNodeserviceskubectl 实现应用伸缩kubectl 实现滚动更新kubernetes架构 deployments 中文文档 http://docs.kubernetes.org.cn/251.htmldeployment是用来创建和更新应用的,master 会负责将创建好的应用实例调度到集群中的各个节点 应用实例…

YOLOv8算法改进【NO.96】针对小目标检测有效果的ASF-YOLO

前 言 YOLO算法改进系列出到这,很多朋友问改进如何选择是最佳的,下面我就根据个人多年的写作发文章以及指导发文章的经验来看,按照优先顺序进行排序讲解YOLO算法改进方法的顺序选择。具体有需求的同学可以私信我沟通: 第一…

qt连接hiki相机进行拍照保存

.pro QT工程pro文件模板变量(TEMPLATE)模板变量告诉qmake为这个应用程序生成哪种makefile。下面是可供使用的选择: app - 建立一个应用程序的makefile。这是默认值,所以如果模板没有被指定,这个将被使用。 lib - …

计算机体系结构实验——Branch-Target Buffers

实验五 Branch-Target Buffers 本次实验的主要目的是加深对Branch-Target Buffers的理解。掌握使用Branch-Target Buffers减少或增加分支带来的延迟的情况。 实验内容: 将以下程序段修改为可利用WinMIPS64模拟器运行的程序。假设R3的初始值为R240 在使用forward…

业务逻辑漏洞有哪些?漏洞攻击防御及代码示例

文章目录 简介危害成因攻击防御代码示例1. 未经验证的重要操作2. 认证绕过3. 逻辑时间窗口漏洞4. 负载测试漏洞 修复 业务逻辑漏洞是指软件或系统的逻辑设计上的缺陷,这些缺陷可能被攻击者利用,从而导致意料之外的行为。下面是对业务逻辑漏洞的简介、危害…

基于 FFmpeg 的跨平台视频播放器简明教程(十二):Android SurfaceView 显示图片和播放视频

系列文章目录 基于 FFmpeg 的跨平台视频播放器简明教程(一):FFMPEG Conan 环境集成基于 FFmpeg 的跨平台视频播放器简明教程(二):基础知识和解封装(demux)基于 FFmpeg 的跨平台视频…

【LeetCode:2866. 美丽塔 II | 单调栈 + 前后缀数组】

🚀 算法题 🚀 🌲 算法刷题专栏 | 面试必备算法 | 面试高频算法 🍀 🌲 越难的东西,越要努力坚持,因为它具有很高的价值,算法就是这样✨ 🌲 作者简介:硕风和炜,…

flink watermark 实例分析

WATERMARK 定义了表的事件时间属性,其形式为: WATERMARK FOR rowtime_column_name AS watermark_strategy_expression rowtime_column_name 把一个现有的列定义为一个为表标记事件时间的属性。该列的类型必须为 TIMESTAMP(3)/TIMESTAMP_LTZ(3),且是 sche…

2023年12月GESP认证图形化编程四级真题试卷

2023年12月GESP认证Scratch图形化等级考试(四级)真题试卷 题目总数:27 总分数:100 选择题 第 1 题 单选题 现代计算机是指电子计算机,它所基于的是( )体系结构 A. 艾伦图灵 B. …

Valentina Studio Pro for Mac:高效数据库管理工具

作为一款强大而高效的数据库管理工具,Valentina Studio Pro for Mac在Mac平台上的表现无疑是令人印象深刻的。无论您是初学者还是专业数据库管理员,Valentina Studio Pro都能够满足您的需要,并提供一流的工具和功能来简化数据库管理的过程。 …

KBU808-ASEMI适配高端电源KBU808

编辑:ll KBU808-ASEMI适配高端电源KBU808 型号:KBU808 品牌:ASEMI 封装:KBU-4 最大平均正向电流:8A 最大重复峰值反向电压:800V 产品引线数量:4 产品内部芯片个数:4 产品内…

Docker 编译OpenHarmony 4.0 release

一、背景介绍 1.1、环境配置 编译环境:Ubuntu 20.04OpenHarmony版本:4.0 release平台设备:RK3568 OpenHarmony 3.2更新至OpenHarmony 4.0后,公司服务器无法编译通过,总是在最后几十个文件时报错,错误码4000&#xf…

C#电源串口调试

目的 记录串口调试的遇到的一些问题以及相应的解决方法 1.串口定义:串口是计算机与其他硬件传输数据的通道,在计算机与外设通信时起到重要作用 2.串口通信的基础知识 C#中的串口通信类 C#使用串口通信类是SerialPort(),该类使用方法是 new 一个 SerialPort对象 为S…

【C语言】自定义类型:结构体深入解析(二)结构体内存对齐宏offsetof计算偏移量结构体传参

文章目录 📝前言🌠 结构体内存对齐🌉内存对齐包含结构体的计算🌠宏offsetof计算偏移量🌉为什么存在内存对⻬?🌠 结构体传参🚩总结 📝前言 本小节,我们学习结构的内存对…

R语言【cli】——通过cli_abort用 cli 格式的内容显示错误、警告或信息,内部调用cli_bullets和inline-makeup

cli_abort(message,...,call .envir,.envir parent.frame(),.frame .envir ) 先从那些不需要下大力气理解的参数入手: 参数【.envir】:进行万能表达式编译的环境。 参数【.frame】:抛出上下文。默认用于参数【.trace_bottom】&#xff…

Redis实现日榜|直播间榜单|排行榜|Redis实现日榜01

前言 直播间贡献榜是一种常见的直播平台功能,用于展示观众在直播过程中的贡献情况。它可以根据观众的互动行为和贡献值进行排名,并实时更新,以鼓励观众积极参与直播活动。 在直播间贡献榜中,每个观众都有一个对应的贡献值&#…

力扣日记12.21【二叉树篇】98. 验证二叉搜索树

力扣日记:【二叉树篇】98. 验证二叉搜索树 日期:2023.12.21 参考:代码随想录、力扣 98. 验证二叉搜索树 题目描述 难度:中等 给你一个二叉树的根节点 root ,判断其是否是一个有效的二叉搜索树。 有效 二叉搜索树定义…

啥?你还不道数据库?赶紧进来看吧!

操作系统: windows:win10、win11、win7、windows Server2016 Linux/Unix :红帽(RedHat)、Bebian、SUSE MacOS Linux系统:CantOS(yum、dnf)、Ubuntu(apt、apt—get&am…

Ubuntu 常用命令之 df 命令用法介绍

📑Linux/Ubuntu 常用命令归类整理 在Ubuntu系统下,df命令是用来查看文件系统的磁盘空间占用情况的。df是disk free的缩写,这个命令可以获取硬盘被占用了多少空间,还有多少空间是可用的,硬盘的挂载点等信息。 df命令的…

【Python】matplotlib画图_饼状图

柱状图主要使用pie()函数,基本格式如下: plt.pie(x,explodeNone,labelsNone,colorsNone,autopctsNone,pctdistance0.6,shadowFalse,labeldistance1.1,staatangleNone,radiusNone,counterclockTrue,wedgepropsNone,textpropsNone,center(0,0),frameFalse…