编辑推荐

PostgreSQL是一个极其灵活且可靠的开源关系型数据库。借助它的这个神奇功能,你可以在不增加任何费用的情况下,使应用程序变得更加可靠和更具扩展性。一旦掌握了如何设置PostgreSQL并利用它的高级功能,你便可以节省工时,提高工作效率。

数据架构师的PostgreSQL修炼:高效设计、开发与维护数据库应用》是一个针对数据库架构师的实用操作指南,提供了一种实用的方法来学习数据库架构和设计。作者从数据架构师的角度详细阐述PostgreSQL生态系统相关的工具和技术,包括从源码中安装数据库、使用SQLPowerArchitect设计表以及复制决策和故障转移策略。

通过阅读《数据架构师的PostgreSQL修炼:高效设计、开发与维护数据库应用》,你将学到:
使用源码编译PostgreSQL并了解PostgreSQL架构
为PostgreSQL服务器配置参数和改变默认设置
利用日志机制来识别错误和优化查询
使用复制进行横向扩展
建立备份和恢复进程
通过参数调节来优化查询和进程
排除连接故障
使用索引和重写查询来提高性能
安装和使用PostgreSQL扩展
学习如何利用命令行客户端(psql)

内容简介

PostgreSQL是一个极其灵活且可靠的开源关系型数据库。借助它的这个神奇功能,你可以在不增加任何费用的情况下,使应用程序变得更加可靠和更具扩展性。一旦掌握了如何设置PostgreSQL并利用它的高级功能,你便可以节省工时,提高工作效率。
数据架构师的PostgreSQL修炼:高效设计、开发与维护数据库应用》将教你如何构建及运行一个已优化的可扩展PostgreSQL服务器。
数据架构师的PostgreSQL修炼:高效设计、开发与维护数据库应用》始于基本概念(例如,从源代码中安装PostgreSQL),并逐渐深入理论部分(例如,并发性和事务管理)。在此之后,你将学习如何设置副本、使用负载均衡进行水平扩展,以及排除故障。
最后,你将接触到PostgreSQL生态系统中那些有用的工具,它们被用来分析PostgreSQL日志、设置负载均衡和进行数据恢复。

作者简介

作者简介

杰亚德万·梅马拉(JayadevanMaymala)
资深数据库开发工程师、设计师和架构师。他于1999年在甲骨文(Oracle)的数据库部门工作,多年以来,研究并使用过DB2、Sybase和SQLServer等数据库产品。最近,他一直致力于开源技术的研究。

译者简介

戚长松 工学硕士,毕业于浙江大学机械工程系,专注于互联网行业数据库开发与基于数据库的应用研究,拥有近10年的数据库应用经验及5年的PostgreSQL数据库实战经验,近期专注于基于大数据平台的数据挖掘工作。近年来,作为负责人及研究人员参与完成浙江省科技创新课题5项;作为软件工程项目设计和项目管理人员,先后完成十多个大数据应用项目。曾翻译《PostgreSQL服务器编程》。

目录

作者简介
审校者简介
前 言
第1章 安装PostgreSQL1
1.1 安装选项1
1.1.1 下载并提取源码2
1.1.2 检查源码内容3
1.2 编译源码的各种依赖3
1.3 配置和创建makefile4
1.4 建立和创建可执行文件6
1.5 安装和移动文件到指定的位置7
1.6 初始化集群9
1.6.1 快速了解各个目录11
1.6.2 已创建的进程13
1.6.3 创建的重要文件14
1.7 与扩展程序相互协作14
1.8 小结15
第2章 服务器架构16
2.1 从守护进程开始16
2.2 理解共享缓冲区18
2.3 检查点23
2.4 WAL与WAL写进程25
2.4.1 恢复26
2.4.2 增量备份和基于时间点的恢复26
2.4.3 复制27
2.5 后台写入器28
2.6 自动清空加载器进程29
2.7 日志进程32
2.8 统计信息收集器进程35
2.9 WAL发送器和WAL接收器38
2.10 使用work_mem在内存中进行排序38
2.11 使用maintenance_work_mem进行维护40
2.12 小结42
第3章 PostgreSQL——对象层次和角色43
3.1 PostgreSQL集群43
3.2 了解表空间44
3.2.1 使用临时表空间管理临时对象46
3.2.2 视图48
3.3 数据库、模式与search_path48
3.4 角色和权限53
3.5 小结56
第4章 使用事务进行工作57
4.1 了解事务57
4.2 PostgreSQL和MVCC67
4.3 小结70
第5章 使用SQLPowerArchitect进行数据建模71
5.1 数据库工具及其用途71
5.2 数据库设计工具72
5.2.1 下载与安装SQLPowerArchitect73
5.2.2 创建表74
5.3 生成SQL75
5.3.1 逆向工程及变更操作77
5.3.2 导出数据模型78
5.3.3 分析78
5.4 小结79
第6章 客户端工具80
6.1 GUI工具与命令行工具80
6.2 下载与安装pgAdmin80
6.2.1 添加一台服务器81
6.2.2 pgAdmin主窗口82
6.2.3 查询工具84
6.3 psql——在命令行模式下工作86
6.3.1 psql——连接选项86
6.3.2 \d的功能87
6.3.3 更多元命令89
6.3.4 设置环境91
6.3.5 命令的历史记录92
6.4 小结92
第7章 SQL调优93
7.1 了解数据库的基本事实93
7.1.1 事实1,数据库中读比写更频繁93
7.1.2 事实2,数据始终在块或页面中读取,而不是作为单独的记录或列94
7.1.3 减少读/写块的数量的方法94
7.2 查询执行组件95
7.2.1 计划器95
7.2.2 访问方法95
7.2.3 连接策略96
7.3 发现执行计划96
7.4 优化指南和捕捉98
7.4.1 外键索引99
7.4.2 使用SELECT*100
7.4.3 使用ORDERBY100
7.4.4 使用DISTINCT101
7.4.5 使用UNIONALL代替UNION102
7.4.6 在FILTER子句中使用函数102
7.4.7 减少SQL语句数量104
7.4.8 减少函数执行105
7.4.9 不使用索引的情况107
7.4.10 部分索引108
7.4.11 优化函数109
7.5 小结110
第8章 服务器调优111
8.1 服务器端内存设置111
8.1.1 shared_buffers111
8.1.2 effective_cache_size112
8.2 管理写入、连接和维护操作113
8.3 查找/扫描开销及统计参数114
8.4 物化视图119
8.5 分区表121
8.6 小结125
第9章 PostgreSQL写入与读取数据工具126
9.1 考虑建立生产数据库126
9.2 COPY命令127
9.3 使用pg_bulkload快速加载130
9.4 pg_dump命令131
9.5 过滤选项133
9.5.1 pg_dumpall工具133
9.5.2 pg_restore工具133
9.6 小结135
第10章 扩展、复制、备份和恢复136
10.1 可扩展性136
10.1.1 垂直扩展137
10.1.2 水平扩展138
10.2 基于时间点的恢复154
10.3 小结157
第11章 PostgreSQL故障排除158
11.1 连接问题158
11.2 验证和权限问题159
11.3 参数更改无效161
11.4 查询无响应162
11.5 小结165
第12章 PostgreSQL额外功能166
12.1 有趣的数据类型166
12.1.1 range166
12.1.2 XML174
12.1.3 几何与地理数据175
12.1.4 外部数据封装器175
12.1.5 pgbadger178
12.2 变化中的产品特性180
12.3 小结183

前言/序言

PrefacePostgreSQL是一个极其灵活且可靠的开源关系型数据库。借助它的这般神奇功能,可以在不增加任何费用的情况下,将应用程序变得更加可靠和更具扩展性。一旦掌握了如何设置PostgreSQL并利用它的高级功能,便可节省工时,提高工作效率。
数据架构师的PostgreSQL修炼:高效设计、开发与维护数据库应用》将教你如何构建及运行一个可扩展且已经优化的PostgreSQL服务器。
数据架构师的PostgreSQL修炼:高效设计、开发与维护数据库应用》始于基本概念(例如从源代码中安装PostgreSQL),并逐渐深入理论部分(例如并发性和事务管理)。在此之后,你将学习如何设置副本、使用负载均衡进行水平扩展以及排除故障。
继续阅读《数据架构师的PostgreSQL修炼:高效设计、开发与维护数据库应用》,你将看到配置参数对性能、可扩展性以及事务管理所产生的显著影响。最后,你将接触到PostgreSQL生态系统中那些有用的工具,它们用来分析PostgreSQL日志、设置负载均衡和恢复数据。
数据架构师的PostgreSQL修炼:高效设计、开发与维护数据库应用》主要内容第1章概括性地介绍如何从源代码中安装PostgreSQL。该章内容列举了从源代码中进行编译的先决条件,并说明了如何在UNIX/Linux环境中初始化一个集群。同时,该章也涵盖了《数据架构师的PostgreSQL修炼:高效设计、开发与维护数据库应用》的目录结构。
第2章描述启动PostgreSQL集群时所涉及的重要进程,同时介绍了这些进程如何与内存结构相互协作,从而实现一个数据库管理系统所应有的功能。
第3章解释各种对象类型以及PostgreSQL所提供的各种对象。同时,该章也阐述了各种重要的概念,例如数据库、集群、表空间和模式。
第4章涵盖事务所涉及的ACID属性、隔离级别以及PostgreSQL是如何提供这些功能的。同时,该章也探讨了多版本并发控制这个话题。
第5章讨论如何使用SQLPowerArchitect对表以及关系进行建模。同时,该章也介绍了在选择设计工具时需要考虑的一些注意事项。
第6章介绍了两个客户端工具(pgAdmin:一个用户界面工具,psql:一个命令行工具)。该章介绍了如何使用pgAdmin浏览数据库对象、生成查询并为查询产生执行计划。同时,该章也阐述了如何在psql中为psql连接建立环境变量、查看SQL命令的历史执行记录以及元命令。
第7章说明各种查询优化技术。为了便于读者理解,该章也列举了一些数据库使用相关的范例以及PostgreSQL优化器的工作原理。
第8章介绍对查询性能具有显著影响的PostgreSQL服务器设置。这些设置包括内存设置、开销设置等。同时该章也介绍了两种对象类型:分区和物化视图。
第9章介绍相关的常用工具,例如pg_dump、pg_bulkload以及用于PostgreSQL导入与读取数据的copy功能。
第10章介绍实际操作中的常用方法。该章一步一步地介绍如何使用PostgreSQL的流复制以及pgpool-II来实现水平扩展。同时,该章也介绍PostgreSQL中基于时间点的恢复。
第11章列举开发者在使用PostgreSQL时经常会遇到的一些问题,并阐述如何解决这些问题。同时,该章也说明连接问题、权限问题与参数设置问题。
第12章引入不少讨论话题,列举每一名数据架构师都应当注意的一些有趣的数据类型、一些真正有用的扩展,以及一个用来分析PostgreSQL日志文件的工具。同时,该章也展示PostgreSQL9.4版本的一些有趣功能。
阅读《数据架构师的PostgreSQL修炼:高效设计、开发与维护数据库应用》的准备工作你必须有一台能够联网的计算机。如果这台计算机使用的是UNIX/Linux操作系统,那么将对阅读《数据架构师的PostgreSQL修炼:高效设计、开发与维护数据库应用》非常有帮助。
数据架构师的PostgreSQL修炼:高效设计、开发与维护数据库应用》的目标读者你需要接触过一些数据库,了解基本的数据库对象,如表和视图。如果之前未曾或者很少接触PostgreSQL,你会发现这《数据架构师的PostgreSQL修炼:高效设计、开发与维护数据库应用》非常有用。如果过去几年你一直在使用PostgreSQL,同样还是会从书中找到一些你不熟悉但是有用的命令,或者找到你未曾使用过的数据库优化方法。借助《数据架构师的PostgreSQL修炼:高效设计、开发与维护数据库应用》,你将更深入地了解数据库的工作原理

其他推荐