我亲爱的朋友们,今天让我们来讨论下 PostgreSQL 以及该数据库最有用的一些扩展。
PostgreSQL 是一个关系型数据库管理系统,主要特点:
- 数据库支持几乎无限的大小;
- 强大而且可靠的事务复制机制
- 内建的可扩展编程语言
- 继承
- 可通过一些扩展组件进行功能扩展
今天我们主要介绍最后一个特性,下面让我们来看一些 PostgreSQL 的扩展。
PostGIS
http://www.oschina.net/p/postgis
PostGIS在对象关系型数据库PostgreSQL上增加了存储管理空间数据的能力,相当于Oracle的spatial部分。PostGIS最大的特点是符合并且实现了OpenGIS的一些规范,是最著名的开源GIS数据库。
PostPic
http://www.oschina.net/p/postpic
PostPic 是 PostgreSQL 数据库的扩展,用来在数据库内进行图像处理,PostPic 为 SQL 增加了 image 类型,还包含很多相关的函数用来处理图片以及从图片中抽取对应的属性。
PL/Proxy
http://www.oschina.net/p/pl+proxy
PL/Proxy和PostgreSQL集群的结构关系可以用下图清楚地表示
Texcaller
http://www.oschina.net/p/texcaller
Texcaller 是 TeX 命令行工具的编程接口,采用纯 C 编写的可移植库,无需外部依赖。
PgMemcache
http://www.oschina.net/p/pgmemcache
PgMemcache 是一组 PostgreSQL 用户自定义函数提供了访问 memcached 缓存服务器的接口。安装 pgmemcache 很简单,但需要一些额外的琐碎要求:libmemcached 必须是 0.38 或者更新版本,PostgreSQL 必须是 8.4 或者更新版本。该扩展提供了 memcached 数据的读写、搜索和删除。
Prefix
http://pgfoundry.org/projects/prefix
prefix 模块实现了文本的前缀匹配操作,支持索引典型的写法:
SELECT * FROM osc_prefixes WHERE prefix @> ’0123456789′ ORDER BY length(prefix::text) LIMIT 1
pgSphere
http://www.oschina.net/p/pgsphere
pgSphere 为 PostgreSQL 数据库提供球面数据类型,函数,和运算函数。
Multicorn
http://www.oschina.net/p/multicorn
Multicorn 是一个 PostgreSQL 9.1+ 的扩展模块,用于简化外部数据封装开发,允许开发者使用 Python 编程语言开发。
- oracle_fdw – connects to Oracle databases.
- mysql_fdw – connects to MySQL databases.
- tds_fdw – connects to Sybase and Microsoft SQL Server databases.
- odbc_fdw – connects to any ODBC source.
- couchdb_fdw – connects to CouchDB databases.
- redis_fdw – connects to Redis databases.
- twitter_fdw – fetches messages from Twitter.
- ldap_fdw – queries LDAP servers.
- file_fdw – access data files in the server’s file system and query them as tables.
- file_fixed_length_record_fdw – reads flat files with columns of fixed width.
- PGStrom – uses GPU devices to accelerate sequential scan on massive amount of records with complex qualifiers.
- s3_fdw – reads files located in Amazon S3.
- www_fdw – accesses web services as a data source.
- multicorn.sqlalchemyfdw – used to access data stored in any database supported by the sqlalchemy python toolkit, such as MySQL, SQLite, Oracle, Microsoft SQL Server and many others.
- multicorn.fsfdw – used to access data stored in various files, in a filesystem.
- multicorn.csvfdw – used to access data stored in CSV files.
- multicorn.rssfdw – used to access items from an RSS feed.
Hstore
http://www.postgresql.org/docs/9.1/static/hstore.html
该模块为 PostgreSQL 提供存储Key-Value数据的功能,你可以定义 hstore 数据列来存储这样的数据,并可对这些数据进行分组、排序和唯一检索的查询。
Intarray
http://www.postgresql.org/docs/9.1/static/intarray.html
intarray 模块提供一系列有用的函数和运算用于操作整数数组,同时支持索引搜索。
如果数组中包含 null 元素,那么所有的这些操作都将抛出错误。当我开发一个简单的图像比较功能时,我会使用这个扩展 (http://leopard.in.ua/2010/12/09/bystroe-sravnenie-izobrazhenij-s-pomoshhyu-rubyphp-i-postgresql/, 俄文).
Dblink
http://www.postgresql.org/docs/9.1/static/dblink.html
Dblink 让你可以在 PostgreSQL 连接会话中支持连接到其他 PG 数据库,同时支持自主事务 autonomous transactions (like in Oracle).
That’s all folks!