Postgres는 본래 버클리대학의 컴퓨터 사이언스 학부에서 학술적인 목적으로 개발되었던 데이터베이스로, 현재 몇몇 상용 데이터베이스들이 채용하고 있는 객체관계 개념을 실험적으로 적용시켜왔다. Postgres는 SQL92/SQL3언어, 트랜잭션간의 무결성 및 기타 확장가능한 형식을 지원한다. PostgreSQL은 이같은 버클리대학의 코드를 근간으로 개발되고 있는 오픈소스의 성과물이다.
PostgreSQL의 배포는 무료이며 최신버전은 www.PostgreSQL.org 에서 구할 수 있다.
PostgreSQL은 버전 6.3(1998년 3월 2일 발표)부터 유닉스 도메인 소켓 (unix domain sockets)을 사용한다. 아래의 테이블은 유닉스 도메인 소켓을 사용한 새로운 데이타베이스 접속예를 나타내고 있다. 소켓의 경로는 /tmp/.s.PGSQL.5432 이다. 이 옵션은 postmaster 에 -i 플래그를 넣어줌으로써 가능하며 그 의미는 "유닉스 도메인 소켓의 요청과 함께 TCP/IP 소켓의 요청도 동시에 기다린다"는 뜻이다.
표 1. Postmaster and PHP
Postmaster | PHP | Status |
---|---|---|
postmaster & | pg_connect("dbname=MyDbName"); | OK |
postmaster -i & | pg_connect("dbname=MyDbName"); | OK |
postmaster & | pg_connect("host=localhost dbname=MyDbName"); | Unable to connect to PostgreSQL server: connectDB() failed: Is the postmaster running and accepting TCP/IP (with -i) connection at 'localhost' on port '5432'? in /path/to/file.php3 on line 20. |
postmaster -i & | pg_connect("host=localhost dbname=MyDbName"); | OK |
PHP로 PostgreSQL에 접속하는 코드의 예제는 다음과 같다: $conn = pg_Connect("host=myHost port=myPort tty=myTTY options=myOptions user=myUser password=myPassword dbname=myDB");
예전에 사용하던 $conn = pg_connect ("host", "port", "options", "tty", "dbname") 은 추천하지 않는다.
PHP에서 PostgreSQL의 Large Object 기능을 사용하려면 그것을 트랜잭션 블럭안에 포함시켜야 한다. 트랜잭션 블럭은 begin 으로 시작해서 commit 혹은 end로 끝난다. 만약 트랜잭션이 실패하였다면 그 실패한 트랜잭션은 반드시 rollback 혹은 abort 로 끝나야 한다.