PostgreSQL 리눅스 사용자라면 PostgreSQL이라는 강력한 RDBMS가 있다는 것을 알 것이다. 물론 PostgreSQL 이외에도 쓸 만한 데이터베이스 시스템으로 mSQL과 mySQL이라는 것이 있다. PostgreSQL은 중간 정도의 기업규모에서 대용량 데이터베이스를 처리하기에도 충분한 기능을 가지고 있다.
PostgreSQL의 공식 사이트는 'www. postgreSQL.org'이다. PostgreSQL은 한마디로 객체지향 기능을 가지고 있는 관계형 데이터베이스 시스템이다. PostgreSQL의 모태가 되는 최초의 postgres 프로젝트는 1986년부터 마이클 스톤브레이커(Michale Stonebraker) 교수에 의해 주도됐으며, DRAPA(방위진보리서치기관), ARO(육군리서치연구소), NSF (미 국립과학재단) 등 여러 기관으로부터 후원을 받았다.
이 프로젝트는 애초에 상업적인 목적으로 개발된 것이 아니라 교육·연구 차원에서 개발된 것이었다. 아이러니컬하게도 Postgres에 관련된 문서는 사용자 매뉴얼에 직접 나타난 것보다 각종 논문으로 발표된 것이 훨씬 많다.
PostgreSQL의 특징 PostgreSQL은 다음과 같은 세 가지 특징을 가지고 있다
ㆍ관계형 모델 : Postgres 프로젝트 리서치의 최초의 목적 중의 하나는 복합 객체(complex object), 규칙 등을 다룰 수 있으며, 고수준으로 확장 가능한 관계형 DBMS를 제작하려던 것이었다. PostgreSQL는 관계형 DBMS가 가지고 있는 거의 모든 기능을 가지고 있다. 예를 들면, SQL에서 서술적인 질의어의 사용과 질의 최적화, 동시성 제어, 트랜잭션 처리, 다중사용자 기능 등을 제공 하고 있다. ㆍ고수준 확장성 : PostgreSQL은 사용자 정의 오퍼레이터와 타입, 함수, 액세스 메소드(access method)를 지원한다. ㆍ객체 지향 : PostgreSQL는 상속, 객체와 같은 객체 지향 개념에서 볼 수 있는 여러 특징을 초보적 이나마 구현하고 있다. PostgreSQL의 일반적인 구조는 post-master, postgres, frontend의 세 가지 부분으로 구성되어 있다. PostgreSQL은 정말 다양한 API를 지원한다. C API, C++ API, Tcl API, Perl API, Python API가 그것이다. 이중에서 앞으로 주로 사용하게 될 API가 하나 이상은 있을 것이다. 마음에 드는 것을 골라서 마음껏 사용해보기 바란다.
이중에서 C 와 C++ API는 일반적인 라이브러리와 클래스 형태로 제공된다. PostgreSQL이 공개적인 성격을 띈다는 점 때문에 정말 수도 헤아릴 수 없을 정도의 지원 툴이 전세계적으로 개발되어 사용되고 있다. PostgreSQL 내·외부에서 비공식이든, 공식적으로 지원되는 툴이나 다양한 패키지를 잠깐 나열해보자.
PostgreSQL 지원 툴 ODBC, UDBC, JDBC 드라이버, 자바 래드 툴, 자바 클래스, WISQL(윈도우 상호대화식 질의 툴), ISQL(상호대화식 질의 툴), AppGEN 개발 시스템(PostgreSQL 4GL 웹 데이터베이스 애플리케이션), EARP(웹 데이터베이스 디자인/구현 툴), dbengine (웹 인터페이스), NeoSoft NeoWebScript (Apache 웹서버 모듈), PHP/FI(서버측 html 엠베디드 스크립트 언어), WDB-P95(PostgreSQL과 웹의 게이트웨이)
PostgreSQL 설치 현재 PostgreSQL의 최신 버전은 7.0.2이다. 소스를 다운로드하여 압축을 풀면 대략 10MB 정도 된다. 설치시에는 최소 메모리 8MB와 소스, 바이너리 사용자 데이터베이스에 대략 45MB 정도의 디스크 공간을 필요로 한다. 대용량의 데이터베이스를 구축하지 않을 거라면 사실 이 정도까지는 필요없다. 소스파일을 풀고, 컴파일해 바이너리를 둘 공간과 약간의 데이터베이스 저장 공간만 있으면 된다.
PostgreSQL의 기본설치는 ./configure, make, make install, initdb만으로도 충분하다. 물론 make install만은 postgres 계정으로 수행해야 하는 게 중요하다. 그럼 환경 변수설정과 설치과정을 알아보자. 가장 먼저 해야 될 일은,
1. postgres 계정이 없다면 만든다. 2. 디스크 용량이 충분한지 체크한다. 디스크 용량이 거의 남아 있지 않을 경우도 있으므로 'df' 명령어를 이용해 디스크 용량을 체크하자. 3. 리눅스를 비롯한 몇몇 시스템에서는 flex를 사용한다. 시스템에 있는 flex가 문제가 없는 버전인지 점검한다. 다음과 같이 입력한다. flex --version.
4. 설치해보자. 편의상 초기 컴파일 과정은 root로 로그인하여 한다. 먼저, post gresql-7.0.2.tar.gz를 /root 디렉토리에 가져다 놓는다. 5. 다음으로 postgreSQL 배포본의 압축을 푼다. 다음 과정을 따라하면 된다. cd tar xvzf postgresql-7.0.2.tar.gz 6. /usr/local/pgsql 디렉토리를 만들고 postgres 소유로 만들어둔다. su -l Password : 해당암호 입력 mkdir /usr/local/pgsql chown postgres.postgres /usr/local/pgsql
7. src 디렉토리로 들어가서 ./configure를 실행해 자신의 시스템에 맞는 사양을 고른다. 리눅스 사용자라면 엔터만 두세 번 두드리면 알아서 잡는다. cd cd postgresql-v7.0.2/src ./configure 8. 컴파일한다. make 'All of PostgreSQL is successfully made. Ready to install.'이라는 메시지가 보이면 성공한 것이다. 설치만은 postgres 사용자로 로그인하도록 한다. make install 무리없이 잘 설치됐을 것이다. 설치되지 않는 대부분의 경우는 /usr/local/pgsql 디렉토리를 만들어 두는 것을 잊었거나, postgres의 소유로 되지 않아서 그럴 것이다. 만일, root로 make install했다면, 다음의 명령만 내려주면 아무 이상없이 사용할 수 있다. chown -R postgres.postgres/usr/ local/psql
9. 시스템이 공유 라이브러리를 잘 찾을 수 있도록 root로 로그인해 /etc/ld.so.conf 파일에 다음의 한 줄을 추가한다. /usr/ local/pgsql/lib 그리고 /sbin/ldconfig를 실행한다. 10. 환경변수를 설정할 차례이다. 레드햇을 사용할 경우에는 /etc/profile.d/ postgres-environment.sh (bash 쉘을 사용할 경우) 파일을 만들고, 다음의 내용을 적는다. 파일의 이름은 아무래도 상관없으나 .sh 로 끝나야 한다.
PATH=$PATH:/usr/local/pgsql/bin MANPATH=/usr/local/pgsql/man PGLIB=/usr/local/pgsql/lib PGDATA=/usr/local/pgsql/data export PATH MANPATH PGLIB PGDATA
csh나 tcsh 사용자라면, /etc/profile.d/ postgres-environment.csh 파일에 setenv를 사용해 위와 같은 내용의 환경변수를 설정할 수 있다. 만일 개별적인 특정 사용자에게만 위의 환경을 적용시키고 싶다면, 사용자 홈 디렉토리에 .bash_profile(bash일 경우)나 .cshrc(c 셸, tcsh 셸 사용자일 경우)에 위의 내용을 적어주면 된다. postgres로 다시 로그인한다. 지금부터 모든 작업은 postgres로 해야 한다.
11. 데이터베이스를 초기화한다. initdb 12. 데이터베이스에 접근할 퍼미션을 설정한다. 이 작업은 /usr/local/pgsql/data/ pg_hba.conf를 편집함으로써 할 수 있다. 이 파일을 편집하고 난 뒤에는 반드시 read only 모드로 만들어둔다. 13. postmaster 데몬을 수행한다. postmaster -S -D /usr/local/pgsql/ data
14. postgres를 부팅시 자동으로 띄우게 하려면 다음과 같이 한다. 리눅스를 포함한 거의 모든 UNIX 시스템에는 /etc/ rc.d 디렉토리 아래 부팅시에 수행되는 여러 스크립트들이 있다. 그중에서 rc.local 정도의 파일에 다음과 같이 적는다. 물론, root로. # PostgreSQL database Server starting echo "PostgreSQL Starting..." su postgres -c "/usr/local/pgsql/bin/ postmaster -S -D /usr/local/pgsql/ data" Redhat 리눅스 같은 경우에는 rc.d 구조가 조금 다르긴 하지만, rc.local 파일에 그냥 적는 것이 더 편하다.
간단한 사용방법 PostgreSQL을 운영하려면 사용할 데이터베이스와 사용자를 등록해야 한다. /usr/local/pgsql/bin에 보면 이와 관련된 프로그램들이 준비되어 있다. post라는 데이터베이스를 만들려면 createdb 명령을 사용하면 된다. $ createdb post
postuser라는 사용자를 등록하려면 다음과 같이 한다. $ createuser postuser
그러면 여러 가지 메시지가 뜰 것이다. 적당한 판단에 따라 Yes 또는 No를 치거나 엔터키를 누른다. 사용자 권리를 제대로 설정하지 않으면 자신의 데이터베이스를 삭제할 수 없거나, 데이터를 입력할 수 없다. createdb와 createuser에 반대되는 명령은 destroydb와 destroyuser 명령이다. post라는 데이터베이스를 만들었으면 이제 테스트해보자. $ psql post
표준 SQL을 사용해 데이터를 입력하거나 질의할 수 있다. 다른 SQL 명령어와 API 언어를 사용해 멋진 게시판을 만들 준비가 됐다. PostgreSQL의 풍부한 기능을 더 사용해보기 바란다.
MySQL 웹에서 게시판이 많이 만들어지면서 많이 알려진 데이터베이스이다. 작지만 강력한 기능을 가지고 있고 PERL, PHP 등과 잘 통합된다. 보통 Apache, PHP, MySQL을 써서 게시판이나 기타 자료실을 많이 운용하고 있다. 그러면 MySQL을 어디서 구하고 어떻게 설치하는지 알아보자. 설치하기 전에 요구사항을 보면 다음과 같다.
ㆍ 압축 툴 : GNU gunzip GNU tar ㆍ 컴파일러 : ANSI C++ compiler. gcc 2.8.1 이상, egcs 1.0.2 이상 gcc 2.7.x 버전은 버그가 있으므로 MySQL을 설치하기 위해서는 꼭 2.8.x 버전으로 업 그레이드한다. 매우 중요하므로 버전을 확인한다. ㆍ Make 툴 : GNU make 3.75 이상
RPM 설치 레드햇 리눅스 사용자라면 RPM으로 설치할 수 있다. RPM 패키지는 다음 사이트에서 http://www.mysql.com/download. html 에서 최신 버전(3.22.32)을 가져온다. 홈페이지에 여러 개의 rpm이 있는데, 아래와 같은 목록을 받으면 된다. The server for i386 systems (RedHat). Benchmarks/tests using Perl DBI for i386 systems (RedHat). Client programs for i386 systems (RedHat). Include files and libraries for development for i386 systems (RedHat). Client shared libraries for i386 systems (RedHat).
위의 목록 중에서 Benchmarks 자료가 필요없다면 다운로드하지 않아도 된다. 다운로드한 RPM 파일을 설치하려면 다음과 같다. # rpm -Uvh MySQL-3.22.32-1.i386.rpm # rpm -Uvh MySQL-client-3.22.32-1.i386.rpm # rpm -Uvh MySQL-devel-3.22.32-1.i386.rpm
RPM은 이렇게 간단하게 프로그램을 설치할 수 있다. 좀더 고급 사양을 원하거나 DBMS를 최적화하거나 한글 메시지와 한글 테이블을 사용하고자 한다면, 소스를 받아서 설치해야 한다. |