事实上之前有很长一段时间都在纠结是否有必要好好学习它,但是始终都没有一个很好的理由说服自己。甚至是直到这个项目最终决定选用PostgreSQL时,我都没有真正意识到学习它的价值,当时只是想反正和其它数据库差不多,能用就行了。然而有一天晚上,自己也不知道为什么,躺在床上开始回想整个项目的实施过程,想着想着就想到了数据库选型这一问题上了。事情是这样的,最初客户将他们的产品目标定位为主打中型规模,同时也要在一定程度上支持小型规模。鉴于此,我们为他们提供的方案是中型规模的数据库选用Oracle,小型规模的选定MySQL,在经过多轮商谈之后这个方案通过了。然而随着项目的深入,客户突然有一天提出,由于成本和市场推广等问题,该产品的数据库部分需要进行一定的调整,调整的结果是中型规模可以同时支持Oracle和MySQL,而小型规模则要同时支持MySQL和PostgreSQL,原因非常简单,PostgreSQL是纯免费的数据库产品。听到这个消息之后,我当时就非常恼火,因为当初为了保证运行时效率(国标),我们的数据库访问层是完全基于数据库供应商提供的原始C接口开发的,甚至都没有考虑ODBC提供的原始C接口,以防在转换中失去效率,或是ODBC本身为了强调通用性而不得不牺牲某些数据库的优化特征,如批量插入、批量读取等。最后的结果显而易见,客户就是上帝,上帝的意见就是真理,这样我们就不得不基于现有的访问层接口又重新开发了一套支持PostgreSQL原生C接口的驱动。然而随着对PostgreSQL的不断学习,对它的了解也在逐步加深,后来发现它的功能还是非常强大的,特别是对GIS空间数据的支持就更加的吸引我了。于是就在脑子里为MySQL和PostgreSQL做了一个简单的对比和分析,最后得出一个结论,相比MySQL,PostgreSQL并没有什么刚性的缺点,但是它的纯免费特征确实是MySQL无法比拟的。它完全可以成为软件产品解决方案中非常重要的一环,特别是针对很多中低端用户,不仅在使用中不会感到任何差异,而且还能节省一部分额外的费用,这对于产品的市场推广是非常有帮助的。想到这里便决定起而行之,花上一段时间好好的学习和研究它,于是就有了这个系列的博客。
好了,闲淡扯的差不多了,让我们还是言归正传吧! PostgreSQL学习手册(数据表) 一、表的定义 二、系统字段 三、表的修改 四、权限PostgreSQL学习手册(模式Schema)PostgreSQL学习手册(表的继承和分区) 一、表的继承 二、分区表PostgreSQL学习手册(常用数据类型) 一、数值类型 二、字符类型 三、日期/时间类型 四、布尔类型 五、位串类型 六、数组 七、复合类型PostgreSQL学习手册(函数和操作符<一>) 一、逻辑操作符 二、比较操作符 三、数学函数和操作符 四、字符串函数和操作符 五、位串函数和操作符PostgreSQL学习手册(函数和操作符<二>) 六、模式匹配 七、数据类型格式化函数 八、时间/日期函数和操作符PostgreSQL学习手册(函数和操作符<三>) 九、序列操作函数 十、条件表达式 十一、数组函数和操作符 十二、系统信息函数 十三、系统管理函数PostgreSQL学习手册(索引) 一、索引的类型 二、复合索引 三、组合多个索引 四、唯一索引 五、表达式索引 六、部分索引 七、检查索引的使用PostgreSQL学习手册(事物隔离)PostgreSQL学习手册(性能提升技巧) 一、使用EXPLAIN 二、批量数据插入PostgreSQL学习手册(服务器配置) 一、服务器进程的启动和关闭 二、服务器配置 三、内存相关的参数配置PostgreSQL学习手册(角色和权限) 一、数据库角色 二、角色属性 三、权限 四、角色成员PostgreSQL学习手册(数据库管理) 一、概述 二、创建数据库 三、修改数据库配置 四、删除数据库 五、表空间PostgreSQL学习手册(数据库维护) 一、恢复磁盘空间 二、更新规划器统计 三、VACUUM和ANALYZE的示例 四、定期重建索引 五、观察磁盘使用情况PostgreSQL学习手册(系统表) 一、pg_class 二、pg_attribute 三、pg_attrdef 四、pg_authid 五、pg_auth_members 六、pg_constraint 七、pg_tablespace 八、pg_namespace 九、pg_database 十、pg_indexPostgreSQL学习手册(系统视图) 一、pg_tables 二、pg_indexes 三、pg_views 四、pg_user 五、pg_roles 六、pg_rules 七、pg_settingsPostgreSQL学习手册(客户端命令<一>) 零、口令文件 一、createdb 二、dropdb 三、reindexdb 四、vacuumdb 五、createuser 六、dropuserPostgreSQL学习手册(客户端命令<二>) 七、pg_dump 八、pg_restore 九、psqlPostgreSQL学习手册(SQL语言函数) 一、基本概念 二、基本类型 三、复合类型 四、带输出参数的函数 五、返回结果作为表数据源 六、返回集合的SQL函数 七、多态的SQL函数 八、函数重载PostgreSQL学习手册(PL/pgSQL过程语言) 一、概述 二、PL/pgSQL的结构 三、声明 四、基本语句 五、控制结构 六、游标 七、错误和消息