PostgreSQL 到底比其他的强了在哪里了

2020年01月15日讲师:刘老师浏览:1654次

最近听到一个说法,传统的关系型数据库分为两种,PostgreSQL 和Others,听上去有些刺耳,但为什么会有这么个说法,是吹牛皮吹大了,还是别的数据库,真的是别的数据库。提出这个说法的一个依据就是 extension APIS, 学过POSTGRESQL 的一开始都会被他的 extension 弄了乱七八糟,但在进去后,发现extension 真xx的是一个好东西,数据库有了这东西,等同于玩游戏开了外挂,只要你有需求,各种外挂都能挂上。这在别的数据库还真是没有,如果以此来说,倒也有几分道理。或者嗓门在大一点,可以说这彻底改变了玩数据库的方式。Extension 主要的工作就是将一个外部的软件的功能添加到postgresql,以类似函数的方式,每个extension 绑定了一个相关的object,这是从postgresql 9.1 开始的提供的官方的API去扩展任何数据库模块的标准做法。这与MYSQL 的plugin 不一样的地方是,postgresql 是动态的加载这些objects 到postgres 的系统空间中。(当然有些需要加载库,注:库不是数据库,而是程序方面的一个概念)那到底你可以extend点什么到postgres 中1 type system and operators2 user defined functions and aggregates3 storage system and index4 write ahead logging and relication5 transaction engine6 background worker processes7 background workder processes8 query planner and query executor9 configuration and database metadata看完上面的几个点,你有几个想法,我的第一个想法就是POSTGRESQL 实际上真是一个“开源”数据库。可以看看上边的list 只要你愿意,你有开发的天赋,你完全可以开发一些适合你公司自己的业务需求的数据库功能。即使同为开源的其他数据库,也是不大可能让你这么干的。开源如果仅仅等于省钱,那和安装盗版数据库除了法律上的不同,我想也就那么回事。而POSTGRESQL 的开源,不等同于免费,而是彻底的开放,只要你有能耐。如同去成年人的玩具店,你是愿意买个乐高,还是买个电子玩具车。Postgresql 是乐高毋庸置疑,我想没有几个人会愿意抱怨乐高最后拼装的东西差劲,因为那样貌似在说自己的创造力和构造力不行。举例通过extension postgresql 对非结构化的数据的支持,算是传统数据库里面的优等生,XML ,FULL-TEST SEARCH , JSON, JSONB 等都是没有问题因为可以更方便的处理非结构数据,POSTGRESQL 和 MONGODB 之间也有些不大好的新闻,例如某国外大媒体,直接用 Postgresql 替换mongodb的“传闻”。同时,例如HLL的extension 创造了一种新的数据类型hll,即HyperLogLog数据结构。HyperLogLog是一种固定大小、类似于集合的结构,用于具有可调精度的不同值计数。例如,在1280字节中,hll可以估计数百亿个不同值的计数,只有几个百分比的错误,当然extension 的能量也不仅仅如此,postgresql 为什么也能承担地理方面的专业处理功能,不还是插件 PostGIS. 更关键的是,插件就可以扩展功能的思路,和其他数据库,等待版本更新,或者安装plug-in,或者直接给你一个功能包。这不是功能上的差别,这是整体软件架构思路的不同。(参见25000行某数据库的吐槽)更有意思的是通过fdw系列的插件,POSTGRESQL 可以从任意的数据库上读取数据,目前读取ORACLE, SQL SERVER , MYSQL, MONGODB 等等都不是问题,当然除此以外还有类似cstore_fdw 它是一个postgres扩展,它可以智能地将数据和查询分布在多个节点上,这样就可以扩展数据库并提高查询速度。各种插件的功能导致POSTGRESQL 貌似没有不行的,包含 模糊查询走索引的插件,包含查看数据库底层数据库存储的插件,监控语句的执行效率的插件,太多的插件导致没有什么人能全部知晓或掌握。最后虽对最上边的说法觉得有点“意思”,因为做人还是要谦虚点,但你要说他那么说,也有些道理。
分享 1

您已经赞过了!