欢迎大家赞助一杯啤酒🍺 我们准备了下酒菜:Formal mathematics/Isabelle/ML, Formal verification/Coq/ACL2, C++/F#/Lisp
PostgreSQL
PostgreSQL: The world's most advanced open source database
目录 |
简介
PostgreSQL 是一种非常复杂的对象-关系型数据库管理系统(ORDBMS),也是目前功能最强大,特性最丰富和最复杂的自由软件数据库系统。
PostgreSQL 的特性覆盖了 SQL-2/SQL-92 和 SQL-3/SQL-99,首先,它包括了可以说是目前世界上最丰富的数据类型的支持,其中有些数据类型可以说连商业数据库都不具备, 比如 IP 类型和几何类型等;其次,PostgreSQL 是全功能的自由软件数据库,很长时间以来,PostgreSQL 是唯一支持事务、子查询、多版本并行控制系统、数据完整性检查等特性的唯一的一种自由软件的数据库管理系统。直到最近才有 Inprise 的 InterBase 以及 SAP 等厂商将其原先专有软件开放为自由软件之后才打破了这个唯一。
PostgreSQL 提供了统一的客户端 C 接口。而不同的客户端接口都是源自这个 C 接口,比如 ODBC,JDBC,Python,Perl ,Tcl,C/C++,ESQL 等。
PostgreSQL 已经完全可以胜任任何中上规模范围内的应用范围的业务。目前有报道的生产数据库的大小已经有 TB 级的数据量,已经逼近 32 位计算的极限。 PostgreSQL是目前支持平台最多的数据库管理系统的一种, 所支持的平台多达十几种,包括不同的系统,不同的硬件体系。至今,它仍然保持着支持平台最多的数据库管理系统的称号。
PostgreSQL 的确还欠缺一些比较高端的数据库管理系统需要的特性,比如联机热备份,数据库集群,更优良的管理工具和更加自动化的系统优化功能 等提高数据库性能的机制等。
总而言之,PostgreSQL的特性已经完全可以满足绝大部分用户的需要,而且其质量和特性仍然在日新月异地进步着,所以, 我们有理由相信在不远的将来,PostgreSQL 肯定能够成为一种优秀的,自由的,商业数据库的替代产品。
最新版:8.2 http://blogs.huihoo.com/?p=307
安装指南
./configure gmake // ln -s /usr/bin/make /usr/bin/gmake su gmake install adduser postgres mkdir /usr/local/pgsql/data chown postgres /usr/local/pgsql/data su - postgres // sudo su postgres /usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data /usr/local/pgsql/bin/postmaster -D /usr/local/pgsql/data >logfile 2>&1 & /usr/local/pgsql/bin/createdb test /usr/local/pgsql/bin/psql test
stop postgresql
su postgres or sudo su postgres /usr/local/pgsql/bin/pg_ctl stop -D /usr/local/pgsql/data/
注意: postgres在默认是不接受tcp/ip连接的。有两种方式来控制它接受tcp/ip连接,一种是用启动参数 -i ,另一种方式是修改数据库目录里的文件:postgresql.conf中的参数,将tcpip_socket = false改为true port = 5432 前面的注释符号去掉。表示接受tcp/ip在5432的连接。
vi pg_hba.conf
host all all 127.0.0.1 255.255.255.255 trust # "local" is for Unix domain socket connections only local all all trust # IPv4 local connections: host all all 127.0.0.1 255.255.255.255 trust host all postgres 127.0.0.1 255.255.255.255 password
创建一测试用户: test
# edit file /etc/postgresql/pg_hba.conf, and lines at file top: local test test md5 host test test 127.0.0.1 255.255.255.255 md5 # su - postgres $ createuser -ADPE test $ createdb -O test test $ createlang plpgsql test $ exit # psql -h 127.0.0.1 -U test testst
Examples
http://pgfoundry.org/projects/dbsamples/ - A collection of sample databases for PostgreSQL.
大家可用这些数据做实验 :)
如 Dell Store2 database http://linux.dell.com/dvdstore/ , dbsamples 对 dvdstore database 做了 PosgreSQl port
Dell Store2 Physical Data Diagram
createdb -E LATIN1 dellstore2 -U postgres createlang plpgsql dellstore2 -U postgres psql -f dellstore.sql dellstore2 -U postgres
命令
- createdb—Creates a new database in postgreSQL. A database name is required when using this command.
- createuser—Creates a postgreSQL user. A user name is required when using this command.
- dropdb—Removes a database from postgreSQL. A database name is required when using this command.
- dropuser—Removes a postgreSQL user. A user name is required when using this command.
- initdb—Creates a new postgreSQL database installation. This command is used only once when the database is installed. It creates the base directory. This command cannot be used again.
- psql—SQL interface to the postgreSQL databases. A database name is required when using this command.
- vacuumdb—Cleans and analyzes a postgreSQL database.
常用用法
$ createdb mydb $ dropdb mydb $ cd src/tutorial $ export PATH=$PATH:/usr/local/pgsql/bin $ psql -s mydb mydb=> \dt 命令是显示表 mydb=> \di 显示索引 mydb=> \ds 显示序列 mydb=> \dv 显示视图 mydb=> \dp 显示权限 mydb=> \dS 显示系统表 mydb=> \dl 显示 lobjects mydb=> \d tablename 显示表的结构/索引/序列 mydb=> \d indexname 显示索引的详细信息 mydb=> \i basics.sql or basics.source 导入表 mydb=> SELECT version(); mydb=> show all; // 显示运行时参数的数值 pg_dump -x databasename > outfile psql -e database < outfile CREATE TABLE weather ( city varchar(80), temp_lo int, -- 最低气温 temp_hi int, -- 最高气温 prcp real, -- 降水量 date date ); DROP TABLE tablename; postgres@debian:~$ psql -l List of databases Name | Owner | Encoding -----------+----------+---------- template0 | postgres | EUC_CN template1 | postgres | EUC_CN test | postgres | EUC_CN (3 rows)
postgres@debian:~$ psql template1 template1=# select * from pg_tables; template1=# create user huihoo password 'huihoo' createdb;
mydb=# select md5('abc'); mydb=# select btrim('xyxtrimyyx','xy'); mydb=# select ltrim('zzzytrim','xyz');
http://docs.huihoo.com/postgresql/postgresql-doc-7.4-zh_CN/functions-string.html
PostgreSQL Limits
Limit Value
- Maximum Database Size Unlimited
- Maximum Table Size 32 TB
- Maximum Row Size 1.6 TB
- Maximum Field Size 1 GB
- Maximum Rows per Table Unlimited
- Maximum Columns per Table 250 - 1600 depending on column types
- Maximum Indexes per Table Unlimited
PostgreSQL发行版
- EnterpriseDB http://www.enterprisedb.com/
- Pervasive http://www.pervasive.com/
- PostgreSQL - Red Hat Edition http://sourceware.org/rhdb/
Graphical Clients
- pgAdmin III - Cross-platform administration tool
- PhpPgAdmin - Web-based PostgreSQL administration tool
- pgDesigner - Datamodel designer for PostgreSQL
Replication
Cluster/HPC
Storage
Powered by best-in-class open source software including the Solaris Operating System (OS), PostgreSQL, and ZFS.
http://www.greenplum.com/solutions/sun_Appliance.php
相关项目
- pgmemcache
- PgBouncer
- SkyTools
- PL/Proxy
- pg_bulkload
- PgWorksheet
- pgpool
- PostgresPy
- PostgreSQL Build Farm
- mysql2pgsql
More Projects:
商业支持
- Fujitsu Supported PostgreSQL - http://postgresql.fastware.com
- PostgreSQL for Solaris 10 - http://www.sun.com/software/solaris/postgresql.jsp
成功应用
在线文档
- PostgreSQL 8.1 中文文档 - http://docs.huihoo.com/postgresql/pgsqldoc-8.1c/
- PostgreSQL 8.0.0 中文文档 - http://docs.huihoo.com/postgresql/postgresql-doc-8.0-zh_CN/
- PostgreSQL 7.4 中文文档 - http://docs.huihoo.com/postgresql/postgresql-doc-7.4-zh_CN/
- PostgreSQL 7.3.3 中文文档 - http://docs.huihoo.com/postgresql/pgsql-doc-7.3/
- PostgreSQL 7.1.1 中文文档 - http://docs.huihoo.com/postgresql/pgsqldoc-7.1C/postgres.html
http://docs.huihoo.com/postgresql/
相关链接
- http://www.postgresql.org
- pgAdmin http://www.pgadmin.org/
- phpPgAdmin http://phppgadmin.sourceforge.net
- PostgreSQL 中文网 http://www.pgsqldb.org/
- 数据库迁移:将你的网站从MySQL改为PostgreSQL http://linux.chinaunix.net/docs/2006-12-06/3413.shtml