最近,TimescaleDB、PipelineDB、CitusDB相继都成为了 postgres extension,并且都达到了 production ready 状态。这让 Postgres 在各个应用领域都有着难以替代的位置,无论是 OLTP 还是 OLAP,无论什么样的应用场景。Postgres 不仅仅是一个数据库,更是一个生态系统,其中包括 SQL 生态,extension 生态,还有各种 fork 等。
当然除了上面这些重量级的插件,postgres 也有很多轻量级但超级好用的插件,比如:
如果说,做 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
相比 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 架构,成为一个几乎没有短板的数据库。
更多:https://wiki.postgresql.org/wiki/PostgreSQL_derived_databases
之前看到过一段话(并没有故意黑 MongoDB):
刚入职场的年轻工程师如何判断他/她所要投资的技术是像 2006 年左右的 Rails、2007 年左右的 Hadoop、还是更像 2010 年前后的 MongoDB?有点像投资创业公司,如何押对宝?还是尽量选择无聊的成熟的老技术、专注于解决实际问题、白猫黑猫抓到老鼠就是好猫?
个人认为,Postgres 应该是 2019 最值得投资的一项技能,没有之一。
不一定是 sql 写模型,可以 plpython plr 结合的,你可以参考下 madlib 的源码,但使用的时候少了导入导出和 ETL 部分,过滤的话 sql 本身就替代了 pandas
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 分" 就你皮
我有很基础的 SQL 知识(平时大多都是写前端逻辑),就想好好学习下数据库,不需要太深入,希望侧重了解应用层面,譬如规划表结构、索引等的最佳实践,以开发出稳定高效的数据后台。不知道这本书合适不呢?
另外推荐一下使用 google spanner 模型并兼容 pg 语法的 yugabyte 数据库:
以及连接 pg 和 elasticsearch 的 zombodb:
刚入职场的年轻工程师如何判断他/她所要投资的技术是像 2006 年左右的 Rails、2007 年左右的 Hadoop、还是更像 2010 年前后的 MongoDB?有点像投资创业公司,如何押对宝?还是尽量选择无聊的成熟的老技术、专注于解决实际问题、白猫黑猫抓到老鼠就是好猫?
但是呢,新人毕竟是新人,一头雾水,就想经常逃课的人,要考试了一样,不先看重点,而是去钻研难题,死翘翘了