PostgreSQL基础知识(11)


系,如下例所示:
SELECT *
FROM ROWS FROM (jsonb_each('{"a":"foo1","b":"bar"}'::jsonb),
jsonb_each('{"c":"foo2"}'::jsonb))
x (a1,a1_val,a2_val);
支持动态启用后台工作线程
当使用 SQL 或 PostgreSQL 函数都无法实现所需要的功能时,可以使用 C 语言编码实现动态后台工作线程来达成目标 。9.4 版源码的
contrib/worker_spi 目录下实现了一个小型的示例,可供参考 。1.7 数据库驱动程序
任何情况下,你都不可能脱离具体的业务系统而仅仅使用 PostgreSQL
数据库本身,那显然是无意义的 。为了实现 PostgreSQL 与业务系统之
间的交互,就需要借助数据库驱动程序 。PostgreSQL 拥有大量免费驱
动,支持各种编程语言和开发工具 。此外,很多商业公司也以很低廉的
价格提供了各有特色的驱动 。目前比较流行的几种开源驱动如下 。
PHP 驱动:PHP 语言广泛应用于 Web 开发领域,大多数 PHP 发行
包都自带了较老的 pgsql 驱动或者是较新的 pdo_pgsql 驱动 。一般
来说这两种驱动默认都会安装,不过可能需要修改 php.ini 来决定
启用哪一种 。
JDBC 驱动:Java 开发所使用的 JDBC 驱动一直是与最新版
PostgreSQL 同步更新的,可以从 PostgreSQL 官方站点下载 。
.NET 驱动:.NET 框架(含微软的官方版和 Mono 社区的开源版)
可使用 Npgsql 驱动 。目前该驱动支持微软 .NET 框架,包括微软
Entity Framework 开发框架以及 Mono 开源 .NET 框架 。
ODBC 驱动:如果需要从微软 Access、Excel 或者其他支持 ODBC
的产品连接到 PostgreSQL,可从 PostgreSQL 官网下载 ODBC 驱
动,支持 32 位和 64 位两个版本 。
Libreoffice/OpenOffice 驱动:LibreOffice 3.5 及之后的版本中自带
了 PostgreSQL 驱动,但 3.5 之前的版本以及 OpenOffice 是不带
的,可以使用 JDBC 或者 SDBC 驱动 。更多细节请参见“OO Base
and PostgreSQL”这篇博文 。
Python 驱动:Python 可通过多种驱动访问 PostgreSQL,目前
psycopg2
是最流行的一种 。Python

Django
开发框架对
PostgreSQL 也有着良好的支持 。如果你需要一个关系 - 对象映射工
具(即通常所说的 ORM 工具),可以考虑使用最广泛的 SQLAlchemy 工具,著名的外部数据源封装器开发平台 Multicorn 内部
就使用了它 。
Ruby 驱动:对 Ruby 开发人员来说,请使用 rubygems pg 驱动 。
Perl 驱动:Perl 可以使用 DBI 和 DBD::Pg 驱动 。也可以使用由
CPAN 网站提供的 DBD::PgPP 驱动 。
Node.js 驱动:Node.js 是一个 JavaScript 框架,可用于构建可扩展
的网络应用 。该平台目前支持两种 PostgreSQL 驱动:一种是 Node
Postgres,该驱动可以选择是否绑定本地
libpq
库,而且基于纯
JavaScript(无须编译);另一种是 Node-DBI 。1.8 如何获得帮助
在使用 PostgreSQL 的过程中,你迟早会需要寻求帮助,而且这一天往
往会比预期来得早 。我们希望你能够尽早了解到求助的途径 。我们最为
推荐的途径是邮件列表,不管你是 PostgreSQL 的新用户还是老用户,
邮件列表都能为你解答技术问题 。可以先打开 PostgreSQL 邮件列表页
面 。如果你是新手,那么订阅 PGSQL-General 这个邮件列表是最合适
的 。如果你认为自己发现了 PostgreSQL 的 bug,那么打开“PostgreSQL
故障报告”这个页面,上面会告诉你具体如何操作1.9 PostgreSQL的主要衍生版本
PostgreSQL 使用了 MIT/BSD 风格的许可证,任何人都可以合法地对其
修改并二次传播,因此对于那些想创建自己数据库分支的人来说,
PostgreSQL 是绝佳的选择 。在过去的很多年间,有很多团队创建了自己
的 PostgreSQL 分支版本,并且对社区也做出了相应的回馈,有的把自
己的修改贡献回了 PostgreSQL 的主干代码,有的对社区给予了资金支
持 。访问 https://wiki.postgresql.org/wiki/PostgreSQL_derived_databases 这
个地址,就可以看到 PostgreSQL 数据库的所有衍生产品 。
很多流行的分支版本是商业化的闭源软件 。比如目前数据仓库领域使用
很广泛的 Netezza 就是源自 PostgreSQL 。亚马逊公司的 Redshift 数据仓
库事实上是 PostgreSQL 的一个分支的分支 。亚马逊还有其他两个与原
生 PostgreSQL 血缘关系较近的产品:Amazon RDS for PostgreSQL 和
Amazon Aurora for PostgreSQL 。这两个产品会与 PostgreSQL 开源版本


推荐阅读