数据库 It's never too late to learn Postgres

hooopo · 2018年11月24日 · 最后由 hooopo 回复于 2018年12月09日 · 3041 次阅读
本帖已被设为精华帖!

最近,TimescaleDBPipelineDBCitusDB相继都成为了postgres extension,并且都达到了production ready状态。这让Postgres在各个应用领域都有着难以替代的位置,无论是OLTP还是OLAP,无论什么样的应用场景。Postgres不仅仅是一个数据库,更是一个生态系统,其中包括SQL生态,extension生态,还有各种fork等。

Extension Ecosystem

  • 流式系统:Pipelinedb,reporting dashboards and realtime monitoring 的最佳选择,出自Adroll,据说12306有在使用。
  • 并行处理:CitusDB,让postgres不再有scale out烦恼,OLAP和OLTP双核模式,无论你是SaaS服务还是海量数据分析场景
  • 时序数据:TimescaleDB,时序分析
  • 空间数据:Postgis + pgrouting,LBS类应用和导航类应用杀手级解决方案
  • 数据科学:MADlib,相当于Python 的 scikit-learn

当然除了上面这些重量级的插件,postgres也有很多轻量级但超级好用的插件,比如:

  • 用于中文分词的zhparser和pg_jieba
  • ETL的好帮手:各种FDW
  • 各种相似度算法包:fuzzystrmatch和pg_similarity
  • 让Postgres秒变列存储数据库的:cstore_fdw
  • 让Postgres秒变API接口的:postgrest(REST API)和hasura(graphql API)

SQL & Data

如果说,做Web开发还可以使用ORM工具,不懂SQL语句也可以写出不错的项目。在数据分析挖掘领域,如果不懂SQL是很难的。SQL作为一个存在了几十年的工具,不断进化和完善,有着相当优秀的表达能力和社区沉淀。

技术潮流像钟摆,从SQL到NoSQL,从NoSQL到NewSQL,甚至No, SQL!如今大数据工具也都倾向于使用SQL作为统一的接口层,像Spark SQL、Kalfka SQL、新版Elasticsearch 也支持了SQL。

SQL之于数据领域就是Javascript之于Web。Least Power原则说:

Any application that can be written in JavaScript, will eventually be written in JavaScript

对于数据领域就是:

Any application that can be written in SQL, will eventually be written in SQL

Postgres & MySQL

相比mysql,postgres的特性多的有点数不过来:LATERAL JOIN、Window Function、CTE、Materialized View、Array、FDW、Gist Gin Index等,更多请移步 https://modern-sql.com/

如果勉强还可以说postgres和mysql在OLTP领域分别是北乔峰,南慕容;然而在OLAP领域,mysql已经完全被postgres碾压。postgres凭借独特的extension架构,成为一个几乎没有短板的数据库。

Postgres forks & variants

  • Greenplum,PB级并行分析数据库,BI工具,可以合MADlib一起做挖掘分析,最新版兼容postgresql 9.2
  • Postgres-X2,pg cluster
  • Cockroachdb,Autoscaling DB,TiDB的竞品,不过是兼容Postgres协议和语法
  • Redshift,亚马逊的Cloud db,一般用于数据仓库,fork的fork,兼容postgresql 8.2语法

更多:https://wiki.postgresql.org/wiki/PostgreSQL_derived_databases

Learn Postgres

之前看到过一段话(并没有故意黑MongoDB):

刚入职场的年轻工程师如何判断他/她所要投资的技术是像2006年左右的 Rails、2007年左右的 Hadoop、还是更像2010年前后的 MongoDB?有点像投资创业公司,如何押对宝?还是尽量选择无聊的成熟的老技术、专注于解决实际问题、白猫黑猫抓到老鼠就是好猫?

个人认为,Postgres应该是2019最值得投资的一项技能,没有之一。

共收到 37 条回复
jasl 将本帖设为了精华贴 11月24日 04:49

炮神可以分享一下你的 PG 学习路线吗?

炮哥,这马上 9012 年了

初步使用中

huobazi 回复

那就2019咯

coderliu 回复

用了快两年了吧,主要自己看看文档和相关领域专家的blog吧

分析很赞!

还有 PG-Strom, "Postgres on GPU", 不过不知道是否 Production Ready.

这是要用SQL写模型吗。。。。

cqcn1991 回复

不一定是sql写模型,可以plpython plr结合的,你可以参考下madlib的源码,但使用的时候少了导入导出和ETL部分,过滤的话sql本身就替代了pandas

ksec 回复

great 👏

非常棒,最近看了一款图数据库,arangodb,也让人很喜欢,但还不成熟

kran 回复

牛油果对标的应该是芒果吧,对自己发明一套查询语法的DB没好感,要学的太多,记不住...

所以我现在很期待 DO 推出的 Managed Postgres........ 😍 ( 不要太昂贵便好了 )

ksec 回复

Managed DB问题就是预装extension有限,这方面做的好的是阿里云RDS,预装extension非常全,可能和他们自己也在使用有关吧

已入坑

redshift 是 license 的 ParAcell 的 产品 不过现在 aws 自己也做了很多功能,挖了很多过去做 mpp 的人 https://www.quora.com/How-did-Amazon-decide-to-go-with-ParAccel-for-Redshift

可以的

"作为一个死宅,并不觉得定期TB是一种福利,看到招聘帖里有心里默默减1分,强调有美女减2分,期权减两分,SVN减5分,mongodb减5分" 就你皮

liprais 回复

aws还有一个aurora看起来很厉害:https://aws.amazon.com/cn/rds/aurora/

hooopo 回复

我有几个前老板在做 aurora,是挺牛的

期待《跟炮哥学 Postgres》!

虽然没怎么看过Postgres不过看着有点心动。

十分好用

这本书知不道有看过的没?想了解下是否值得购买。 https://masteringpostgresql.com/

ted 回复

买过,看你想入门还是已经有经验了,有经验了的话不建议买。

hooopo 回复

我有很基础的SQL知识(平时大多都是写前端逻辑),就想好好学习下数据库,不需要太深入,希望侧重了解应用层面,譬如规划表结构、索引等的最佳实践,以开发出稳定高效的数据后台。不知道这本书合适不呢?

ted 回复

89美元很贵吗?买了自己看嘛

nouse 回复

嗯,是有点贵。之前难道点错了,回复的你?

hooopo 回复

期待文章,话说面了一圈回来,全是在用mysql,没公司用postgres的……

MySQL是web 2.0时代的产物啊,LAMP标配,不过新项目的话,pg还是最佳选择。

所以 PG + Rails 是 Web 2.5 吗 😂

玩了下 hasura 感觉不错

lidashuang 回复

算BaaS了吧

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册