PostgreSQL 介绍

刘鑫 <march.liu@gmail.com.com>

     PostgreSQL 特色及最新版


        July 20, 2010




                         .   .   .   .   .   .
我不认为这是在吹牛!




  PostgreSQL: The world’s most advanced open source database
                http://www.postgresql.org




                                         .   .    .   .   .    .
1975 - 1977




                                  INGRES 项目1




     1
         urlhttp://db.cs.berkeley.edu//papers/ERL-M85-95.pdf.
                                                       .        .   .   .   .
1983




       分布式数据库




                .   .   .   .   .   .
1983




       有序关系




              .   .   .   .   .   .
1983




       抽象数据类型




                .   .   .   .   .   .
1984




       QUEL as a data type




                             .   .   .   .   .   .
1986 年




                伯克利系的数据库研究项目:POSTGRES                                 2




    2
        urlhttp://www.pgsqldb.org/pgsqldoc-cvs/history.html
                                                       .      .   .       .   .   .
感谢领导




       Michael Stonebraker




                             .   .   .   .   .   .
感谢国家




       防务高级研究项目局(DARPA)




                    .   .   .   .   .   .
继续感谢国家




         陆军研究办公室(ARO)




                    .   .   .   .   .   .
不过都是美国的




          国家科学基金(NSF)




                    .   .   .   .   .   .
感谢民企,不过也是美国的




          ESL , Inc




                      .   .   .   .   .   .
1987 年




         第一个“演示性”系统




                  .   .   .   .   .   .
1988 年




         ACM-SIGMOD 大会




                         .   .   .   .   .   .
1989 年




         发布版本 1




                  .   .   .   .   .   .
1990 年




         发布版本 2




                  .   .   .   .   .   .
1991 年




         发布版本 3




                  .   .   .   .   .   .
1990 年




         发布版本 2




                  .   .   .   .   .   .
POSTGRES 在许多研究或实际的应用中得到了应用




                  .   .   .   .   .   .
财务数据分析系统




           .   .   .   .   .   .
喷气引擎性能监控软件包




          .   .   .   .   .   .
小行星跟踪数据库




           .   .   .   .   .   .
医疗信息数据库




          .   .   .   .   .   .
地理信息系统




         .   .   .   .   .   .
大学教学




       .   .   .   .   .   .
Illustra Information Technologies Illustra Information Technologies
           (后来并入 Informix)拿到代码并使之商业化




                                             .   .    .    .    .     .
1992 年




         成为 Sequoia 2000 科学计算项目的首要数据管理器。




                              .   .   .   .   .   .
1994 年




         Postgres 项目终止于 4.2 版




                           .    .   .   .   .   .
情何以堪……




  据说是因为用户太多了,作者觉得耽误了学术研究……




                  .   .   .   .   .   .
感谢香港!




 Andrew Yu 和 Jolly Chen 向 POSTGRES 中增加了 SQL 语言的解
                  释器,开源成为 Postgres 95




                                .   .   .   .   .   .
记得先感谢国家!




       PostgreSQL 的历程开始了!




                      .     .   .   .   .   .
完备的关系模型




          .   .   .   .   .   .
面向对象支持




         .   .   .   .   .   .
丰富的数据类型,针对多种行业的业务需要




              .   .   .   .   .   .
各种 contrib 的强力支持




               .   .   .   .   .   .
强大的 OLAP 支持




              .   .   .   .   .   .
强大的服务器端开发能力




          .   .   .   .   .   .
性能稳定,抗压能力好




         .   .   .   .   .   .
支持完整的关系数据模型




          .   .   .   .   .   .
基本的表 / 字段结构




              .   .   .   .   .   .
基本的主外键约束




           .   .   .   .   .   .
check 约束




           .   .   .   .   .   .
存储过程




       .   .   .   .   .   .
触发器




      .   .   .   .   .   .
可靠的索引支持




          .   .   .   .   .   .
各种内置的通用和专用类型




          .    .   .   .   .   .
数值——浮点和整形




            .   .   .   .   .   .
鄙视没有精确实数的“企业级”平台




       数值——精确实数 Numeric




                     .    .   .   .   .   .
出于兼容目的 varchar




                 .   .   .   .   .   .
二进制对象




        .   .   .   .   .   .
无限文本 Text




            .   .   .   .   .   .
丰富的几何类型,点、线,各种几何形状……




              .   .   .   .   .   .
位串 bits




          .   .   .   .   .   .
时间日期 / 时段类型




              .   .   .   .   .   .
IP




     .   .   .   .   .   .
UUID




       .   .   .   .   .   .
全文索引




       .   .   .   .   .   .
数组




     .   .   .   .   .   .
组合类型




       .   .   .   .   .   .
……




     .   .   .   .   .   .
PostgreSQL 可以强大到成为一个开发平台。




                  .   .   .   .   .   .
简单查询




       .   .   .   .   .   .
标准的 JOIN 关联查询




            .   .   .   .   .   .
子查询




      .   .   .   .   .   .
统一友好的基本格式是后续内容的基础




             .   .   .   .   .   .
这个其实没啥可惊喜的……




        基本的 group by 支持




                          .   .   .   .   .   .
在 8.4 版经历了一次性能优化




   确认:PG 的 Group By 是根据存储分区进行并行计算的。




                        .   .   .   .   .   .
说实话有些我还没弄懂 ==




         丰富的统计函数支持




                     .   .   .   .   .   .
Window 功能




            .   .   .   .   .   .
强劲的并发能力是复杂数据挖掘的保障




             .   .   .   .   .   .
强大的文本处理能力




            .   .   .   .   .   .
无限 TEXT




          .   .   .   .   .   .
正则表达式




        .   .   .   .   .   .
全文检索




       .   .   .   .   .   .
中文分词




       .   .   .   .   .   .
友好的函数调用方式,有效提升开发能力




             .   .   .   .   .   .
标量函数调用的缩写方式




          select foo();




                          .   .   .   .   .   .
常见的函数调用方式




        select foo(...) from ...;




                                    .   .   .   .   .   .
函数可以返回一个结果集,作为数据集操作
     select ... from foo();




                    .   .   .   .   .   .
支持命名参数和变参!




         .   .   .   .   .   .
当然,基本的 out 参数什么的,也都没有问题




                .   .   .   .   .   .
函数定义(含代码块封装格式)

CREATE FUNCTION h e l l o ( ) RETURNS TEXT AS $$
    SELECT ’ H e l l o w o r l d ’ AS r e s u l t ;
$$ LANGUAGE SQL ;




                                      .   .   .   .   .   .
安装 PLSQL




           .   .   .   .   .   .
9.0 中已经是默认安装




           .   .   .   .   .   .
在函数中使用 PLSQL




               .   .   .   .   .   .
基本格式




       .   .   .   .   .   .
变量处理




       .   .   .   .   .   .
隐式游标循环




         .   .   .   .   .   .
逻辑判断




       .   .   .   .   .   .
显式游标




       .   .   .   .   .   .
可写游标




       .   .   .   .   .   .
嵌套游标




       .   .   .   .   .   .
return




         .   .   .   .   .   .
return query




               .   .   .   .   .   .
return next




              .   .   .   .   .   .
异常与错误处理




          .   .   .   .   .   .
事务




     .   .   .   .   .   .
安装新语言




        .   .   .   .   .   .
PL/Python




            .   .   .   .   .   .
PL/Perl




          .   .   .   .   .   .
PL/Sh




        .   .   .   .   .   .
PL/Java




          .   .   .   .   .   .
自由扩展的接口




          .   .   .   .   .   .
数据分区




       .   .   .   .   .   .
分区场景中的索引




           .   .   .   .   .   .
分区场景中的查询




           .   .   .   .   .   .
冷备




     .   .   .   .   .   .
热备与温备




        .   .   .   .   .   .
slony-i




          .   .   .   .   .   .
standby




          .   .   .   .   .   .
standby 策略




             .   .   .   .   .   .
standby 策略




             .   .   .   .   .   .
索引的影响




        .   .   .   .   .   .
性能剖分




       .   .   .   .   .   .
数据库分切对性能的影响




          .   .   .   .   .   .
缓存




     .   .   .   .   .   .
锁与连接状态




         .   .   .   .   .   .
postgresql.conf




                  .   .   .   .   .   .
pg hba.conf




              .   .   .   .   .   .
其它认证方式




         .   .   .   .   .   .
设计大局观




        .   .   .   .   .   .
可靠性




      .   .   .   .   .   .
开发




     .   .   .   .   .   .
Map Reduce 与 OLAP




                    .   .   .   .   .   .
无限位串




       .   .   .   .   .   .
搜索引擎




       .   .   .   .   .   .

PostgreSQL Introduction V0.1