PostgreSQL是什么?StackOverflow上开发者最爱和最想要的关系型数据库

**经常会有人问我PostgreSQL是什么? **

这个问题不太好回答,因为PostgreSQL除了可以让你做到几乎所有其他主流关系型数据库能做的事情外,还可以做到很多别的数据库做不到的事情。

如果非要一个简单直接、便于理解的定义,那么你可以理解为一个开源可自由扩充的Oracle

尽管这并不是非常准确。因为PostgreSQL对程序员要更友好一些,下图是来自StackOverflow 2017年的一些统计,参考Developer Survey Results 2017

  • 最想要的数据库

  • 最爱的数据库

如果只是说关系型数据库,那么“StackOverflow年度统计中开发者最爱和最想要的关系型数据库”这个结论不难得出。

而对比其中的最热门:

你会发现一个有意思的现象:对你最好的未必是那个大家都知道的

PostgreSQL好在哪里?

在回答了前面的回答之后,这是更多的人会想问的第二个问题。

而对于这颗沧海遗珠,用一句话其实难以尽述。如果非要总结,可以认为有以下几点:

  • 稳定

    PostgreSQL的代码质量是被很多人认可的,经常会有人笑称PG的开发者都是处女座。基本上,PG的一个大版本发布,经过三两个小版本就可以上生产,这是值得为人称道的一个地方。从PostgreSQL漂亮的commit log就可见一斑,PostgreSQL的COMMIT LOG

    而得益于PostgreSQL的多进程架构,一个连接的异常并不影响主进程和其他连接,从而带来不错的稳定性。

  • 性能

    我们内部有些性能上的数据,TPCC的性能测试显示PostgreSQL的性能与商业数据库基本在同一个层面上。

  • 丰富

    PostgreSQL的丰富性是最值得诉说的地方。因为太丰富了,以至于不知道该如何突出重点。最全面的例子,可以找 自带博客外挂光环的 @德哥 。这里只列举几个我认为比较有意思的几点(查询、类型、功能):

    • 查询的丰富

      且不说HASH\Merge\NestLoop JOIN,还有递归、树形(connect by)、窗口、rollup\cube\grouping sets、物化视图、SQL标准等,还有各种全文检索、规则表达式、模糊查询、相似度等。在这些之外,最重要的是PostgreSQL强大的基于成本的优化器,结合并行执行(并行扫瞄、并行JOIN等)和多种成本因子,带来各种各样丰富灵活高效的查询支持。

    • 类型的丰富

      如高精度numeric, 浮点, 自增序列,货币,字节流,时间,日期,时间戳,布尔, 枚举,平面几何,立体几何,多维几何,地球,PostGIS,网络,比特流,全 文检索,UUID,XML,JSON,数组,复合类型,域类型,范围,树类型,化 学类型,基因序列,FDW, 大对象, 图像等。

      [PS: 这里的数组,可以让用户像操作JAVA中的数组一样操作数据库中的数据,如 item[0][1]即表示二维数组中的一个元素,而item可以作为表的一个字段。]

      或者,如果以上不够满足,你可以自定义自己的类型(create type),并且可以针对这些类型进行运算符重载,比如实现IP类型的加减乘除(其操作定义依赖于具体实现,意思是:你想让IP的加法是什么样子就是什么样子)。

      另外还有各种索引的类型,如btree, hash, gist, sp-gist, gin, brin , bloom , rum 索引等。你甚至可以为自己定义的类型定制特定的索引和索引扫瞄。

    • 功能的丰富

      PostgreSQL有一个无与伦比的特性——插件。其利用内核代码中的Hook,可以让你在不修改数据库内核代码的情况下,自主添加任意功能,如PostGIS、JSON、基因等,都是在插件中做了很多的自定义而又不影响任何内核代码从而满足丰富多样的需求。而PostgreSQL的插件,不计其数

      FDW机制更让你可以在同一个PostgreSQL中像操作本地表一样访问其他数据源,如Hadoop、MySQL、Oracle、Mongo等,且不会占用PG的过多资源。比如我们团队开发的OSS_FDW就用于实现对OSS的读写

    至于其他的,举个简单的例子,PostgreSQL的DDL(如加减字段)是可以在事务中完成的 [PS: PostgreSQL是Catalog-Driven的,DDL的修改基本可以理解为一条记录的修改]。这一点,相信做业务的同学会有体会。

谈到与商业数据库的对比,这里有一张比较有意思的图,权作消遣:

可以看得出来,PostgreSQL与很多商业数据库还是有一定历史渊源上的,大多是基于System R。

如果觉得不过瘾,再来点干的,看看PostgreSQL与这些数据库大厂这些年的恩爱情仇(图比较大,PG在左边最上面那条线,然后连着中间最上面第二条线)

如何开始

业务从一个数据库迁移到另外一个数据库,不是一件容易的事。那么,你是否要考虑一下,在新的业务上尝试不同的可能?

关于选型,这篇数据库选型十八摸 之 PostgreSQL - 致 架构师、开发者可能会帮到你。

另外,这里有PG大神@德哥准备的系列的培训资料,和PG入门文档

而更多的资料,在云栖上搜索”postgresql"即可,这里是传送门:更多文章资料

Have fun!

时间: 2024-09-19 08:15:19

PostgreSQL是什么?StackOverflow上开发者最爱和最想要的关系型数据库的相关文章

云上开发者全新体验——OpenAPI Explorer诞生记

摘要: 本文的整理自2017云栖大会-南京峰会上阿里巴巴资深开发工程师黄俊华的分享讲义,讲义主要对于云上的开发工具进行了详细的介绍,先后介绍了SDK.API文档.Cli调试工具以及OpenAPI的相关知识,并着重对于OpenAPI Explorer进行了介绍. 在2017云栖大会-南京峰会上,阿里巴巴资深开发工程师黄俊华做了题为<云上开发者全新体验--OpenAPI Explorer诞生记>的分享.他在分享中对于云上开发工具中的SDK.API文档.Cli调试工具以及OpenAPI的相关知识进行

调用接口-求救各位大神,如何下载stackoverflow上的用户数据。

问题描述 求救各位大神,如何下载stackoverflow上的用户数据. 求救各位大神,如何下载stackoverflow上的用户数据(在stackoverflow上注册的用户的公开的信息).若是调用stackoverflow提供的接口,URL是什么? 解决方案 看看stackexchange有提供一些相关数据API 解决方案二: 没有这样的接口,只有自己做爬虫.

给数据贴上“电子标签”, 爱立示用无钥签名防范信息被篡改

爱立示拥有一项无钥签名专利技术,该技术可通过纯算法检测数据是否被篡改.具体来说,电子数据计算后可提取电子指纹,爱立示再对指纹进行分布式运算,获得无钥签名,用户通过比对签名就可知道数据是否被篡改. 目前,无钥签名可检测内容数据.元数据和云端系统的完整性.其中,元数据是指生成数据的时间.服务器系统日志等信息.举例来说,如果照片存在云盘,通过无钥签名后,用户可知道照片有没有被PS过,拍照的时间有没有被更改,云平台对照片有没有进行过操作. 爱立示创始人谈建表示,所有需要电子数据存储.传输的场景都可使用无

记一次在StackOverFlow上问问题的经历

最近一直在做测试方面的事情,被测的一些功能需要连接到FTP服务器上.而我在做本地测试时为了方便,就使用java写了一个简单的ftp服务器,可以在命令行下直接启动运行. 当时在main函数里是这样写的. 1 2 3 4 5 6 7 public class App { public static void main(String[] args) { FtpServer ftpServer = new FtpServer(); ftpServer.start(); } } 然后在命令行运行java

我发现:在StackOverflow上拯救歪果仁十分有意思!

菊长:火星特工们!今天是周五了,大家有什么提议? BeJavaGod:报告菊长!我发现,在StackOverflow上拯救歪果仁十分有意思! 噗哈哈,时不时遇到问题会使用到StackOverflow,上面汇聚了各路大神的各种精妙解答,不论是java,ios,android,js,.net,各种问题都有解答,当然遇到问题也能上StackOverflow来搜一下,很多问题都能迎刃而解 但是有没有突发奇想来找一些问题来回答呢?个人觉得在上面写写英文还是不错的,一方面保持自己英文水平,虽然说不上提高(曾

阿里云创投服务,是阿里云从云上开发者角度出发

投资第三层境界,众里寻他千百度,蓦然回首,那人却在灯火阑珊处.传统的融资,云上开发者往往逃不开"寻寻觅觅,却不知你在何处?"."你拒我千百遍,我依待你如初恋",归结三个方面: · 项目递交无反馈 云上开发者提交项目后,经过一段时间的等待,希望能了解项目现在是否有进展?更是对投资人的项目反馈如珍如宝,但传统的创投有去无回石沉大海,对初期云上开发者的成长无疑像少了润滑剂般.阿里云的创投服务从云上开发者角度出发,提供100%建议及结果反馈,与阿里云合作的投资伙伴将会安排1

重大消息-阿里云为云上开发者提供专有的数据化在线创投服务

摘要: 阿里云创投服务(http://fuwu.aliyun.com/tms/financing/index.html?zwid=0327)于2013年12月18日上线,是阿里云从云上开发者角度出发,为其解决传统形式项目递交无反馈.找投资公司难.融资周期长等问 阿里云创投服务(http://fuwu.aliyun.com/tms/financing/index.html?zwid=0327)于2013年12月18日上线,是阿里云从云上开发者角度出发,为其解决传统形式项目递交无反馈.找投资公司难.

写给开发者看的关系型数据库设计

数据库设计,一个软件项目成功的基石.很多从业人员都认为,数据库设计其实不那么重要.现实中的情景也相当雷同,开发人员的数量是数据库设计人员的数倍.多数人使用数据库中的一部分,所以也会把数据库设计想的如此简单.其实不然,数据库设计也是门学问. 从笔者的经历看来,笔者更赞成在项目早期由开发者进行数据库设计(后期调优需要DBA).根据笔者的项目经验,一个精通OOP和ORM的开发者,设计的数据库往往更为合理,更能适应需求的变化,如果追其原因,笔者个人猜测是因为数据库的规范化,与OO的部分思想雷同(如内聚)

小米投资互联网家装公司“爱空间”,想低调都不行

摘要: 小米投资互联网家装公司爱空间,想低调都不行,699元/平米的定价,让朋友圈都刷屏了.热闹的场面不仅由于此,有住网更早一步杀入家装市场,定价多少?599元/平米!而海尔地产云 小米投资互联网家装公司"爱空间",想低调都不行,699元/平米的定价,让朋友圈都刷屏了.热闹的场面不仅由于此,有住网更早一步杀入家装市场,定价多少?599元/平米!而海尔地产云菜网也与有住网合作签约.巨头们杀入家装的意图是什么? 599元如何炼成 近日雷军小米旗下的顺为资本领投.总共6000万元的投资砸向&