时代变了,MySQL 早已不是最流行的数据库了

以下文章来源于古时的风筝 ,作者风筝

在StackOverflow 上看到2024年技术趋势,关于数据库的部分,PostgreSQL 是开发人员使用最多的数据库,超过 MySQL 了。虽然在国内好像不是这样。
在这里插入图片描述

PostgreSQL 在 2018 年的开发者调查中首次亮相,当时有 33% 的开发者正在使用它。而当年最受欢迎的还是 MySQL,有 59% 的开发者在使用。而六年后的今天,49% 的开发人员使用 PostgreSQL,连续第二年成为最受欢迎的数据库。

PostgreSQL 是什么

PostgreSQL 的历史可以追溯到加利福尼亚大学伯克利分校的 Ingres 项目。1985年,开始了以 post-Ingres 计划为原型进行研发,也就是 Postgres 的最初是版本。
在这里插入图片描述

其目的是通过增加最少的功能来完全支持所需要的类型。

这些功能包括类型定义和完整描述数据关系的能力。完整描述数据关系的能力之前虽广为使用但却需要由用户来维护。Postgres的数据库能够"理解"关系,并可以使用一定的规则以自然方式在相关的表中检索信息。

直到 1994年,Postgres95 增加了 SQL 语言解释器,后在1996年更名为 PostgreSQL。

PostgreSQL 和 MySQL 一样,也是完全开源的,也是一个关系型数据库。

作为一个优秀的关系型数据库,PostgreSQL 支持这么多特性,怪不得现在使用的人这么多。

  • 支持自定义数据类型和继承,允许用户定义新的类型和基于现有类型的子类型。
  • 支持多种编程语言编写的函数,包括 PL/pgSQL、PL/Perl、PL/Python 等。
  • 提供了自定义索引方法,包括 B树、哈希表和 GiST 索引。
  • 支持多版本并发控制(MVCC),减少了读取锁的依赖,提高了并发性能。
  • 支持规则(RULE),允许查询重写,常用于视图操作。
  • 内置丰富的数据类型,如任意精度数值、无限制长度文本、几何图元、IP地址、数组、JSON数据、枚举类型和 XML 数据。
  • 支持用户定义对象,如索引、操作符、聚合函数、数据域、数据类型转换和会话。
  • 支持继承,允许数据表结构和属性从一个“父”表继承。
  • 支持关系完整性约束、视图、内外部连接、子查询、事务处理等。
  • 支持 SSL 加密连接、二进制/文本大对象存储、在线备份、数据域、表分区、表空间、保存点、时刻点恢复、二阶段提交等。
  • 支持 TOAST 技术,用于存储超大属性。

看上去是完全覆盖 MySQL 的功能的,就比如 PostgreSQL 是直接支持数组类型的,而 MySQL 中你就要转一下。

PostgreSQL和MySQL的区别

这两个数据库接的头两把交椅之间有什么区别呢?

数据一致性和事务处理

PostgreSQL 和MySQL 都实现了完整的ACID特性(原子性、一致性、隔离性、持久性),并且采用了多版本并发控制(MVCC)来管理事务。

MySQL的默认存储引擎MyISAM曾经不支持事务,但是现在InnoDB已经成为MySQL的默认引擎,并且支持事务了。

但是其在处理复杂事务时的性能和一致性仍然不如PostgreSQL稳健。

扩展性和灵活性

PostgreSQL 扩展性和灵活性是非常强大的。开发者可以使用PostgreSQL自定义数据类型、操作符、索引方法,甚至编写存储过程和触发器来扩展数据库的功能。

而MySQL虽然也支持一些扩展功能,但相比之下,它的灵活性较为有限。MySQL的设计更注重易用性和性能优化,但这也使得它在处理复杂数据类型和自定义需求时显得有些捉襟见肘。

性能方面

在性能上,MySQL的优势在于其读写性能,尤其是在处理大量简单查询时,MySQL的速度非常快。这使得MySQL成为了许多Web应用的首选,尤其是那些以读取为主的应用。

而PostgreSQL则在处理复杂查询和大数据集时表现优异。PostgreSQL的查询优化器非常强大,它能够对复杂的SQL查询进行优化,确保在高负载下依然保持出色的性能。对于那些需要执行大量数据分析、数据聚合的应用来说,PostgreSQL无疑是更好的选择。

数据库引擎和存储

MySQL最大的特点之一是它支持多种存储引擎,如InnoDB、MyISAM。开发者可以根据需求选择最适合的引擎,例如InnoDB提供了事务支持和外键约束,而MyISAM则在读取性能上更具优势。

而PostgreSQL采用统一的存储架构,所有数据都存储在一个共享的存储引擎中。这种设计保证了数据的一致性和完整性,同时也简化了开发和运维的工作。虽然没有MySQL那样多样的选择,但PostgreSQL凭借其强大的功能和灵活性,依然能够满足大多数应用场景的需求。

PostgreSQL 更受欢迎的原因

看过上面,好像也没有看出PostgreSQL 比 MySQL 强在哪里啊,那为什么却超越了MySQL,成为最受欢迎的数据库了呢?

原因是以下几个方面:

数据完整性和可靠性

PostgreSQL在数据完整性和可靠性方面的优势是它获得青睐的重要原因之一。

PostgreSQL的设计理念一直是优先考虑数据的准确性和完整性,而不是牺牲这些特性来换取性能。这一点对于那些需要高数据一致性的应用来说至关重要,比如金融行业、政府机构和医疗领域。

强大的查询能力

在处理复杂查询时,PostgreSQL的表现远超MySQL。

其优化器可以处理非常复杂的SQL查询,包括子查询、联接和窗口函数等。PostgreSQL还支持丰富的索引类型,如B树、哈希、GiST、GIN、BRIN等,这使得它在大数据集上的查询性能非常出色。

对于需要进行复杂数据分析和实时决策支持的企业来说,PostgreSQL是一个理想的选择。

扩展性和自定义能力

PostgreSQL的扩展能力是它能够脱颖而出的另一个关键因素。开发者可以根据业务需求,对PostgreSQL进行深度定制,添加自定义的数据类型、函数、操作符,甚至是索引方式。

这种灵活性使得PostgreSQL能够适应各种复杂的业务场景,从而赢得了众多企业的青睐。

举个例子,许多使用地理信息系统(GIS)的公司都选择PostgreSQL,因为它可以通过PostGIS扩展,提供强大的空间数据处理能力。

类似地,许多大数据处理和分析系统也选择了PostgreSQL,因为它可以通过自定义扩展来优化查询和数据处理流程。

高标准的SQL兼容性

PostgreSQL一直以来都以严格遵循SQL标准而著称,这使得它在需要与其他数据库系统兼容或迁移数据时非常方便。MySQL虽然在功能上也在不断追赶,但在SQL标准的兼容性上,PostgreSQL依然保持领先。

此外,PostgreSQL还支持丰富的数据类型,包括数组、JSON、XML等,甚至可以存储和查询地理空间数据。对于那些需要处理非结构化数据或复杂数据类型的应用来说,PostgreSQL无疑提供了更多的选择和更大的灵活性。

云原生和大数据支持

随着云计算和大数据技术的快速发展,PostgreSQL的高扩展性和分布式处理能力使其在云原生应用中表现出色。许多云服务提供商,如AWS、Google Cloud和Azure,都提供了托管的PostgreSQL服务,这让开发者可以轻松地将PostgreSQL集成到他们的云应用中。

此外,PostgreSQL还支持分布式数据库和并行查询,这使得它在处理大规模数据集和高并发场景时,依然能够保持良好的性能和稳定性。这一点对于那些需要处理海量数据的互联网公司来说尤为重要。

但是国内云平台还是应用 MySQL 的更多一些。

开源精神和社区支持

PostgreSQL的开源精神和强大的社区支持也是它获得广泛认可的重要原因。与某些开源项目不同,PostgreSQL始终坚持完全开源,没有分割成商业版本和开源版本。这种透明和开放的开发模式吸引了全球无数的开发者和企业用户参与到PostgreSQL的社区中来。

PostgreSQL社区非常活跃,经常发布新的版本和功能,不断提升数据库的性能和稳定性。同时,社区中也有大量的教程、文档和工具可以帮助开发者更快地上手和使用PostgreSQL。

结语

如果你觉得文章很棒,可以转发,评论该文章;如果文章有问题,请留言或私信告诉我,我会在第一时间对内容进行调整,这将会帮助每一位想要学习网络基础的小伙伴,感谢!抱拳!

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

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

相关文章

云韧性,现代云服务不可或缺的组成部分

韧性,一个物理学概念,表示材料在变形或者破裂过程中吸收能量的能力。韧性越好,则发生脆性断裂的可能性越小。 如今,韧性也延伸到企业特质、产品特征等之中,用于形容企业、产品乃至服务的优劣。同样,随着云…

电脑视频编辑常用软件:12个在线视频剪辑方法,这份免费攻略真实在!

您是否曾为视频剪辑而感到困惑,不知从何入手?面对众多的视频编辑软件和复杂的操作流程,怎样才能快速上手,制作出高质量的视频呢?许多内容创作者在编辑或上传较长视频时,常常遭遇到时间和质量的困扰。为了解…

私域直播平台带源码

源码地址:https://gitee.com/godsdodo/tencent-live.git 简介: #腾讯云直播 #腾讯云im #腾讯云白板 # 私域直播 #高并发直播分发; 基于腾讯云K8S搭建的私域直播培训平台,直播功能: 主播推流,智能直播,OBS推流 ## 助理平台: 场控控制,直播间管理,直播间数据统计 ## 用户端: 观看…

Double-Fetch漏洞检测工具的部署、使用与原理分析

文章目录 前言1、概述1.1、简介1.2、工作原理1.2.1、内核空间与用户空间的信息传递1.2.2、Double-Fetch漏洞产生的原因1.2.3、产生Double-Fetch漏洞的情况1.2.4、一个Double-Fetch漏洞示例1.2.5、Double-Fetch漏洞检测工具原理 1.3、模式匹配原理分析1.3.1、Coccinelle介绍1.3.…

使用 Bedrock 模型进行 SQL 查询生成:高效自动化的全新体验!

引言 在当今高度重视可持续发展的时代,亚马逊通过其 Bedrock 模型,展示了公司在运营和增长方面的战略愿景。同时,Amazon SageMaker 为机器学习领域的专业人士提供了强大的工具,加速了模型的开发和部署。 探索亚马逊的 Bedrock 模…

动态SQL中的foreach标签【后端 21】

动态SQL中的foreach标签 在Java开发中&#xff0c;特别是在使用MyBatis进行数据库操作时&#xff0c;动态SQL是一项非常强大的功能。MyBatis的<foreach>标签就是动态SQL中最为常用的一个&#xff0c;主要用于处理包含IN子句的查询或者批量插入等操作。本文将详细介绍<…

对接金蝶云星空调用即时库存信息查询API(附JAVA实现)

文章目录 前言准备工作获取第三方授权权限与授权配置信息集成金蝶云SDK调用实现备注前言 对于有自己商品信息管理后台并且使用金蝶ERP系统管理物料的商家来说,将金蝶上物料的库存信息同步到管理后台就可以不用去金蝶上确认库存了,可以大大简化管理后台的库存变更工作,这篇文…

【北京迅为】《STM32MP157开发板使用手册》- 第四十一章 计数信号量实验

iTOP-STM32MP157开发板采用ST推出的双核cortex-A7单核cortex-M4异构处理器&#xff0c;既可用Linux、又可以用于STM32单片机开发。开发板采用核心板底板结构&#xff0c;主频650M、1G内存、8G存储&#xff0c;核心板采用工业级板对板连接器&#xff0c;高可靠&#xff0c;牢固耐…

中国火锅变局:从群雄逐鹿到双雄角逐

中国火锅&#xff0c;正在进入新的变局。 前不久&#xff0c;沙利文发布的《2024年中国火锅行业发展白皮书》&#xff0c;揭示出中国火锅新的市场变化和竞争格局。 首先在品类上&#xff0c;川渝火锅的市场份额高达66%&#xff0c;远超排在后面的北派火锅和粤式火锅。 在川渝…

围剿Model Y,小米SUV也来拼刺刀了

文 | AUTO芯球 作者 | 雷慢 马斯克真是被小米雷军盯上了&#xff0c; 前面小米SU7死磕Model 3&#xff0c; 现在小米SUV又来打Model Y了&#xff0c; 别不信啊&#xff0c;就刚刚&#xff0c;小米SUV出现了最大的曝光&#xff0c; 外观谍照&#xff0c;内饰中控台都曝光了…

基于SpringBoot+Vue的商场停车场管理系统

作者&#xff1a;计算机学姐 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等&#xff0c;“文末源码”。 专栏推荐&#xff1a;前后端分离项目源码、SpringBoot项目源码、SSM项目源码 系统展示 【2025最新】基于JavaSpringBootVueMySQL的…

标签云效果

产品要求&#xff0c;词云要实现动态滚动。查资料&#xff0c;改写效果。 echarts词云效果 传统的echarts-wordCloud不能满足需求。 标签云 换了标签云&#xff0c;以下是代码 <template><div class"mx-auto" :style"{ width: width px }"&g…

正点原子RK3588(一)——开机测试+AI初探

一、adb adb shell&#xff0c;进入板子的根目录 exit&#xff0c;退出到linux adb pull 板子 linux&#xff08;从板子到linux&#xff09; adb push linux 板子&#xff08;从linux到板子&#xff09; 二、测试AI功能 2.1 resnet18 import cv2 import numpy as np import…

全视通解读政策风向,智慧手术室究竟怎么做信息化?

尽管智慧手术室的建设与发展日益重要&#xff0c;但是目前国内外对智慧手术室的定义仍是众说纷纭&#xff0c;直至日前&#xff0c;上海交通大学医学院附属瑞金医院、上海市数字医学创新中心联合L.E.K.咨询发布的《中国智慧手术室发展与实践白皮书》&#xff08;后简称《白皮书…

序列化方式二——JSON之fastjson

fastjson&fastjson2(版本&#xff1a;1.2.83_noneautotype) 扩展点 Fastjson通过其丰富的扩展点显著增强了用户定制序列化和反序列化行为的灵活性&#xff0c;完美契合了实际开发中的多样化需求。在SpringBoot与SpringCloud的集成环境中&#xff0c;开发者能够利用Seriali…

五、 共射极放大电路

共射极放大电路 1、三极管的结构、三极管各极电流关系、特性曲线、放大条件。   2、元器件的作用、电路的用途、电压放大倍数、输入和输出的信号电压相位关系、交流和直流等效电路图。 3、静态工作点的计算、电压放大倍数的计算。

【PCL实现点云分割】ROS深度相机实践指南(上):PCL库初识和ROS-PCL数据类型转换

前言 本教程使用PCL对ROS深度相机捕获到的画面进行操场上锥桶的分割 本人相关的RGBD深度相机原理及其使用教程&#xff1a; [csdn 博客] 上手一个RGBD深度相机&#xff1a;从原理到实践–ROS noeticAstra S&#xff08;上&#xff09;&#xff1a;解读深度测距原理和内外参推导…

金属3D打印经济效益高吗?

在我国制造业迈向产业升级的重要阶段&#xff0c;3D打印技术如同一股强劲的新风&#xff0c;特别是在航空航天、汽车、生物医疗等领域&#xff0c;已成为复杂构件制造的“明星”技术。那么&#xff0c;对于众多生产厂家而言&#xff0c;金属3D打印的经济账到底怎么算&#xff1…

rabbitmq 短信验证码

1.生成的验证码用redis存 减少数据库压力 2.通知运营商发送短信的事情交给rabbitmq的队列去做&#xff0c;无论成功或者是失败&#xff0c;用户那边都不知道。没有收到验证码&#xff08;监听失败&#xff09;用户只会觉得是运营商的问题&#xff0c;而不会怀疑是我们的系统有问…

深入掌握 Go 单元测试:从基础到进阶的完整指南

你好&#xff0c;我是陈明勇&#xff0c;一名热爱技术、乐于分享的开发者&#xff0c;同时也是开源爱好者。 成功的路上并不拥挤&#xff0c;有没有兴趣结个伴&#xff1f; 个人网站&#xff1a;https://chenmingyong.cn 文章持续更新&#xff0c;如果本文能让您有所收获&#…