首页>参考读物>计算机科学与技术>数据库

PostgreSQL服务器编程
作者 : (美)Hannu Krosing, Jim Mlodgenski, Kirk Roybal 著
译者 : 戚长松 译
丛书名 : 数据库技术丛书
出版日期 : 2014-10-11
ISBN : 978-7-111-48057-0
定价 : 49.00元
扩展资源下载
扩展信息
语种 : 简体中文
页数 : 194
开本 : 16
原书名 : PostgreSQL Server Programming
原出版社: Packt Publishing Ltd.
属性分类: 店面
包含CD :
绝版 : 未绝版
图书简介

图书特色

本书特色
本书由资深PostgreSQL专家撰写,系统讲解PostgreSQL服务器编程的方方面面,Amazon全五星评价。书中通过丰富的实例,循序渐进阐释PostgreSQL开发和扩展的相关概念及各种实用技术,包含大量实用技巧和窍门,为快速掌握PostgreSQL服务器编程提供系统实践指南。
全书共10章:第1章介绍PostgreSQL服务器编程的性能;第2章从PostgreSQL的商业与技术优势等角度讨论PostgreSQL的开发环境;第3章介绍PL/pgSQL函数,涵盖其基础结构和关键组成部分;第4章介绍返回结构化数据的功能,并展示如何将复杂数据返回给一个应用程序;第5章通过一些相关案例探究PL/pgSQL触发器函数;第6章展示如何对服务器端程序进行调试;第7章介绍如何使用Python进行服务器端开发;第8章深入探讨如何使用原生的C代码进行PostgreSQL扩展;第9章主要阐述如何通过PL/Proxy扩展数据库;第10章讨论PostgreSQL扩展程序网络架构,包括如何将代码模块发布到开源社区。
PostgreSQL可以为你提供所有在你擅长的开发语言中可以实现的功能,并且可以在数据库服务器上扩展这些功能。在蓬勃发展的商业市场中,如果你掌握了足够的PostgreSQL相关知识,你将有能力应对当前人才市场对高级PostgreSQL技能的强烈需求。
本书将向你展示出PostgreSQL远远不止是一个数据库服务器。实际上,它是一个应用程序开发框架,这种框架的优势在于其具备事务支持、大量数据存储、日志系统、恢复等功能,以及许多PostgreSQL引擎提供的优秀特性。
本书将带你学习PostgreSQL函数的基础部分。在学习过程中,你将会使用各种程序语言(不限于自带的PL/pgSQL语言)进行函数的编写。

通过阅读本书,你将学到
编写函数并创建你自己的数据类型,所有这些都可以用你擅长的编程语言实现。
使用内置的PL/pgSQL编程语言,编写和调试函数与触发器。
从外部数据源抽取数据。
安装与管理扩展应用,创建与发布你自己的扩展应用。
决定你的程序将使用什么样的硬件资源。
如何使用你自己的开发语言来扩展数据库内核,使其拥有你自己的特性。
作者简介
Hannu Kosing Skype公司第一位数据库管理员与数据库架构师。2006年离开Skype之后,他成为2ndQuadrant公司的首席PostgreSQL咨询顾问,足迹遍布全球各地。Hannu自1995年开始使用PostgreSQL,有近20年的PostgreSQL实战经验。
Jim Mlodgenski OpenSCG公司CTO,OpenSCG是一家专注于开源技术的专业服务公司。他还曾是StormDB的CEO,StormDB是一家致力于水平扩展的云数据库公司。在加入StormDB之前,Jim是Cirrus Technology、EnterpriseDB和Fusion Technology等公司的资深研发工程师。Jim非常拥护PostgreSQL,他是美国PostgreSQL协会的董事会成员,同时也是纽约PostgreSQL用户组和费城PostgreSQL用户组的重要成员。
Kirk Roybal 从1998年开始就活跃于PostgreSQL社区。他帮助建立了休斯敦、达拉斯、伯明顿等地区的PostgreSQL用户组。他在报告系统、商业智能、数据仓库、应用程序开发等领域均提供了优秀的PostgreSQL解决方案。

译者简介
戚长松 拥有浙江大学机械工程硕士学位,专注于企业数据库开发与基于数据库的应用程序设计,拥有近10年的数据库开发经验及5年的PostgreSQL实战经验,擅长基于PostgreSQL平台进行数据仓库建模与数据挖掘。

图书前言

PostgreSQL服务器远远不只是一台数据库服务器。实际上,PostgreSQL甚至可以承担起一个应用程序开发框架的角色,这个框架的优势在于其具备事务支持、大量数据存储、日志记录、系统恢复等功能,以及PostgreSQL引擎提供的许多优秀特性。在蓬勃发展的商业化时代,如果你掌握了足够的PostgreSQL相关知识,你将有能力满足当前人才市场对高级PostgreSQL技能的强烈需求。
  本书将带你学习PostgreSQL函数基础知识。在学习过程中,你将会使用各种程序语言(不限于自带的PL/pgSQL语言)进行函数的编写。这里你会看到我们如何创建可用的库文件,如何将这些库文件组装成更有用的组件,并把这些组件分发到社区中;你也会看到我们如何从大量外部数据源中抽取数据,并通过扩展PostgreSQL完成数据的本地化处理;同时,你也可以在以上过程中使用一个超级棒的调试界面,这个调试界面可以让你更加高效与放心地完成工作。
本书主要内容
  第1章介绍了PostgreSQL程序设计的功能。该章阐述了服务器程序设计的基本概念,并通过一些真实案例来衡量评估这项技术。
  第2章讨论了PostgreSQL的开发环境。该章从PostgreSQL的商业优势与技术优势等角度出发,举例说明了人们为什么会选择在PostgreSQL中编程。
  第3章介绍了PL/pgSQL这种存储过程语言。该章主要介绍了函数的基础结构和函数的几个关键组成部分。
  第4章在对PL/pgSQL介绍的基础之上,介绍了返回结构化数据的功能,并展示了怎么将复杂的数据返回给一个应用程序。其中采用了几种不同的方法,并对每种方法的优缺点进行了对比分析。
  第5章主要探究了如何基于数据库中发生的事件而触发执行服务端处理逻辑。该章介绍了触发器的概念,并对一些相关案例进行深入讨论。
  第6章展示了如何对服务端程序进行调试。该章首先介绍了基于日志的简单通知机制,继而阐述了如何使用交互式的图形调试器进行调试工作。
  第7章重点关注了 PL/pgSQL语言之外的其他服务端开发语言。该章选择了Python作为开发语言,通过函数在数据库外完成其他处理工作。
  第8章深入探讨了我们该如何使用原生的C代码进行PostgreSQL扩展。通过几个详细的实例,阐述了几种基础理念,这几种理念可以大大增强PostgreSQL的原生开发功能。
  第9章主要阐述了另外一种存储过程语言,这种语言可以让PostgreSQL超越单一的物理服务器。同时该章也讨论了一些实用的技术,通过这些技术可以高效地拆分数据,从而进行服务器扩展。
  第10章讨论了PostgreSQL扩展程序网络架构,包括如何将代码模块发布到开源社区。
阅读前的准备工作
  为了能够顺利学习本书示例,你需要安装以下软件:
  Ubuntu 12.04 LTS
  PostgreSQL 9.2或更新版本的服务器
本书的读者对象
  本书是面向中高级PostgreSQL数据库专业人员的书籍。为了更好地理解本书,你应该有一些编写普通SQL语句的经验、查询优化的基本思路和一些使用自己选择的语言进行代码编写的经验。

上架指导

计算机\数据库

封底文字

PostgreSQL可以为你提供所有在你擅长的开发语言中可以实现的功能,并且可以在数据库服务器上扩展这些功能。在蓬勃发展的商业市场中,如果你掌握了足够的PostgreSQL相关知识,你将有能力应对当前人才市场对高级PostgreSQL技能的强烈需求。
本书将向你展示出PostgreSQL远远不止于一个数据库服务器。实际上,它是一个应用程序开发框架,这种框架的优势在于其具备事务支持、大量数据存储、日志系统、恢复等功能,以及许多PostgreSQL引擎提供的优秀特性。
本书将带你学习PostgreSQL函数的基础部分。在学习过程中,你将会使用各种程序语言(不限于自带的PL/pgSQL语言)进行函数的编写。

通过阅读本书,你将学到
 编写函数并创建你自己的数据类型,所有这些都可以用你擅长的编程语言实现。
 使用内置的PL/pgSQL编程语言,编写和调试函数与触发器。
 从外部数据源抽取数据。
 安装与管理扩展应用,创建与发布你自己的扩展应用。
 决定你的程序将使用什么样的硬件资源。
 如何使用你自己的开发语言来扩展数据库内核,使其拥有你自己的特性。

作者简介

(美)Hannu Krosing, Jim Mlodgenski, Kirk Roybal 著:暂无简介

译者简介

戚长松 译:暂无简介

图书目录

前 言
第1章 PostgreSQL服务器简介 1
1.1 为什么在服务器中进行程序设计 2
1.2 关于本书的代码示例 5
1.3 超越简单函数 7
1.4 使用触发器管理相关数据 8
1.5 审核更改 11
1.6 数据清洗 16
1.7 定制排序方法 17
1.8 程序设计最佳实践 18
1.8.1 KISS——尽量简单(keep it simple stupid) 18
1.8.2 DRY——不要写重复的代码(don’t repeat yourself) 19
1.8.3 YAGNI——你并不需要它(you ain’t gonna need it) 19
1.8.4 SOA——服务导向架构(service-oriented architecture) 19
1.8.5 类型的扩展 20
1.9 关于缓存 21
1.10 总结——为什么在服务器中进行程序设计 21
1.10.1 性能 21
1.10.2 易于维护 22
1.10.3 保证安全的简单方法 22
1.11 小结 22
第2章 服务器程序设计环境 24
2.1 购置成本 25
2.2 开发者的可用性 26
2.3 许可证书 26
2.4 可预测性 27
2.5 社区 28
2.6 过程化语言 28
2.6.1 平台兼容性 29
2.6.2 应用程序设计 30
2.6.3 更多基础 32
2.7 小结 35
第3章 第一个PL/pgSQL函数 36
3.1 为什么是PL / pgSQL 36
3.2 PL/pgSQL函数的结构 37
3.3 条件表达式 39
3.3.1 通过计数器循环 43
3.3.2 对查询结果进行循环 45
3.3.3 PERFORM与SELECT 47
3.4 返回记录 47
3.5 处理函数结果 50
3.6 结论 51
第4章 返回结构化数据 52
4.1 集合与数组 52
4.2 返回集合 53
4.3 使用返回集合的函数 54
4.4 基于视图的函数 56
4.5 OUT参数与记录集 59
4.5.1 OUT参数 59
4.5.2 返回记录集 60
4.5.3 使用RETURNS TABLE 61
4.5.4 不返回预定义结构 62
4.5.5 返回SETOF ANY 63
4.5.6 可变参数列表 65
4.6 RETURN SETOF变量总结 66
4.7 返回游标 66
4.7.1 对从另一个函数中返回的游标进行迭代处理 68
4.7.2 函数返回游标(多个游标)的小结 69
4.8 处理结构化数据的其他方法 69
4.8.1 现代复杂数据类型——XML和JSON 69
4.8.2 XML数据类型和从函数中返回XML数据 70
4.8.3 以JSON格式返回数据 72
4.9 小结 74
第5章 PL/pgSQL触发器函数 75
5.1 创建触发器函数 75
5.2 简单的“嘿,我被调用了”触发器 76
5.3 审核触发器 79
5.4 无效的DELETE 81
5.5 无效的TRUNCATE 83
5.6 修改NEW记录 83
5.7 不可改变的字段触发器 84
5.8 当触发器被调用时的控制策略 85
5.8.1 有条件的触发器 86
5.8.2 在特定字段变化的触发器 87
5.9 可视化 87
5.10 传递给PL/pgSQL TRIGGER函数的变量 88
5.11 小结 88
第6章 PL/pgSQL调试 90
6.1 使用RAISE NOTICE进行“手动”调试 91
6.1.1 抛出异常 92
6.1.2 文件日志 94
6.2 可视化调试 95
6.2.1 安装调试器 96
6.2.2 安装pgAdmin3 96
6.2.3 使用调试器 96
6.3 小结 98
第7章 使用无限制的开发语言 99
7.1 不受信任的语言是否比受信任的语言差 99
7.2 不受信任的语言是否会拖垮数据库 100
7.3 为什么不受信任 100
7.4 PL/Python快速介绍 101
7.4.1 最小的PL/Python函数 101
7.4.2 数据类型转换 102
7.4.3 使用PL/Python编写简单函数 103
7.4.4 在数据库中运行查询 106
7.4.5 使用PL/Python编写触发器函数 108
7.4.6 构建查询 113
7.4.7 处理异常 113
7.4.8 Python中的原子性 115
7.4.9 PL/Python调试 116
7.5 跳出“SQL 数据库服务器”的限制进行思考 119
7.5.1 在保存图像时生成缩略图 119
7.5.2 发送一封电子邮件 120
7.6 小结 121
第8章 使用C编写高级函数 122
8.1 最简单的C函数——返回(a+b) 123
8.1.1 add_func.c 123
8.1.2 Makefile 125
8.1.3 创建add(int,int)函数 126
8.1.4 add_func.sql.in 126
8.1.5 关于写C函数的总结 127
8.2 为add(int, int)添加功能 127
8.2.1 NULL参数的智能处理 128
8.2.2 与任何数量的参数一起运作 129
8.3 C函数编写的基础指南 134
8.4 来自C函数的错误报告 136
8.4.1 并非错误的“错误”状态 136
8.4.2 消息何时被发送到客户端 137
8.5 运行查询与调用PostgreSQL函数 137
8.5.1 使用SPI的示例C函数 138
8.5.2 数据更改的可见性 139
8.5.3 SPI_*函数的更多相关信息 140
8.6 将记录集作为参数或返回值处理 140
8.6.1 返回复杂类型的单个元组 141
8.6.2 从参数元组中提取字段 143
8.6.3 构建一个返回元组 143
8.6.4 插曲——什么是Datum 144
8.6.5 返回一个记录集 144
8.7 快速获取数据库变更 147
8.8 在提交/回滚时处理情况 148
8.9 在后端间进行同步 148
8.10 C语言的额外资源 149
8.11 小结 149
第9章 使用PL/Proxy扩展数据库 151
9.1 简单的单服务器通话 151
9.2 处理跨多数据库的成功分表 157
9.2.1 什么扩展计划有用和什么时候有用 158
9.2.2 跨多服务器的数据分区 158
9.2.3 PL/Proxy——分区语言 162
9.2.4 从单数据库移动数据到分区的数据库 168
9.3 小结 169
第10章 发布自己的PostgreSQL扩展程序 170
10.1 什么时候创建扩展程序 170
10.2 未封装的扩展程序 171
10.3 扩展程序版本 172
10.4 .control文件 173
10.5 构建扩展程序 173
10.6 安装扩展程序 174
10.7 发布扩展程序 175
10.7.1 关于PostgreSQL Extension Network的简介 175
10.7.2 注册以发布扩展程序 176
10.7.3 创建扩展项目的简单方法 178
10.7.4 提供扩展程序的相关元数据 179
10.7.5 编写扩展代码 182
10.7.6 创建程序包 183
10.7.7 向PGXN提交程序包 183
10.8 安装PGXN上的扩展程序 185
10.9 小结 185

教学资源推荐
作者: (葡)Luis Torgo 著
作者: [英]托马斯 M. 康诺利(Thomas M. Connolly) 卡洛琳 E. 贝格(Carolyn E. Begg)著
作者: 王丽艳 郑先锋 刘亮 编著 陈昌志 主审