오픈소스 데이터베이스의 양대산맥 MySQL vs PostgreSQL 작성일: 2003/03/25 토픽: Developer's Guide
박훈성 | hspark@hancom.com 김정웅 | jwkim@desk.hancom.com
이 글은 오픈소스 데이터베이스의 양대산맥으로 불리는 MySQL과 PosGSQL에 관해 다룬 글이다. 인터넷의 발전 속에서 오픈소스는 기술의 평준화에 분명히 기여하고 있다. 그 안에 MySQL이라는 DBMS가 있으며, 점점 사용자를 늘려가고 있다. MySQL은 사용자 관리, 게시판 등의 빠른 속도를 요하는 곳에서는 충분한 강점을 가지고 있다. 반면에 PostgreSQL(PGSQL)은 좀더 DBMS 본연의 기능에 충실한 제품으로, 두 제품에 대한 특징을 가지고 각 업무에 적합하게 적용하면 될 것이다. PGSQL은 데이터베이스에 많은 작업을 적용하고 싶을 때, 혹은 데이터베이스 자체를 공부하고 싶은 사람들에게 적합한 제품이라면, MySQL은 빠른 속도를 요하는 곳에서 적합한 제품이라고 볼 수 있다.
MySQL
MySQL에 대해 알고 싶은가? 그럼 이글을 읽어보자. MySQL은 1995년 마이클 몬티 위데니우스와 데이비드 애스마크 두 사람과 알랜 라르슨이 도와 시작되었고, 저가로서 최상의 소프트웨어를 제공하기위해 개발되었다. 또한 2001년에 MySQL AB가 설립되면서 마르텐 미코스가 CEO로서 합류했다. 이렇게 시작된 MySQL은 자유소프트웨어의 대표적인 소프트웨어가 되었으며. 현재는 가장 유명한 오픈소스데이터베이스가 되었다.
MySQL 데이터베이스는 최고의 속도와 유연성으로 디자인되었고, 단일 모듈디자인으로 인해 사용하기 쉽고 빠르다. MySQL의 내부구조는 웹과 비즈니스에 없어서는 안 될 트랜젝션(transaction)이나 하위레벨 로킹(low-level locking)과 같은 애플리케이션들을 위해 가장 중요한 요소들을 포함하고 있다. 대규모 데이터셋(dataset)과 다양한 프로그래밍 언어 및 대부분의 하드웨어 플랫폼을 지원하며 수백만의 오픈소스 커뮤니티가 현업에 적용하여 엄격하게 테스트되어 왔기 때문에 사실상 버그가 없다고 할 수 있다.
MySQL의 사용범위는 웹 데이터베이스, 전자상거래, 데이터 웨어하우징, 로깅 프로그램과 분산 프로그램 등 다양하다. 또한 서드파티 소프트웨어와 다른 기술들에 포함되어 사용이 점점 늘어나고 있다. MySQL은 GPL(General Public License)를 채용하여 무료 사용가능하며, GPL에 구애받지 않고자 하는 상용제품을 개발하고자 하는 사용자를 위해 상용버전으로 구입이 가능하다. 많이 듣는 얘기겠지만 자세한 내용은 GPL을 살펴보기 바란다. 테이블 핸들러와 코어서버의 독특한 독립적 구조로, 엄격한 트랜젝션 컨트롤 하에서 엄청나게 빠른 디스크 접근 속도로 동작하는 것이 가능하다.
1. MySQL
1.1 기능성 1.1.1 MySQL은 다음과 같은 기술에 대해 API를 가지고 있다. ADA C / C Common Lisp Delphi Dylan Guile MathLab PHP Pike Python TCL ODBC JDBC 기타 등등.. * 참고: C API (http://www.mysql.com/documentation/mysql /index.html)
1.1.2 MySQL이 지원하는 Storage Engine을 알아보자. - MyISAM 기존 ISAM을 대치하는 새로운 Storage Engine으로 static,dynamic과 compressed (read-only) row 포맷을 지원한다. 그러나 트랜잭션은 지원하지 않는다. Text와 compressed index를 지원 Data와 index의 파일이 분리되어 있다. 매우 빠른 읽기/쓰기 성능을 가지고 있으나 낮은 읽기/쓰기 동기성(concurrency)을 갖는다. Log와 같은 select 와 insert에서는 매우 훌륭한 동기화(concurrency)를 갖는다. 체크 및 복구 프로그램으로 myisamchk 가 있다. 특히 웹사이트와 logging 처리에 우수하다.
- InnoDB InnoBase Oy로부터 활발하게 개발된 코드이다. row level locking과 함께 완벽한 트랜잭션(ACID) 처리가 된다. 같은 테이블에서 읽기/쓰기에 대해 MyISAM보다 좋은 동기화(concurrency) 처리를 한다.
무결성(consistency) 읽기를 수행한다(Oracle-style MVCC). 개개의 파일에 적재되는 것이 아니라 tablespace를 사용한다. MySQL AB가 제작자/개발자로서 계약을 통해 지원을 제공한다. MySQL 4와 MySQL Max에 포함되어 있다. 과부하상태에서도 안정적인 동작을 수행한다.
- Merge MySQL AB가 개발한 하나의 테이블과처럼 사용되는 MyISAM 같은 테이블 모음(collection)이다. 어떤 테이블들은 압축(compressed) 되어 사용할 수 있다. ALTER TABLE로 테이블의 설정을 변경할 수 있으며, Insert/Delete/Update/Select 가 사용가능하다. Logging 시스템 제작에 매우 유용하다.
- In-Memory Hash Tables 메모리에서 동작하는 Hash 기반의 인덱싱 테이블이다. Insert/Delete/Update/Select가 사용가능하며, Temporary table 이나 Lookup table에 유용하다. 제한적이며 특수화되었다.
- BerkeleyDB Sleepycat Software Inc에서 개발되고 지원된다. Page level locking으로 완벽한 트랜잭션(ACID)을 지원한다. 같은 테이블에 읽기/쓰기를 할 경우에 MyISAM보다 좋은 동기화(concurrency)를 지원한다. Primary key 찾는데 MyISAM 보다 빠르다. 테이블당 하나의 파일에 데이터와 인덱스가 저장된다. 바이너리로 제공되는 MySQL Max 에 포함되어 있다. 보다 낮은 레벨에서 MySQL과 독립적으로 동작한다.
1.1.3 Replication 기술 하나의 Master가 업데이트되는 데이터의 SQL 명령어를 기록하여 가지고 있는 기술. Slave들은 업데이트를 읽거나 재수행하기 위해 master나 다른 slave에 접속한다. MySQL 4.0에서 slave는 모든 질의를 읽기위한 쓰레드와 실제 업데이트를 수행하는 것 두개의 쓰레드를 사용한다. Slave가 오랜 질의를 수행하는 동안 master가 다운되더라도 모든 slave가 완벽한 데이터를 갖도록 보장한다.
1.1.4 MySQL Control Center MySql의 클라이언트로 MySQL Control Center가 있다. GPL 라이선스로 제공되는 Control Center는 Qt library로 제작되어 DB 관리기능을 GUI로 작업할 수 있다. 쿼리문을 하일라이팅하여 보여주며, 테이블의 데이터를 직접 수정가능하며, 로컬과 리모트 서버관리를 동시에 제공한다. 콘솔명령이 익숙하지 않은 사용자가 사용하기 매우 편리하게 되어 있다.
화면1 MySQL Control Center
1.1.5 MySQL Connector drivers MySQL은 다음과 같은 고성능의 서버연결 드라이버들을 제공한다.
1) MySQL Connector/J: JDBC-3.0 API를 지원하는 Type4 JDBC 드라이버이다. 2) MySQL Connector/ODBC: MyODBC라고 하며, ODBC API를 지원한다. * 참고: http://www.mysql.com/downloads/api-myodbc-3.51.html 3) MySQL Connector/C : Standard C template libraries (STL)로 제공된다.
1.1.6 MySQL의 성능 Benchmark 1) Throughput 2002년 2월 eWeek의 Benchmark Test에 의하면 Oracle과 MySQL이 1000명의 동시접속 사용자환경에서 최고의 성능을 보인다고 보고된 적이 있다.
그림1
2) Response Time Oracle9i Enterprise 와 MySQL이 가장 빠른 응답속도를 내고 있다.
그림2
데이터베이스의 Banchmark는 시스템의 사양과 질의 내용 및 적용환경에 따라 매우 다르게 반영될 수 있음을 상기하자. 위의 벤치마크는 일반적인 질의 환경과 SMP 서버에서의 결과이다. * 참고: http://www.mysql.com/information/benchmarks.html
3) Connection에 사용되는 메모리 사용률
Database |
Concurrent connection 당 메모리 사용량 |
Oracle9i |
400kB |
DB2 |
117kB |
MySQL4.0.1 |
50kB |
MSSQL |
50kB |
ASE |
50kB |
1.2 안정성 MySQL AB는 MySQL 사용을 고려하고 있는 수많은 사용자들에게 다음과 같은 안정성에 대한 등급 기준을 제공한다.
Replication -- Gamma
Repllication을 사용하는 대규모 서버 클러스터로 사용될 경우 좋은 결과를 보이고 있으며, MySQL 4.x에서 계속 향상되고 있다.
InnoDB tables -- Stable (in 3.23 from 3.23.49)
3.23.49버전부터 대규모와 과중한 로드가 필요한 시스템에서 안정성을 보장한다.
BDB tables -- Gamma
Berkeley DB 코드는 매우 안정적이다. MySQL AB는 MySQL 서버의 엔진 인터페이스를 게속 향상시켜가고 있다. 다른 안정적인 테이블 포맷과같이 완전히 테스테되어지기 까지 시간이 필요할 것이다.
FULLTEXT -- Beta
Full-text 검색은 잘 동작한다. 하지만 아직은 폭넓게 사용되어지지 않고 있으며, MySQL 4.0에서 향상되어져 왔다.
MyODBC 2.50 (uses ODBC SDK 2.5) -- Gamma
폭넓게 사용되며, ODBC 드라이버에 독립적인 데이터베이스 응용프로그램에 폭넓게 사용되며 향상되고 있다.
Automatic recovery of MyISAM tables -- Gamma
MyISAM 엔진에서 테이블이 사용된 뒤 정상적으로 닫혔을 경우 자동으로 체크하고 회복하는 하는 기능이 정상적으로 동작하지 않았을 경우에 복구한다.
Bulk-insert -- Alpha
MySQL 4.0의 MyISAM 테이블에서 고속으로 대량의 데이타 INSERT를 한다.
Locking -- Gamma
파일 기술자(file dsceripter)를 조작하는 시스템 기본 함수(fcntl())를 사용하여 매우 시스템에 의존성이 높은 기능이다. NFS를 사용하는 일부 시스템의 경우 mysqld 실행시 --skip-external-locking 옵션을 주어 실행할 것을 권고 하고 있다.
이상으로 보는 바와 같이 주요기능에 대해 안정성을 alpha, beta, gamma, stable 순의 기준을 제공하며, MySQL의 대부분 기술이 InnoDB 엔진의 stable을 포함하여 Gamma 이상의 안정성을 보이고 있다.
1.3 확장성
다양한 기업 IT환경에 사용되는 거의 모든 시스템에 이식이 가능하다.
Native Threads(Multi CPU)
Sun Solaris 2.5
Linux(All arch's)
HP UX11
IBM AIX4
Apple MacOS X
DEC (Tru64) UNIX
BSDI3
FreeBSD3
IBM OS/2
SCO Unixware7
SGI Irix 6.x
Windows95,98,NT,2k,XP
Emulated threads(Single CPU)
BSDI2.x
FreeBSD 2.x
HP HPUX 10.20
NetBSD Intel/Alpha
OpenBSD 2.x
Sun SunOS4
SCO Openserver
AmigaOS
Future: QNX&Novell
2. 앞으로의 발전방향
MySQL의 개발자들은 기능을 위해 스피드를 희생하지 않는다는 전제하에 기본전략을 수립하고 있다. 처리량을 늘리기 위한 최선의 솔루션을 찾아 간다는 것이며, 모든 서버 코드들은 두 사람 마이클 몬티 위데니우스와 데이비드 애스마크가 최선의 솔루션을 확인한 후에 포함된다. MySQL은 MySQL AB에 직원들이 개발하고 있으나 PostgreSQL의 경우 많은 사람들이 커널 개발에 참여하고 있다.
다음은 MySQL TODO 목록이다. 보는 바와 같이 사용자 편리성과 상용DB에 많은 기능들을 포함하고 하는 의지가 엿보인다.
- MySQL TODO 목록
안정적인 OpenSSL 지원 (MySQL 4.0이 지원하고 있지만 완벽하지 않다).
다중언어 데이터 지원
모든 client 명령어에 대한 Help 지원
Stored procedure 지원
모든 테이블 타입에서 Foreign Key 지원
다중 결과 Set 지원
INSERT/DELETE/UPDATE 사용시 임시 Key버퍼 캐쉬
다른 디스크에 심보릭 링크된 테이블에 대한 ALTER TABLE 수행시 해당 디스크에 임시 테이블 생성기능
DATE/DATETIME에 Time zone정보 추가
FreeBSD, MIT-pthreads
Locked threads의 CPU time 개선.
Thread 사용없이 모든 라이브러를 컴파일 할 수 있도록 configure 수정
오랫동안 사용되지 않는 지연된 Key flush 스케줄러 추가
Key 관련 JOIN 최적화
Read-lock상태의 파일에 INSERT SQL_CONCURRENT와 mysqld 사용
Server-side cursors.
LIMIT사용에 변수 기능 추가(LIMIT @a,@b)
UPDATE문에 변수사용 추가 (ex UPDATE TABLE foo SET @a=a b,a=@a, b=@a c)
기타 변수 관련 사용기능 추가
DEFAULT값 사용 개선
Fix `libmysql.c' to allow two mysql_query() commands in a row without reading results or give a nice error message when one does this.
MIT Thread 완벽지원
LOAD DATE INFILE의 기능개선
아직 릴리즈되지 않은 MySQL 3.23.56의 개선사항을 살펴보자.
BLOB NOT NULL 컬럼에서 IS NULL을 함께 사용하도록 수정.
MERGE 테이블에서 MAX()함수의 최적화 오류수정
새로운 접속에 대한 RAND() 초기화함수 향상
파일기술자(file descripter)에서 이벤트를 기다리는 시스템 함수(poll()) 사용시 connect timeout 버그수정.
SELECT * FROM table WHERE datetime1 IS NULL OR datetime2 IS NULL. 버그 수정
INTERVAL, CASE, FIELD, CONCAT_WS, ELT and MAKE_SET에 사용되는 aggregate 함수 버그 수정.
--lower-case-table-names (default on windows) 사용으로 인한 테이블명 에러(Errcode 13) 버그 수정
Binary log 버그 수정
mysqladmin --relative 버그 수정
일부 64 bit 시스템에서 SHOW STATUS 명령시 버그 수정
3. 무엇을 선택할 것인가?- MySQL의 장점
MySQL서버는 일반적으로 PostgreSQL보다 빠르다. MySQL 4.0.1은 쿼리캐쉬 기술을 통해 read-only site에 대해 최선의 성능을 발휘한다.
많은 사용자를 가지고 있다.
많은 API를 개발언어에 제공하고 있다.
Replication은 거의 완벽하게 테스트되어졌다.
풍부한 문서
Multi-Thread: Context switching과 공용자원 접근 속도가 빠르다.
Backup이 편리하다(InnoDB 제외): 테이블당 파일하나의 storage를 갖는다.
디스크의 물리적 결함에 의한 손실을 대부분 복구할 수 있는 툴을 제공한다.
업그레이드시 데이터의 덤프 및 리스토어가 불필요하다.
- MySQL의 단점
트랜잭션 지원이 완벽하지 않다(MyISAM의 경우 Table locking을 사용한다).
사용자정의 함수(UDF)의 사용이 쉽지 않고 유연하지 못하다.
다중 테이블에 update가 쉽지 않다(4.0.2에서 수정).
SUB SELECT가 지원되지 않는다(4.1-alpha버전에서 지원).
MySQL의 장단점을 살펴보면, MySQL의 최대 단점인 완벽한 트랜잭션을 지원하지 못하고 복잡한 다중질의를 사용할 수 없다는 것으로 인해 MySQL의 많은 장점들을 무시되는 경향이 있다. 이는 기업용 솔루션이나 mission critcal한 솔루션 제작에 MySQL의 사용을 주저하게 하는 부분인 것이 사실이다. 그러나 일반적인 솔루션이나 솔루션 제작시 MySQL의 단점을 보완해 개발한다면 충분히 기업용 솔루션 제작에 사용될 수 있는 명실상부한 오픈소스의 데이터베이스가 될 것이다.
4. 튜닝에 대한 짧은 견해자동차의 튜닝과 마찬가지로 DB역시 튜닝을 얼마나 할 수 있을까 하는 것이 DBA들의 재미일 것이다 간략하게 말하자면 튜닝에는 시스템(CPU, 메모리,디스크I/O)튜닝, OS튜닝, 스키마와 쿼리튜닝의 세 가지로 볼 수 있겠는데, MySQL은 my.cnf 파일의 수정으로 DBMS의 기본적인 튜팅이 가능하여 다른 DB에 비해서 기본적인 튜닝이 쉬운 편이다.
5. 문서의 지원기술문서의 지원은 향후 사용자와 개발자의 발전을 위해 매우 중요하다. 아래 사이트를 한번 방문해보자, MySQL의 사용에 필요한 모든 것을 발견할 것이다. http://www.mysql.com/documentation/mysql/bychapter/index.html
위 문서를 통해 살펴볼 수 있는 것은 다음과 같다.
1 General Information : 본 매뉴얼에 대한 기본적 설명 및 MySQL에 기본정보
2 MySQL Installation : 각 OS별 MySQL 설치 방법 및 Patch 방법
3 Tutorial Introduction : 기본사용법 설명
4 Database Administration : MySQL의 설정 및 관리자가 알아야 할 정보
5 MySQL Optimisation : 성능향상을 위한 정보
6 MySQL Language Reference : MySQL 사용에 필요한 기본 문법
7 MySQL Table Types : MySQL에서 사용하는 Table 포멧들의 정보
8 MySQL APIs : 개발 언어와 관련된 API 설명
9 Extending MySQL : 사용자 정의 함수와 같은 확장방법과 설명.
A Problems and Common Errors : 발견된 에러 설명
B Contributed Programs : Add-on 및 기타 도움을 받은 프로그램들
C Credits : 개발자, 공헌자, 지원자들에 대한 설명
D MySQL Change History : MySQL이 발전해온 과정
E Porting to Other Systems : 새로운 시스템으로 포팅하는 방법
F Environment Variables : 사용되는 환경변수 목록과 설명.
G MySQL Regular Expressions : MySQL에서 정규식 사용법
H GNU General Public License : GPL 라이선스
I GNU Lesser General Public License : LGPL 라이선스
SQL command, type and function index : SQL명령어와 함수 인덱스 목록
Concept Index : 용어 인덱스 목록
6. 마치며인터넷의 발전은 그와 관련된 소프트웨어기술의 평준화를 가져왔고, 인터넷의 발전 속에서 오픈소스는 기술의 평준화에 분명히 기여하고 있다. 그 안에 MySQL이라는 DBMS가 있으며, 점점 사용자를 늘려가고 있다. 이 즈음에 오픈소스의 핵심축에 있는 APM의 M을 알아보는 기회가 되었길 바라며, 선택은 사용자의 몫이지만 그 선택이 기여로 이어질 때 오픈소스의 발전이 꾸준히 이루어지지 않을까 생각해본다.
PostgreSQL오픈 소스 데이터베이스의 또다른 제품인 PostgreSQL의 자세한 설명에 앞서 왜? 저자가 PGSQL을 선택해서 사용하고 있는지에 대한 설명을 먼저 시작한다. 익숙하지 않은 제품이라는 이유만으로 너무나 많이 들어본 질문이다. 왜? MySQL을 사용하지 않고, PostgreSQL를 사용하고 있는 것일까?
저자의 경우, 98~99년경 온라인 사용자 설문 조사를 위해서 간단하게 MySQL을 이용해서 일반적인 데이터베이스 프로그램들처럼 사용자 정보, 설문 문항, 설문 결과 등으로 나누어서 테이블 구성했으며, 일정 기간 사용자 설문을 진행해서 원하는 결과에 대한 레포트 프로그램을 작성했다. 당연히 일정기간동안 설문을 진행하면 전혀 문제가 없었으나, 최종 완료후 설문 결과를 레포트 형태로 만들어야 할 때, 골치아픈 난관에 다다랐는데 그전까지는 상용 제품에만 익숙했진 관계로 당연히 있다고 생각한 서브쿼리 및 조인에 대한 기능들을 제공하지 않는 것이었다. 물론 기간내의 프로그램을 완료하기 위해서 다중 for(;;) 루프를 통해서 이 문제를 해결했으나, 이때의 악몽으로 인해 저자의 머릿속에서 MySQL을 잊어버리게 되었다. - 물론 최근의 MySQL에서는 위와 같은 기능을 어느 정도는 지원한다. - 좀더 심하게 얘기하면 PostgreSQL을 만나기 전까지는 오픈데이터베이스의 성능 자체 및 한계를 의심하고 있었다.
1. PostgreSQL 개요PostgreSQL은 postgres에서 출발한다. postgres는 캘리포니아 버클리(UCB) 대학의 Michael Stonbraker 교수의 주도로 시작된 데이터베이스 연구 프로젝트였다. 처음에는 교육과 연구를 목적으로 개발되었으나 사용자 수의 증가에 따라 지원 부담이 커져서 4.2 버전을 마지막으로 postgres 프로젝트는 종료하게 된다. postgres 프로젝트는 그대로 끝나지 않고 postgres95와 Illustra 데이터베이스라는 두 개의 제품으로 탄생하게 된다. Illustra 데이터베이스를 postgres를 시작한 Michael Stonbraker 교수에 의해 상업용 버전으로 제품화한 것이다. 이후 Illustra는 Informix사에 인수되어 Informix Universal Server 제품과 통합되었다. postgres95는 postgres 프로젝트에 참가하고 있던 당시 UCB의 대학원생 Andrew Yu와 Jolly Chen에 의해 개발되었다. Postgres는 postgres95로 오면서 몇 가지 수정돼 특징을 갖는다.
ANSI C를 따르도록 소스코드가 수정되어서 프로그램 크기가 25%로 작아지고 보기가 쉬워졌으며 질의 언어를 PostQuel에서 표준 SQL로 변경되었다. 기존 Postgres에 비해 30~50%정도의 성능 향상을 가져 왔고 라이선스를 수정해 상용화가 가능해 졌다.
그러나 Andrew Yu와 Jolly Chen가 졸업하면서 또 한번의 개발이 멈추는 위기를 맞게 되지만 캐나다의 Marc G. Fournier씨가 주관하는 현재의 개발팀이 인수받아 계속 이루어지고 있다. 1997년 1월에 나온 6.0 버전부터는 Postgres95라는 이름이 적절하지 않아 PostgreSQL로 이름이 바뀌었으며, 최근까지 7.3.x 버전이 발표되었다.
1.1 특징 1.1.1 관계형 모델 Postgres 프로젝트 리서치의 최초의 목적 중의 하나는 복합객체(complex object), 규칙(rule) 등을 다룰 수 있으며, 고수준으로 확장 가능한 관계형 DBMS를 제작하려던 것이었다. 따라서 PostgreSQL은 관계형 DBMS가 가지고 있는 거의 모든 기능을 가지고 있다. 예를 들면 SQL에서 서술적인 질의어의 사용과 질의 최적화, 동시성제어, 트랜잭션처리, 멀티 유저기능 등을 제공하고 있다.
1.1.2 객체지향 PostgreSQL은 상속, 객체와 같은 객체지향개념에서 볼 수 있는 여러 특징을 초보적이나마 구현하고 있다. 이러한 특징때문에 어떤 사람들은 PostgreSQL을 설명할 때 ORDBMS라고 말하기도 한다. - 객체지향이라고 해서 반드시 PGSQL을 객체 지향적인 디자인을 이용해서 디자인하고, 이용할 필요없이 일반적인 관계형 데이터베이스(RDBMS)로 이용할 수 있다.
1.1.3 고수준 확장성 PostgreSQL은 사용자 정의 오퍼레이터와 타입, 함수, 엑세스 메소드를 지원한다.
1.2 PostgreSQL 저작권 PostgreSQL 저작권은 기본적으로 소스코드까지 공개되어 있으며, GPL과 다른 공유 성격을 가진 Berkeyly 라이선스를 기반으로 배포되고 있으며, 임의의 목적에 사용과 복사, 수정, 및 배포에 대해서 자유로우며, 관련된 어떤 보증도 제공하지는 않고 있다.
1.3 지원 플랫폼 및 API PostgreSQL은 C/C , Tcl, Perl, Python 등에 대한 API를 제공하고 있으며, ODBC, JDBC, PHP, ESQL/C 등 일반적인 개발 환경에서 필요로 하는 다양한 툴셋을 제공하며, 다음의 플랫폼에서 동작한다.
OS |
Processor |
Version |
Reported |
Remarks |
AIX 4.3.2 |
RS6000 |
v7.0 |
2000-04-05 |
Andreas Zeugswetter |
BSDI 4.01 |
x86 |
v7.0 |
2000-04-04 |
Bruce Momjian |
Compaq Tru64 5.0 |
Alpha |
v7.0 |
2000-04-11 |
Andrew McMurry |
FreeBSD 4.0 |
x86 |
v7.0 |
2000-04-04 |
Marc Fournier |
HPUX |
PA-RISC |
v7.0 |
2000-04-12 |
Both 9.0x and 10.20. Tom Lane |
IRIX 6.5.6f |
MIPS |
v6.5.3 |
2000-02-18 |
MIPSPro 7.3.1.1m N32 build. Kevin Wheatley |
Linux 2.0.x |
Alpha |
v7.0 |
2000-04-05 |
With published patches. Ryan Kirkpatrick |
Linux 2.2.x |
armv4l |
v7.0 |
2000-04-17 |
Regression test needs work. Mark Knox |
Linux 2.2.x |
x86 |
v7.0 |
2000-03-26 |
Lamar Owens |
Linux 2.0.x |
MIPS |
v7.0 |
2000-04-13 |
Cobalt Qube. Tatsuo Ishii |
Linux 2.2.5 |
Sparc |
v7.0 |
2000-04-02 |
Tom Szybist |
LinuxPPC R4 |
PPC603e |
v7.0 |
2000-04-13 |
Tatsuo Ishii |
Mklinux |
PPC750 |
v7.0 |
2000-04-13 |
Tatsuo Ishii |
NetBSD 1.4 |
arm32 |
v7.0 |
2000-04-08 |
Patrick Welche |
NetBSD 1.4U |
x86 |
v7.0 |
2000-03-26 |
Patrick Welche |
NetBSD |
m68k |
v7.0 |
2000-04-10 |
Mac 8xx. Henry B. Hotz |
NetBSD/sparc |
Sparc |
v7.0 |
2000-04-13 |
Tom I Helbekkmo |
QNX 4.25 |
x86 |
v7.0 |
2000-04-01 |
Dr. Andreas Kardos |
SCO OpenServer 5 |
x86 |
v6.5 |
1999-05-25 |
Andrew Merrill |
SCO UnixWare 7 |
x86 |
v7.0 |
2000-04-18 |
Billy G. Allie |
Solaris |
x86 |
v7.0 |
2000-04-12 |
Marc Fournier |
Solaris 2.5.1-2.7 |
Sparc |
v7.0 |
2000-04-12 |
Peter Eisentraut, Marc Fournier |
SunOS 4.1.4 |
Sparc |
v7.0 |
2000-04-13 |
Tatsuo Ishii |
Windows/Win32 |
x86 |
v7.0 |
2000-04-02 |
Client-side libraries or ODBC/JDBC. No server-side. Magnus Hagander |
WinNT/Cygwin |
x86 |
v7.0 |
2000-03-30 |
Uses Cygwin library. Daniel Horak | * Windows NT의 경우 아직은 지원이 미약하며 빠른 시일동안 발전되고 있다.
1.4 성능 및 안정성
TPC 자료의 다양한 성능 차트를 제공하는 것 보다는 본 저자의 경험 및 일반적인 커뮤니티 사이트에서 얘기하는 것이 도움된다 라는 판단에 PostgreSQL 성능을 얘기해보면, 일반적인 상용제품인 Oracle 등에서 엔터프라이즈 환경에서 이용할 때에는 약 10 ~ 20% 정도 성능이 떨어지며, MySQL에 비해서는 단순 쿼리의 경우 MySQL이 성능이 앞서나 복잡한 중첩 쿼리에서는 빠른 성능을 보여준다. 단 상용제품와의 비교할 경우, 동일한 H/W 스팩상에서라면, 일반적인 중소기업에서 사용되는 펜티엄 4급 싱글 CPU, 256M 이하의 메모리상에서는 동일하거나 빠른 성능을 보인다.
1.5 설치 및 성능 향상
PostgreSQL에 대한 설치는 본 기사의 범위를 넘는 것이라 생각되며, 설치 및 성능향상은 한동훈님이 작성한 문서 5번 및 문서 2에서 제공되는 내용을 참고하기 바라며, 한컴리눅스 OS 3.0이나 레드햇 7.0 이상의 버전의 경우 인스톨 전용 RPM 환경을 제공하고 있기 때문에 특별한 인스톨상의 어려움은 없다.
2. PostgreSQL 장단점PostgreSQL의 장단점을 얘기할 때 타 DBMS 제품과의 비교를 빠트릴 수 없다 라고 생각되는데, 앞의 내용에서도 다루었지만, PostgreSQL 제품의 가장 큰 장점은 거의 상용 제품에 준하는 SQL 문 및 개발 환경에 대한 지원과 제품 사용에 일절 비용이 발생하지 않는다 라는 것이라면, 단점은 약간의 늦은 성능 및 DBMS 관련 유틸리티 제공의 미약과 다른 공개 소스 제품이 그렇듯이 제품에 대한 체계적인 지원을 받을 수 없다 라는 점이라고 생각된다.
3. 지원문서문서 1: PostgreSQL 공식 홈페이지 문서 2: 공식 홈페이지내 각종 기술문서들 문서 3: PostgreSQL을 선택하게 된 이유 문서 4: 국내 데이터베이스 전문 사이트 문서5: 한동훈님의 PostgreSQL 강좌 문서 6: 효식님의 관련 강좌 문서 7: PGSQL 과 MySQL 비교 자료 문서 8:PostgreSQL의 FAQ
4. 마치며 최근의 MySQL에서는 저자가 처음 얘기한 문제들은 어느 정도 해결되었으며, 미션크리티컬한 작업을 위한 로우 단위별 멀티 트랜잭션, 유니언 및 좀더 섬세한 서브 쿼리 등에 대한 지원은 미약하나, 이와 같은 경우가 아닌 단순한 사용자 관리, 게시판 등의 빠른 속도를 요하는 곳에서는 충분한 강점을 가지고 있으며, 반면에 PGSQL은 좀더 DBMS 본연의 기능에 충실한 제품이라고 생각하며, 두 제품에 대한 특징을 가지고 각 업무에 적합하게 적용하면 된다고 생각한다.
정리하면 PGSQL은 데이터베이스에 많은 작업을 적용하고 싶을 때, 혹은 데이터베이스 자체를 공부하고 싶은 사람들에게 적합한 제품이라면, MySQL은 빠른 속도를 요하는 곳에서 적합한 제품이라고 생각한다.
소스 : http://www.linuzine.com/modules.php?name=News&file=print&sid=80 |