Postgres2015全国用户大会将于11月20至21日在北京丽亭华苑酒店召开。本次大会嘉宾阵容强大,国内顶级PostgreSQL数据库专家将悉数到场,并特邀欧洲、俄罗斯、日本、美国等国家和地区的数据库方面专家助阵:
- Postgres-XC项目的发起人铃木市一(SUZUKI Koichi)
- Postgres-XL的项目发起人Mason Sharp
- pgpool的作者石井达夫(Tatsuo Ishii)
- PG-Strom的作者海外浩平(Kaigai Kohei)
- Greenplum研发总监姚延栋
- 周正中(德哥), PostgreSQL中国用户会创始人之一
- 汪洋,平安科技数据库技术部经理
- ……
|
|
PostgreSQL数据库如何利用NoSQL数据库的强大计算能力或某些特性呢?
这个问题实际上是因为一种数据库不可能做到适合任何场景,一个企业的不同业务类型可能使用的数据产品也千差万别。昨天和一位朋友聊到一个应用场景,他们有部分数据是存储在aerospike的,在aerospike中做BIT运算是很快的,但是当需要多个条件的组合时(多级索引),可能就不是那么适合了。
这个时候PostgreSQL就派上用场了,将aerospike中的KEY存储到PostgreSQL中,还有多级索引涉及的字段内容也存储到PostgreSQL中,VALUE(bitmap)还是存储在aerospike中。
这么做之后,原来的查询就变成PostgreSQL中的查询了,但是如何才能结合aerospike中的bit运算结果呢?这个时候需要使用PostgreSQL的UDF功能,参考本文参考部分,例如aerospike支持python,那么我们就在PostgreSQL中使用PL/python语言来编写这个UDF。
使用UDF可以很好的调动外部数据源的计算能力。目前PostgreSQL支持多种语言的函数,例如C,python,perl,tcl,java,javascript,R等等。
当然除了UDF,实际上PostgreSQL还有FDW,只是不是所有的数据源目前都有开源的FDW,所以UDF使用起来门槛更低,还有一点,并不是所有的查询FDW都支持where条件的push down,所以这个时候还是要靠UDF。
目前PostgreSQL支持的FDW请参考:
UDF这种用法,其实在其他产品中也屡见不鲜,例如R的pivotalR包,也可以认为是一种UDF包,它实际上是在Greenplum或HAWQ中执行相应的SQL语句,并将数据返回给R,这正是R利用MPP的数据处理能力的一种手段。与本文在PostgreSQL中使用UDF利用aerospike的计算能力的思路是一样的。