PostgreSQL修炼之道:从小工到专家

PostgreSQL修炼之道:从小工到专家 pdf epub mobi txt 电子书 下载 2025

唐成 著
图书标签:
  • PostgreSQL
  • 数据库
  • SQL
  • 性能优化
  • 开发
  • 运维
  • 高级
  • 教程
  • 数据管理
  • PostGIS
想要找书就要到 静流书站
立刻按 ctrl+D收藏本页
你会得到大惊喜!!
出版社: 机械工业出版社
ISBN:9787111498728
版次:1
商品编码:11684063
品牌:机工出版
包装:平装
丛书名: 数据库技术丛书
开本:16开
出版时间:2015-04-01
用纸:胶版纸
页数:521

具体描述

编辑推荐

  PostgreSQL中国社区资深数据库专家、沃趣科技首席数据库架构师撰写,PostgreSQL数据库领域经典著作

  系统讲解PostgreSQL技术内幕,深入分析PostgreSQL特色功能,包含大量来自实际生产环境的经典案例和经验总结

  PostgreSQL数据库是目前功能最强大的开源数据库,它基本上包含其他所有商业或开源数据库中你能找到的功能(如函数索引、触发器、分析函数、自定义函数等),甚至一些商业数据库中没有的功能它也有(如表列的类型支持数组类型、JSON和JSONB类型,支持空间索引等)。它提供了最接近工业标准SQL92的SQL查询语言,并且正在实现新的功能以兼容全新的SQL标准:SQL:2011。它拥有完善的基于代价(COST)的查询优化器,支持“hash join”、“sort merge join”等功能,复杂的SQL语句仍然可以被正确高效地执行。本书将结合大量的实例和经验与您全方位探讨PostgreSQL数据库相关知识。

  《PostgreSQL修炼之道:从小工到专家》的主要内容和特色:

  全面且实践性强:本书从SQL基础、安装配置、数据类型、数据库的逻辑结构等基础知识一直讲到PostgreSQL的架构、技术内幕、特色功能、Standby、数据库优化以及一些配套的开源软件的使用,覆盖了PostgreSQL领域方方面面的知识。几乎每章都有大量的示例和经验总结。

  实用与特色兼顾:书中不仅介绍了与PostgreSQL配套的实用性很强的主流开源软件(如PgBouncer、Slony-I、Bucardo、PL/Proxy、pgpool-II、Postgres-XC),还针对PostgreSQL的特色功能(如规则系统、正则表达式、序列、GiST索引等内容)进行了总结。

更多精彩,点击进入品牌店查阅>>

内容简介

  《PostgreSQL修炼之道:从小工到专家》是目前有关PostgreSQL数据库领域比较全面和系统的中文著作,内容十分丰富。全书共20章,分为四个部分。

  准备篇(1~3章)针对PostgreSQL数据库的总体概况、安装配置步骤及SQL基础知识进行了介绍。基础篇(4~8章)的内容是为了帮助对PostgreSQL数据库不是很了解的读者打好基础。这部分介绍了psql工具的使用方法, PostgreSQL数据库的数据类型和数据库对象的操作方法,以及PostgreSQL数据库的架构和数据库服务的管理等知识。提高篇(9~13章)讲解PostgreSQL的执行计划、技术内幕及特色功能,最后还介绍了解数据库优化方法和PostgreSQL Standby数据库的搭建过程。若想早日成为PostgreSQL数据库高手,请仔细阅读这一部分内容。第三方开源软件及架构篇(14~20章)介绍PostgreSQL中最常用开源连接池软件PgBouncer、逻辑复制软件Slony-I、逻辑同步软件Bucardo、数据水平拆分功能的开源软件 PLProxy、数据库中间件软件pgpool-II、集群数据库软件Postgres-XC的使用方法。最后还介绍了与PostgreSQL数据库配套使用的一些开源软件和搭建各种实用的高可用方案方面的知识。

作者简介

  唐成,拥有十几年数据库、操作系统、存储领域的工作经验。目前任沃趣科技首席数据库架构师,从事数据库高可用、高性能以及数据库云化等方面的研究工作。历任阿里巴巴数据库专家、高级数据库专家,从事过阿里巴巴的线上Oracle、Greenplum、PostgreSQL数据库的架构设计和运维工作,为阿里巴巴的PostgreSQL数据库的布道者,推动阿里云的关系型数据库服务(RDS)中提供PostgreSQL数据库服务,为阿里巴巴PostgreSQL数据库方面的技术带头人。也曾任网易杭州研究院开发专家,主导了网易云计算中的云硬盘产品(类似有EBS)的设计和开发。

目录

前言
第一篇准备篇
第1章PostgreSQL简介2
1.1什么是PostgreSQL2
1.1.1PostgreSQL概述2
1.1.2PostgreSQL的发展历史2
1.1.3 PostgreSQL数据库的优势3
1.1.4 PostgreSQL应用现状和发展趋势4
1.2 PostgreSQL数据库与其他数据库的对比4
1.2.1PostgreSQL与MySQL数据库的对比4
1.2.2 PostgreSQL与Oracle数据库的对比6
1.3 小结6
第2章PostgreSQL安装与配置7
2.1 从发行版本安装7
2.1.1 在Debian或Ubuntu下的安装7
2.1.2在Redhat、CentOS或Fedora下的安装9
2.1.3 在Windows下的安装12
2.1.4 发行版安装总结16
2.2 从源码安装16
2.2.1 编译安装过程介绍16
2.2.2 下载源代码17
2.2.3 编译及安装18
2.2.4 安装后的配置20
2.2.5 创建数据库簇21
2.2.6 安装contrib目录下的工具21
2.2.7 启动和停止数据库21
2.2.8 编译安装时的常见问题及解决方法22
2.3 安装技巧介绍24
2.3.1 在Redhat、CentOS下使用二进制包安装较新版本的方法24
2.3.2 如何使用较大的数据块提高I/O性能25
2.4 PostgreSQL的简单配置25
2.4.1 修改监听的IP和端口25
2.4.2 与数据库log相关的参数25
2.4.3 内存参数的设置26
2.5 小结26
第3章SQL语言入门27
3.1 SQL语句语法简介27
3.1.1 语句的分类27
3.1.2 词法结构27
3.2 DDL语句28
3.2.1 建表语句28
3.2.2 删除表语句30
3.3 DML语句30
3.3.1 插入语句30
3.3.2 更新语句31
3.3.3 删除语句31
3.4 查询语句31
3.4.1 单表查询语句31
3.4.2 过滤条件的查询32
3.4.3 排序32
3.4.4 分组查询33
3.4.5 表join34
3.5 其他SQL语句36
3.5.1 INSERT INTO... SELECT语句36
3.5.2 UNION语句36
3.5.3 TRUNCATE TABLE语句37
3.6 小结37
第二篇基础篇
第4章psql工具的使用介绍40
4.1 psql介绍40
4.2 psql的简单使用40
4.3 psql的常用命令42
4.3.1 d命令42
4.3.2 指定字符集编译的命令45
4.3.3 pset命令46
4.3.4 x命令46
4.3.5 执行存储在外部文件中的SQL命令47
4.3.6 显示信息的命令48
4.3.7 更多的命令49
4.4 psql的使用技巧和注意事项50
4.4.1 历史命令与补全的功能50
4.4.2 自动提交方面的技巧50
4.4.3 如何得到psql中命令实际执行的SQL51
4.5 小结53
第5章数据类型54
5.1 类型介绍54
5.1.1 类型的分类54
5.1.2 类型输入与转换55
5.2 布尔类型56
5.2.1 布尔类型解释56
5.2.2 布尔类型的操作符58
5.3 数值类型59
5.3.1 数值类型解释59
5.3.2 整数类型 59
5.3.3 精确的小数类型59
5.3.4 浮点数类型60
5.3.5 序列类型61
5.3.6 货币类型61
5.3.7 数学函数和操作符62
5.4 字符串类型64
5.4.1 类型解释64
5.4.2 字符串函数和操作符65
5.5 二进制数据类型67
5.5.1 二进制数据类型解释67
5.5.2 二进制数据类型转义表示67
5.5.3 二进制数据类型的函数68
5.6 位串类型69
5.6.1 位串类型解释69
5.6.2 位串类型的使用69
5.6.3 位串的操作符及函数70
5.7 日期/时间类型71
5.7.1 日期/时间类型详解71
5.7.2 日期输入72
5.7.3 时间输入73
5.7.4 特殊值75
5.7.5 函数和操作符列表75
5.7.6 时间函数77
5.7.7 extract和date_part函数80
5.8 枚举类型81
5.8.1 枚举类型的使用81
5.8.2 枚举类型的说明82
5.8.3 枚举类型的函数83
5.9 几何类型84
5.9.1 几何类型概况84
5.9.2 几何类型的输入84
5.9.3 几何类型的操作符89
5.9.4 几何类型的函数97
5.10 网络地址类型98
5.10.1 网络地址类型概况98
5.10.2 inet与cidr类型98
5.10.3 macaddr类型101
5.10.4 网络地址类型的操作符101
5.10.5 网络地址类型的函数102
5.11 复合类型103
5.11.1 复合类型的定义103
5.11.2 复合类型的输入104
5.11.3 访问复合类型105
5.11.4 修改复合类型105
5.11.5 复合类型的输入与输出106
5.12 XML类型107
5.12.1 XML类型的输入107
5.12.2 字符集的问题108
5.12.3 XML类型的函数109
5.13 JSON类型114
5.13.1 JSON类型简介115
5.13.2 JSON类型的输入与输出115
5.13.3 JSON类型的操作符116
5.13.4 JSON类型的函数118
5.13.5 JSON类型的索引121
5.14 Range类型125
5.14.1 Range类型简介125
5.14.2 创建Range类型126
5.14.3 Range类型的输入与输出127
5.14.4 Range类型的操作符130
5.14.5 Range类型的函数130
5.14.6 Range类型的索引和约束131
5.15 数组类型132
5.15.1 数组类型的声明132
5.15.2 如何输入数组值133
5.15.3 访问数组135
5.15.4 修改数组137
5.15.5 数组的操作符138
5.15.6 数组的函数139
5.16 伪类型142
5.17 其他类型143
5.17.1 UUID类型143
5.17.2 pg_lsn 类型143
第6章逻辑结构管理145
6.1 数据库逻辑结构介绍145
6.2 数据库基本操作145
6.2.1 创建数据库145
6.2.2 修改数据库146
6.2.3 删除数据库147
6.2.4 常见问题及解答147
6.3 模式148
6.3.1 模式的定义148
6.3.2 模式的使用148
6.3.3 公共模式150
6.3.4 模式的搜索路径150
6.3.5 模式的权限151
6.3.6 模式的移植性151
6.4 表152
6.4.1 创建表152
6.4.2 表的存储属性154
6.4.3 临时表156
6.4.4 默认值158
6.4.5 约束159
6.4.6 修改表163
6.4.7 表继承及分区表167
6.4.8 分区表168
6.5 触发器173
6.5.1 创建触发器173
6.5.2 语句级触发器与行级触发器175
6.5.3 BEFORE触发器与AFTER触发器177
6.5.4 删除触发器178
6.5.5 触发器的行为179
6.5.6 触发器函数中的特殊变量180
6.6 事件触发器180
6.6.1 创建事件触发器183
6.6.2 修改事件触发器186
6.7 表空间186
6.7.1 表空间的定义186
6.7.2 表空间的使用186
6.8 视图187
6.8.1 视图的定义187
6.8.2 创建视图188
6.8.3 可更新视图189
6.9 索引191
6.9.1 索引简介191
6.9.2 索引的分类192
6.9.3 创建索引192
6.9.4 并发创建索引193
6.9.5 修改索引196
6.9.6 删除索引196
6.10 用户及权限管理197
6.10.1 用户和角色197
6.10.2 创建用户和角色198
6.10.3 权限的管理199
6.10.4 函数和触发器的权限202
6.10.5 权限的总结202
6.10.6 权限的示例202
6.11 事务、并发、锁203
6.11.1 ACID203
6.11.2 DDL事务204
6.11.3 事务的使用204
6.11.4 SAVEPOINT205
6.11.5 事务隔离级别206
6.11.6 两阶段提交207
6.11.7 锁机制209
6.11.8 死锁及防范212
6.11.9 表级锁命令LOCK TABLE213
6.11.10 行级锁命令213
6.11.11 锁的查看214
第7章PostgreSQL的核心架构221
7.1 应用程序的访问接口221
7.1.1 访问接口总体图221
7.1.2 不同编辑语言的PostgreSQL驱动介绍222
7.2 进程及内存结构223
7.2.1 进程和内存架构图223
7.2.2 主进程Postmaster224
7.2.3 SysLogger(系统日志)进程224
7.2.4 BgWriter(后台写)进程225
7.2.5 WalWriter(预写式日志写)进程225
7.2.6 PgArch(归档)进程225
7.2.7 AutoVacuum(自动清理)进程225
7.2.8 PgStat(统计数据收集)进程226
7.2.9 共享内存226
7.2.10 本地内存226
7.3 目录结构227
7.3.1 安装目录的结构227
7.3.2 数据目录的结构227
7.3.3 表空间的目录228
第8章服务管理229
8.1 服务的启停和创建229
8.1.1 启停方法229
8.1.2 pg_ctl230
8.1.3 信号234
8.1.4 postgres及单用户模式234
8.2 服务配置介绍235
8.2.1 配置参数235
8.2.2 连接配置项237
8.2.3 内存配置项240
8.2.4 预写式日志的配置项241
8.2.5 错误报告和日志项243
8.3 访问控制配置文件246
8.3.1 pg_hba.conf 文件247
8.3.2 认证方法介绍248
8.3.3 认证方法实战249
8.4 备份和还原249
8.4.1 逻辑备份249
8.4.2 pg_dump命令250
8.4.3 pg_restore命令254
8.4.4 pg_dump和pg_restore使用举例257
8.4.5 物理备份258
8.4.6 使用LVM快照进行热备份259
8.5 常用的管理命令261
8.5.1 查看系统信息的常用命令261
8.5.2 系统维护常用命令267
第三篇提高篇
第9章PostgreSQL中执行计划270
9.1 执行计划的解释270
9.1.1 EXPLAIN命令270
9.1.2 EXPLAIN输出结果解释271
9.1.3 EXPLAIN使用示例272
9.1.4 全表扫描275
9.1.5 索引扫描275
9.1.6 位图扫描275
9.1.7 条件过滤276
9.1.8 Nestloop Join277
9.1.9 Hash Join277
9.1.10 Merge Join278
9.2 与执行计划相关的配置项279
9.2.1 ENABLE_*参数 279
9.2.2 COST基准值参数279
9.2.3 基因查询优化的参数280
9.2.4 其他执行计划配置项281
9.3 统计信息的收集282
9.3.1 统计信息收集器的配置项282
9.3.2 SQL执行的统计信息输出283
9.3.3 手工收集统计信息283
第10章PostgreSQL中的技术内幕285
10.1 表中的系统字段285
10.1.1 oid286
10.1.2 ctid288
10.1.3 xmin、xmax、cmin、cmax289
10.2 多版本并发控制290
10.2.1 多版本并发控制的原理290
10.2.2 PostgreSQL中的多版本并发控制291
10.2.3 PostgreSQL多版本的优劣分析293
10.3 物理存储结构293
10.3.1 PostgreSQL中的术语293
10.3.2 数据块结构293
10.3.3 Tuple结构294
10.3.4 数据块空闲空间管理296
10.3.5 可见性映射表文件298
10.4 技术解密298
10.4.1 Index-only scans298
10.4.2 Heap-Only Tuples300
第11章PostgreSQL的特色功能302
11.1 规则系统302
11.1.1 SELECT规则302
11.1.2 更新规则303
11.1.3 规则和权限306
11.1.4 规则和命令状态307
11.1.5 规则与触发器的比较308
11.2 模式匹配和正则表达式308
11.2.1 PostgreSQL中的模式匹配和正则表达式介绍308
11.2.2 传统SQL的LIKE 操作符309
11.2.3 SIMILAR TO 正则表达式310
11.2.4 POSIX 正则表达式312
11.2.5 模式匹配函数 substring313
11.3 listen与notify315
11.3.1 listen与notify的简单示例315
11.3.2listen与notify的相关命令316
11.3.3 listen与notify的使用详解317
11.4 索引的特色320
11.4.1 表达式上的索引320
11.4.2 部分索引320
11.4.3 GiST索引323
11.4.4 SP-GiST索引325
11.4.5 GIN索引326
11.5 序列的使用328
11.5.1 序列的创建328
11.5.2 序列的使用及相关的函数329
11.5.3 常见问题及解答331
11.6 咨询锁的使用333
11.6.1 咨询锁的定义333
11.6.2 咨询锁的函数及使用333
11.6.3 常见问题及解答337
11.7 SQL/MED338
11.7.1 SQL/MED的介绍338
11.7.2 外部数据包装器对象339
11.7.3 外部服务器对象340
11.7.4 用户映射对象341
11.7.5 外部表对象341
11.7.6 file_fdw使用实例342
11.7.7 postgres_fdw使用实例345
第12章数据库优化347
12.1 优化准则和方法347
12.1.1 优化准则347
12.1.2 优化方法348
12.2 硬件知识348
12.2.1 CPU及服务器体系结构348
12.2.2 内存349
12.2.3 硬盘350
12.3 文件系统及I/O调优352
12.3.1 文件系统的崩溃恢复352
12.3.2 Ext2文件系统353
12.3.3 Ext3文件系统353
12.3.4 Ext4文件系统354
12.3.5 XFS文件系统355
12.3.6 Barriers I/O355
12.3.7 I/O调优的方法356
12.4 性能监控359
12.4.1 数据库性能视图359
12.4.2 Linux监控工具362
12.5数据库配置优化364
12.5.1内存配置优化364
12.5.2 关于双缓存的优化366
12.5.3 vacuum中的优化367
12.5.4 预写式日志写优化369
第13章Standby数据库的搭建371
13.1 Standby数据库原理371
13.1.1PITR原理371
13.1.2WAL日志归档372
13.1.3流复制372
13.1.4Standby的运行原理373
13.1.5 创建Standby的步骤373
13.2 pg_basebackup命令行工具374
13.2.1 pg_basebackup介绍374
13.2.2 pg_basebackup的命令行参数375
13.2.3 pg_basebackup使用示例376
13.3 异步流复制Hot Standby的示例377
13.3.1 配置环境377
13.3.2 主数据库的配置378
13.3.3 在Standby上生成基础备份378
13.3.4 启动Standby379
13.4 同步流复制的Standby数据库380
13.4.1 同步流复制的架构380
13.4.2 同步复制的配置381
13.4.3 配置实例381
13.5 检查备库及流复制情况383
13.5.1 检查异步流复制的情况383
13.5.2 检查同步流复制的情况384
13.5.3 视图pg_stat_replication详解385
13.5.4 查看备库的状态385
13.6 Hot Standby的限制387
13.6.1 Hot Standby的查询限制387
13.6.2 Hot Standby的查询冲突处理389
13.7 恢复配置详解390
13.7.1 归档恢复配置的配置项390
13.7.2 Recovery Target配置391
13.7.3 Standby Server配置 391
13.8 流复制的注意事项392
13.8.1 wal_keep_segments参数的配置392
13.8.2 vacuum_defer_cleanup_age参数的配置392
第四篇第三方开源软件及架构篇
第14章PgBouncer394
14.1 PgBouncer 介绍394
14.2 PgBouncer中的概念395
14.3 PgBouncer的安装方法395
14.4 PgBouncer的简单使用395
14.5 PgBouncer的配置文件详解399
第15章Slony-I的使用404
15.1Slony-I中的概念404
15.2 Slony-I复制的限制405
15.3 在Windows下使用pgAdminIII安装配置Slony-I406
15.4在Linux下安装配置Slony-I419
第16章Bucardo的使用426
16.1Bucardo中的概念426
16.2Bucardo的安装方法427
16.3Bucardo同步配置429
16.4Bucardo的日常维护434
第17章PL/Proxy的使用436
17.1PL/Proxy中的概念436
17.2PL/Proxy安装及配置438
17.3PL/Proxy的集群配置详解443
17.4PL/Proxy语言详解446
17.5PL/Proxy的一个高可用方案448
17.5.3具体实施步骤449
第18章pgpool-II的使用458
18.1 pgpool-II中的概念458
18.2 pgpool-II安装方法462
18.3 pgpool-II配置快速入门463
18.4 pgpool-II高可用配置方法471
18.5 pgpool-II的总结492
第19章Postgres-XC的使用493
19.1 Postgres-XC中的概念493
19.2 Postgres-XC的安装495
19.3 配置Postgres-XC集群497
19.4 Postgres-XC的使用503
第20章高可用性方案设计516
20.1 高可用架构基础516
20.2 基于共享存储的高可用方案517
20.3 WAL日志同步或流复制同步的方案519
20.4 基于触发器的同步方案520
20.5 基于语句中间件的高可用方案520

精彩书摘

  第一篇

  准 备 篇

  第1章PostgreSQL简介

  第2章PostgreSQL安装与配置

  第3章SQL语言入门

  第1章

  PostgreSQL简介

  本章将着重介绍PostgreSQL数据库的相关知识,让没有接触过PostgreSQL的读者对它有一个初步的了解。

  1.1什么是PostgreSQL

  1.1.1PostgreSQL概述

  PostgreSQL数据库是目前功能最强大的开源数据库,支持丰富的数据类型(如JSON和JSONB类型、数组类型)和自定义类型。而且它提供了丰富的接口,可以很容易地扩展它的功能,如可以在GiST框架下实现自己的索引类型等,它还支持使用C语言写自定义函数、触发器,也支持使用流行的语言写自定义函数,比如其中的PL/Perl提供了使用Perl语言写自定义函数的功能,当然还有PL/Python、PL/Tcl,等等。

  1.1.2PostgreSQL的发展历史

  前身Ingres:PostgreSQL的前身是伯克利源于1977 年的 Ingres 项目。这个项目是由著名的数据库科学家Michael Stonebraker领导的。1982年,Michael Stonebraker离开伯克利大学,把Ingres商业化,使之成为 Relational Technologies 公司的一个产品。后来 Relational Tecchnologies被Computer Associates(CA)收购。Ingres 是一个非关系型的数据库。

  伯克利的 Postgres 项目:20世纪80年代,数据库系统中的一个主要问题是数据关系维护。在1985年Michael Stonebraker回到伯克利后,为了解决Ingres中的数据关系维护问题,启动了一个后Ingres(post-Ingres)的项目,这就是 POSTGRES 的开端。 POSTGRES项目是由防务高级研究项目局(DARPA)、陆军研究办公室(ARO)、国家科学基金(NSF) 以及 ESL公司共同赞助的。从1986年开始,Michael Stonebraker 教授发表了一系列论文,探讨了新的数据库的结构设计和扩展设计。第一个“演示性”系统在 1987 年便可使用了,并且在 1988 年的数据管理国际会议(ACM-SIGMOD)上展出。1989年6月发布了版本 1给一些外部的用户使用。由于源代码维护的时间日益增加,占用了太多本应用于数据库研究的时间,为减少支持的负担,伯克利的POSTGRES 项目在版本 4.2 时正式终止。

  Postgres95:在 1994 年,来自中国香港的两名伯克利的研究生Andrew Yu 和 Jolly Chen 向 POSTGRES 中增加了现在SQL 语言的解释器,将Postgres改名为 Postgres95,随后将 Postgres95 源代码发布到互联网上供大家使用。它成为一个开放源码的POSTGRES 代码的继承者。

  PostgreSQL6.X:到了 1996 年,很明显地看出“Postgres95”这个名字已经经不起时间的考验。于是起了一个新名字 PostgreSQL,为Postgres与SQL的缩写,即增加了SQL功能的Postgres的意思。同时版本号也沿用伯克利 POSTGRES 项目的顺序,从6.0开始。

  PostgreSQL7.1:PostgreSQL 7.1是继6.5版本之后又一个有巨大变化的版本,首先它引入了预写式日志的功能。这样,事务就拥有了完善的日志机制,可以提供更好的性能,还可以实现更优良的备份和灾难恢复的能力(比如联机热备份和宕机后的自动恢复)。其次是不再限制文本类型的数据段长度,这从很大程度上解决了PostgreSQL大对象的问题。

  Postgres8.X:该版本可以在Windows下运行,它具有一些新的特性。比如具有事务保存点功能、改变字段的类型、表空间、即时恢复(即时恢复允许对服务器进行连续的备份。既可以恢复到失败那个点,也可以恢复到以前的任意事务)等功能。并且开始支持Perl 服务器端编程语言。

  PostgreSQL9.X:进入9.X版本,标识着PostgreSQL进入了黄金发展阶段。2010年9月20日发布了PostgreSQL 9.0,大大增强了复制的功能(replication),比如增加了流复制功能(stream replicaction)和HOT standby功能。从9.0开始,可以很方便地搭建主从数据库。2011年9月12日发布了PostgreSQL9.1,在该版本中增加了同步复制功能(synchronous replication);2012年9月10发布了PostgreSQL9.2,增加了级连复制的功能。

  1.1.3 PostgreSQL数据库的优势

  PostgreSQL有以下优势:

  PostgreSQL数据库是目前功能最强大的开源数据库,它是最接近工业标准SQL92的查询语言,并且正在实现新的功能以兼容最新的SQL标准:SQL2003。

  稳定可靠:PostgreSQL是唯一能做到数据零丢失的开源数据库。有报道称国外的部分银行也在使用PostgreSQL数据库。

  开源省钱: PostgreSQL数据库是开源的、免费的,而且是BSD协议,在使用和二次开发上基本没有限制。

  支持广泛:PostgreSQL 数据库支持大量的主流开发语言,包括C、C++、Perl、Python、Java、Tcl,以及PHP等。

  PostgreSQL社区活跃:PostgreSQL基本上每三个月推出一个补丁版本,这意味着已知的BUG很快会被修复,有应用场景的需求也会及时得到响应。

  1.1.4 PostgreSQL应用现状和发展趋势

  PostgreSQL目前在国外很流行,特别是近几年使用PostgreSQL数据库的公司越来越多。比如,日本电信(NTT) 大量使用PostgreSQL替代Oracle数据库,并且在 PostgreSQL之上二次开发了Postgres-XC,Postgres-XC是对使用者完全兼容PostgreSQL接口的share-nothing 架构的数据库集群。网络电话公司Skype 也大量使用PostgreSQL,并贡献了一些与PostgreSQL数据库配套的开源软件:

  PL/Proxy:PostgreSQL中的数据水平拆分软件

  pgQ:使用PostgreSQL的消息队列软件

  Londiste:用C语言实现的在PostgreSQL数据库之间进行逻辑同步的软件

  全球最大的CRM软件服务提供商Salesforce也开始使用PostgreSQL,并招募了PostgreSQL内核开发者Tom lane。

  2012年,美国联邦机构全面转向PostgreSQL阵营;法国也正积极推动政府机构采用PostgreSQL数据库,从而取代商业数据库。

  在国内,越来越多的公司开始使用PostgreSQL,如斯凯网络(股票代码:MOBI)的后台数据库基本使用的都是PostgreSQL数据库,去哪儿网(qunar.com)也大量使用了PostgreSQL数据库。

  主流的云服务提供商如亚马逊、阿里云的RDS(关系型数据库服务)同样提供了PostgreSQL的支持。

  更多的使用PostgreSQL数据库的情况可以见PostgreSQL官方网站(http://www.postgresql.org/about/users/)。

  ……

前言/序言

  为什么要写这本书

  PostgreSQL数据库是目前功能最强大的开源数据库,它基本包含了其他所有商业或开源的数据库中能找到的功能,甚至还包含了一些商业数据库中没有的功能。它是最接近工业标准SQL92的查询语言,并且正在实现新的功能以兼容最新的SQL标准:SQL2003。PostgreSQL也获得数个奖项,曾三次被评为Linux Journal杂志编辑评选的“最佳数据库奖”(2000年、2003年和2004年),并获2004年度的Linux新媒体最佳数据库系统奖。

  PostgreSQL目前在国外很流行,特别是近两年,使用PostgreSQL数据库的公司越来越多,如提供网络电话功能的skype和著名的图片分享网站Instagram。2012年,美国联邦机构全面转向PostgreSQL阵营;法国也正推动政府机构积极采用PostgreSQL数据库取代商业数据库;世界最大的CRM软件服务提供商Salesforce同样开始大量使用 PostgreSQL。在DB-Engine 发布的历年数据库排名中,PostgreSQL自从2013年3月上升到第四名后,一直稳定在第四名,排在很多知名的商业数据库如DB2、Sybase之前,也排在所有NoSQL数据库如Cassandra、Redis等之前。

  虽然在国外使用PostgreSQL 数据库的人很多,但在国内,PostgreSQL中文的学习资料并不多,因此我就想到写一本关于PostgreSQL的书,让国内更多的人加入到学习PostgreSQL数据库的队伍中来。

  读者对象

  适合阅读本书的用户:

  数据库入门者。学习本书和相关的数据库知识,可以让一个对数据库了解不是很深的数据库爱好者成为数据库专家。

  非PostgreSQL数据库的DBA。可以让非PostgreSQL的DBA 快速掌握PostgreSQL数据库相关知识,成为一名合格的PostgreSQL DBA。

  PostgreSQL DBA。本书的一些章节对熟悉PostgreSQL数据库的DBA也有很大指导作用,可以使读者的知识更充实。

  开发人员。通过此书可以快速掌握PostgreSQL数据库方面的知识,提高开发人员的数据库水平。

  如何阅读本书

  本书分为四大部分,分别为准备篇、基础篇、提高篇和第三方开源软件及架构篇。准备篇是为没有数据库基础的读者准备的,如果你已经具备了一定的数据库基础,可以跳过其中的一些内容。基础篇介绍了PostgreSQL数据库中的一些基础内容,学完此篇可以完成基本的PostgreSQL数据库的日常操作。提高篇讲解了一些更深的内容,如PostgreSQL的一些技术内幕、特色功能、优化等方面的内容,仔细阅读此篇可使你早日成为PostgreSQL数据库高手。第三方开源软件及架构篇讲解了与PostgreSQL数据库配套使用的一些常用的开源软件及架构设计方面的内容,通过阅读此篇,可以开阔大家的眼界,提高数据库架构设计能力。

  本书中有大量的例子,读者边阅读此书边按例子进行实际的操作,将获得最佳的学习效果。

  勘误和支持

  由于作者的水平有限,编写的时间也很仓促,书中难免会出现一些错误或者不准确的地方,不妥之处恳请读者批评指正。

  致谢

  感谢机械工业出版社华章公司的编辑杨绣国老师,感谢她一年多来始终支持我的写作,她的鼓励和帮助引导我能顺利完成全部书稿。

  最后要感谢我的妻子,她一直支持和鼓励我,让我能坚持把这本书写完。

  谨以此书,献给众多热爱PostgreSQL的朋友们。

  唐成(osdba)

  中国,杭州,2015年1月



PostgreSQL修炼之道:从小工到专家 内容简介 本书是一本面向广大 PostgreSQL 技术爱好者的深度技术指南,旨在带领读者从 PostgreSQL 的基础知识出发,逐步深入到核心原理、高级特性、性能优化、安全加固以及集群与高可用等各个层面,最终达到精通 PostgreSQL 的目标。本书不仅涵盖了 PostgreSQL 的方方面面,更注重实战性和可操作性,通过大量的实例和场景分析,帮助读者真正掌握 PostgreSQL 的强大功能,成为一名游刃有余的 PostgreSQL 专家。 第一部分:PostgreSQL 基础入门与核心概念 本部分将为初学者奠定坚实的 PostgreSQL 基础,帮助他们快速理解 PostgreSQL 的基本架构、安装配置以及常用操作。 PostgreSQL 概览与安装部署: PostgreSQL 的发展历程、核心优势与生态圈介绍。 不同操作系统下的 PostgreSQL 安装与配置详解(Linux, Windows, macOS)。 PostgreSQL 的版本管理与升级策略。 客户端工具的选择与使用(psql, pgAdmin)。 用户与权限管理的基础。 SQL 语言基础与 PostgreSQL 扩展: SQL 标准语法回顾与 PostgreSQL 特色语法。 数据类型详解(基本类型、数组、JSON、地理空间等)。 表的创建、修改与删除。 数据的插入、查询、更新与删除(CRUD 操作)。 PostgreSQL 特有的数据类型和函数应用。 视图、序列、同义词的创建与使用。 索引的奥秘: 索引的基本原理与类型(B-tree, Hash, GiST, GIN, SP-GiST)。 索引的选择原则与最佳实践。 索引的创建、维护与性能影响分析。 复合索引、部分索引、覆盖索引的应用场景。 `EXPLAIN` 与 `EXPLAIN ANALYZE` 解析索引使用情况。 事务与并发控制: ACID 特性详解。 PostgreSQL 的事务隔离级别。 MVCC (Multi-Version Concurrency Control) 原理剖析。 锁的类型与死锁的检测与避免。 并发场景下的常见问题及解决方案。 第二部分:PostgreSQL 进阶特性与性能优化 本部分将深入挖掘 PostgreSQL 的高级特性,并提供一套系统性的性能优化方法论,帮助读者充分释放 PostgreSQL 的潜力。 查询优化与执行计划分析: 理解 PostgreSQL 查询优化器的内部工作机制。 深度解析 `EXPLAIN` 和 `EXPLAIN ANALYZE` 的输出。 识别和解决常见的慢查询问题。 查询重写技巧与子查询的优化。 窗口函数、公用表表达式(CTE)的应用与优化。 存储引擎与表空间管理: PostgreSQL 的存储结构(Tablespace, Database, Schema, Table, Index)。 VACUUM 与 ANALYZE 的作用与原理。 表空间(Tablespace)的创建与管理,优化数据分布。 分区表(Partitioning)详解:声明式分区与手动分区。 分区策略的选择与性能提升。 函数、过程与扩展: PL/pgSQL 编程入门与进阶。 创建自定义函数、存储过程和触发器。 PostgreSQL 的扩展生态:使用第三方扩展增强功能(如 PostGIS, pg_trgm)。 C 语言编写 PostgreSQL 扩展。 物化视图与数据仓库: 物化视图(Materialized Views)的创建与更新策略。 物化视图在报表和数据分析中的应用。 PostgreSQL 在数据仓库场景下的角色与优化。 第三部分:PostgreSQL 高可用、备份与恢复 本部分将聚焦于 PostgreSQL 的可靠性,包括数据备份、恢复策略以及构建高可用集群的方案。 备份与恢复策略: 逻辑备份(pg_dump)与物理备份(pg_basebackup)的原理与适用场景。 全量备份、增量备份与差异备份。 Point-in-Time Recovery (PITR) 详解。 `pg_rewind` 的应用。 恢复策略的规划与测试。 流复制与主从架构: WAL (Write-Ahead Logging) 原理。 流复制(Streaming Replication)的工作机制。 同步复制与异步复制的选择。 构建 PostgreSQL 主从复制集群。 读写分离的实现。 高可用解决方案: PostgreSQL 的高可用性考量。 使用 Patroni, repmgr 等工具实现自动故障转移。 Pgpool-II 负载均衡与连接池。 Quorum 机制在 HA 集群中的作用。 Active-Passive 与 Active-Active 架构的对比。 第四部分:PostgreSQL 安全加固与监控 本部分将深入探讨 PostgreSQL 的安全机制,以及如何进行有效的监控和故障排查。 安全加固: 用户与角色的细粒度权限控制。 SSL/TLS 加密连接配置。 `pg_hba.conf` 和 `postgresql.conf` 的安全配置。 SQL 注入防护。 审计日志(Audit Logging)的配置与分析。 数据加密(Column-level encryption, TDE)。 性能监控与故障排查: PostgreSQL 内置监控视图(`pg_stat_activity`, `pg_stat_statements` 等)。 外部监控工具的应用(Prometheus, Grafana, Zabbix)。 日志文件的分析与配置。 慢查询日志的生成与处理。 系统资源监控(CPU, 内存, 磁盘 I/O)。 常见故障场景的排查思路与技巧。 第五部分:PostgreSQL 实践案例与架构演进 本部分将通过实际案例,展示 PostgreSQL 在不同场景下的应用,并探讨 PostgreSQL 的架构演进方向。 实际应用场景剖析: 大型电商平台的数据库架构设计。 高并发 Web 应用的 PostgreSQL 优化。 地理信息系统(GIS)的数据管理。 时间序列数据的存储与查询。 PostgreSQL 集群与分布式方案: Sharding(数据分片)策略的实现。 Citus Data 等分布式 PostgreSQL 解决方案介绍。 其他第三方分布式解决方案的对比。 PostgreSQL 的未来展望: PostgreSQL 新版本特性预览。 PostgreSQL 在云原生时代的机遇与挑战。 向量数据库与其他技术的融合。 本书特色: 体系化构建知识框架: 从基础到精通,层层递进,构建完整的 PostgreSQL 知识体系。 强调实践操作: 大量代码示例、配置片段和命令演示,让读者边学边练。 深入原理剖析: 不仅知其然,更知其所以然,深入理解 PostgreSQL 核心机制。 场景化问题解决: 结合实际工作中的常见问题,提供可行的解决方案。 前沿技术追踪: 涵盖了 PostgreSQL 最新特性和发展趋势。 面向实战的高可用与安全: 关注生产环境中最关键的环节。 无论您是初入 PostgreSQL 的新手,还是希望在技术深度上有所突破的开发者、DBA,本书都将是您不可或缺的学习伙伴,助力您在 PostgreSQL 的修炼之路上不断前进,最终成为一名真正意义上的 PostgreSQL 专家。

用户评价

评分

说实话,我之前对 PostgreSQL 的了解仅限于一些基础的 SQL 操作,对于它的架构和原理知之甚少,总觉得它只是一个“数据库软件”。然而,当我翻开《PostgreSQL修炼之道:从小工到专家》这本书后,我完全颠覆了之前的认知。这本书就像一把钥匙,为我打开了一个全新的世界。它用非常生动形象的比喻,将 PostgreSQL 复杂的内部机制讲得通俗易懂,让我这个“小白”也能够轻松理解。我最喜欢的部分是关于数据库的物理存储结构和逻辑存储结构的讲解,让我第一次明白数据是如何存储在磁盘上的,又是如何被组织起来的。书中的插图和图表也非常精美,极大地帮助了我理解抽象的概念。我甚至尝试着去分析一些慢查询日志,并根据书中的指导进行优化,竟然真的看到了效果!这本书的写作风格非常接地气,没有那些晦涩难懂的术语,更多的是一种循循善诱的感觉,让我充满了学习的动力。

评分

这本书真是太棒了!我是一名刚入行不久的 PostgreSQL 开发者,一直以来都感觉自己在数据库方面像是摸着石头过河,遇到问题时总是手忙脚乱,缺乏系统性的知识体系。翻开《PostgreSQL修炼之道:从小工到专家》这本书,简直像是遇到了救星!它从最基础的概念讲起,循序渐进,一点一点地把我带进了 PostgreSQL 的世界。我特别喜欢它对于各种 SQL 语句的讲解,不仅给出了清晰的语法,还深入剖析了它们在实际应用中的运行原理和性能考量。书里有很多实用的例子,我跟着书中的步骤一步步操作,感觉自己对数据库的理解一下子提升了好几个档次。以前觉得 PostgreSQL 只是一个工具,现在我才意识到它背后蕴含的深厚技术。这本书让我明白了,要想真正掌握一门技术,光是会用是不够的,还需要深入理解它的方方面面。我甚至开始主动去研究它的执行计划,优化查询语句,这一切都得益于这本书打下的坚实基础。它不仅教会了我“怎么做”,更重要的是教会了我“为什么这么做”,这种融会贯通的感觉真的非常棒。

评分

作为一名已经有几年 PostgreSQL 使用经验的老兵,我一直苦于在日常工作中遇到的性能瓶颈和一些复杂的配置问题。虽然我能够完成大部分工作,但总感觉自己的技术深度不够,遇到一些疑难杂症时,往往需要花费大量时间去查阅零散的文档或者向同事求助。《PostgreSQL修炼之道:从小工到专家》这本书,恰好弥补了我在这方面的不足。它非常深入地探讨了 PostgreSQL 的内部工作机制,包括内存管理、查询优化器、并发控制等核心概念,这些内容对我来说是耳目一新的。书中对索引策略的讲解尤其精彩,我从未如此清晰地理解过不同类型索引的适用场景以及如何通过合理的索引设计来大幅提升查询效率。我尝试了书中介绍的一些高级调优技巧,比如参数配置的优化和分区策略的运用,确实取得了非常显著的性能提升。这本书的语言风格也非常专业且富有逻辑性,让我能够快速抓住重点,并将其应用到实际工作中。它不是那种堆砌概念的教科书,而是真正从解决实际问题的角度出发,提供了切实可行的解决方案。

评分

作为一名专注于 PostgreSQL 性能优化的技术顾问,我一直在寻找一本能够系统性梳理 PostgreSQL 性能调优体系的书籍。《PostgreSQL修炼之道:从小工到专家》这本书,无疑是我近年来遇到的最优秀的一本。它不仅仅局限于基础的 SQL 优化,而是从更宏观的层面,深入剖析了 PostgreSQL 在硬件、操作系统、网络以及数据库自身参数配置等各个环节的影响因素。书中的关于查询计划的深度解析,对我来说是极具价值的。我以前更多地是凭借经验去调整,而这本书则用严谨的逻辑和大量的实验数据,证明了各种优化手段背后的原理。特别是关于锁竞争、VACUUM 机制的优化策略,以及如何根据不同的业务场景来设计最优的索引方案,都让我茅塞顿开。这本书的写作方式严谨且富有洞察力,为我提供了一个全新的视角来审视 PostgreSQL 的性能瓶颈。我强烈推荐给所有希望在 PostgreSQL 性能调优领域有所建树的技术人员。

评分

我是一名资深的数据库 DBA,在 PostgreSQL 领域摸爬滚打了十几年。接触过无数的数据库技术书籍,但《PostgreSQL修炼之道:从小工到专家》这本书给我留下了非常深刻的印象。它并非一本泛泛而谈的入门指南,而是以一种极其精炼的方式,深入剖析了 PostgreSQL 的核心架构和高级特性。我特别欣赏作者对于数据库事务、锁机制以及复制策略的详细阐述。这些是保证数据库高可用性和数据一致性的关键,但往往也是最容易被忽视或者理解不到位的环节。书中对这些内容的讲解,既有理论深度,又不乏实践指导,让我在回顾和反思自己过往工作经验的同时,也找到了提升的空间。特别是关于 PostgreSQL 的扩展机制和插件开发的部分,让我看到了 PostgreSQL 在灵活性和可扩展性方面的巨大潜力。这本书就像是一位经验丰富的老友,在向我娓娓道来 PostgreSQL 的“内功心法”,让我受益匪浅。

评分

好好学习天天向上的人啊!

评分

very good !!

评分

书中例子很全面,作者功底很深

评分

618活动月买的,划算。正品。纸质优。

评分

开发人员日常必备工具用户,查阅、使用方便,蛮好的。

评分

还不错的书籍,很喜欢啊,呵呵

评分

内容太弱智

评分

我为什么喜欢在京东买东西,因为今天买明天就可以送到。我为什么每个商品的评价都一样,因为在京东买的东西太多太多了,导致积累了很多未评价的订单,所以我统一用段话作为评价内容。京东购物这么久,有买到很好的产品,也有买到比较坑的产品,如果我用这段话来评价,说明这款产品没问题,至少85分以上,而比较垃圾的产品,我绝对不会偷懒到复制粘贴评价,我绝对会用心的差评,这样其他消费者在购买的时候会作为参考,会影响该商品销量,而商家也会因此改进商品质量。

评分

充电,充电。都快40了。继续充电。

相关图书

本站所有内容均为互联网搜索引擎提供的公开搜索信息,本站不存储任何数据与内容,任何内容与数据均与本站无关,如有需要请联系相关搜索引擎包括但不限于百度google,bing,sogou

© 2025 book.coffeedeals.club All Rights Reserved. 静流书站 版权所有