본문 바로가기

DB/PostgreSQL

PostgreSQL 이란

PostgreSQL을 알아야 할 이유

PostgreSQL(http://www.postgresql.org) 은 북미와 일본에서는 높은 인지도와 많은 인기를 얻고 있는 RDBMS다. 국내에서는 아직 잘 사용하지 않고 있지만, 기능과 성능면에서 매우 훌륭한 RDBMS이기 때문에 PostgreSQL가 어떠한 데이터베이스인지 시간을 들여 알아볼 필요는 있다.

PostgreSQL(포스트-그레스-큐엘 [Post-Gres-Q-L]로 발음)은 객체-관계형 데이터베이스 시스템(ORDBMS)으로, 엔터프라이즈급 DBMS의 기능과 차세대 DBMS에서나 볼 수 있을 법한 많은 기능을 제공하는 오픈소스 DBMS다. 실제 기능적인 면에서는 Oracle과 유사한 것이 많아, Oracle 사용자들이 가장 쉽게 적응할 수 있는 오픈소스 DBMS가 PostgreSQL이라는 세간의 평 또한 많다.

기능 및 제한

PostgreSQL은 관계형 DBMS의 기본적인 기능인 트랜잭션과 ACID(Atomicity, Consistency, Isolation, Durability)를 지원한다. 또한 ANSI SQL:2008 규격을 상당 부분 만족시키고 있으며, 전부를 지원하는 것을 목표로 현재도 기능이 계속 추가되고 있다.

또한 PostgreSQL은 기본적인 신뢰도와 안정성을 위한 기능뿐만 아니라 진보적인 기능이나 학술적 연구를 위한 확장 기능도 많이 가지고 있다. PostgreSQL의 기능을 대략적으로 열거해 보더라도 상당히 많은 기능을 가지고 있음을 알게 된다.

  • Nested transactions (savepoints)
  • Point in time recovery
  • Online/hot backups, Parallel restore
  • Rules system (query rewrite system)
  • B-tree, R-tree, hash, GiST method indexes
  • Multi-Version Concurrency Control (MVCC)
  • Tablespaces
  • Procedural Language
  • Information Schema
  • I18N, L10N
  • Database & Column level collation
  • Array, XML, UUID type
  • Auto-increment (sequences),
  • Asynchronous replication
  • LIMIT/OFFSET
  • Full text search
  • SSL, IPv6
  • Key/Value storage
  • Table inheritance

이외에도 엔터프라이즈급 DBMS의 다양한 기능과 새로운 기능을 자랑하고 있다.

PostgreSQL의 일반적인 제한 사항은 아래와 같다.

표 1 기본 제한 사항

항목제한 사항
최대 DB 크기(Database Size)무제한
최대 테이블 크기(Table Size)32TB
최대 레코드 크기(Row Size)1.6TB
최대 컬럼 크기(Field Size)1 GB
테이블당 최대 레코드 개수(Rows per Table)무제한
테이블당 최대 컬럼 개수(Columns per Table)250~1600개
테이블당 최대 인덱스 개수(Indexes per Table)무제한

PostgreSQL 특징

Portable

PostgreSQL의 ANSI C로 개발되었으며 지원하는 플랫폼의 종류로는 Windows, Linux, MAC OS/X 또는 Unix Platform등 다양한 플랫폼을 지원하고 있다.

Reliable
  • 트랜잭션 속성인 ACID에 대한 구현 및 MVCC
  • 로우 레벨 라킹 등이 구현되어 있다.
Scalable
  • PostgreSQL의 멀티-버전에 대하여 사용이 가능하다.
  • 대용량 데이터 처리를 위한 Table Partitioning과 Tablespace 기능이 구현 가능하다.
Secure

DB 보안의 경우 데이터 암호화, 접근 제어 및 감사의 3가지로 구성 되어있으며, PostgreSQL 또한 DB보안 요구사항에 의해 호스트-기반 접근제어, object-level 권한, ssl 통신을 통한 클라이언트와 네트워크 구간의 전송 데이터를 암호화하는 방안 등을 지원한다.

Recovery & Availability

Streaming Replication을 기본적으로 동기식, 비동기식의 Hot Standby 서버를 구축할 수 있으며 WAL log 아카이빙 및 Hot Backup을 통해 Point in time recovery를 할 수 있다.

Advanced

pg_upgrade를 이용하여 업그레이드를 진행 할 수 있으며 웹 기반 또는 C/S 기반의 GUI관리도구를 제공하여 모니터링 및 관리는 물론 튜닝까지 가능하다.

사용자정의 procedural로 Perl, java, php등의 스크립트 언어 지원이 가능하다.