云时代,我们需要PostgreSQL,需要服务端编程

less than 1 minute read

背景

云为我们提供了便利,降低了开发和运维的成本。

但是也必须思考一个问题,我们的云组件之间的的网络延迟?

(相比较局域网的服务器和服务器之间)

你可以用各种方法测试验证一下。

以往我们把数据放在数据库,数据库只提供简单的增删改查,大部分的业务逻辑放在应用服务器来完成。

但是在云时代,如果我们还这样的话,应用服务器和数据库间如果多次交互,会浪费大量的时间。

我们应该充分利用数据库的编程能力,例如PostgreSQL,是一个功能非常强大的数据库,我们完全可以把业务逻辑放在数据库处理,

例如使用plv8, plpython, plpgsql, plperl, pltcl等函数语言,

数据类型支持也非常的丰富,例如jsonb, GIS, text, 异构类型,Key-Value类型…等,

索引支持btree, hash, gin , gist, spgist, brin等索引类型,

SQL语法层面支持 窗口查询,递归查询,grouping set, 等高级语法。

JOIN方面,支持hash join , merge join , nestloop join ,

优化器方面,支持自定义成本因子, CBO , 遗传算法等。

另外PostgreSQL更强大之处,可以利用GPU加速运算,包括隐式加速,也可以显示加速。

隐式指数据库自身提供的custom scan provider编程接口,已经有实现了的插件。

显式,指的是过程语言和CUDA的结合,例如PyCUDA。

还可以用Julia来方便的实现并行编程。

PostgreSQL完全可以满足大多数业务的需求。

功能如此强大的数据库,只用来做增删改查,是不是有点浪费呢,充分利用它的功能,当网络是瓶颈的时候,让业务逻辑和数据靠近,可以大大提升效率,降低RT。mapreduce也是这种思想。

当然,另一方面,我们还需要考虑业务和数据的耦合,太耦合了也不好。

Flag Counter

digoal’s 大量PostgreSQL文章入口