
데이터베이스의 세계는 넓고 선택지는 매우 많습니다. 지난 실무 경험을 돌이켜볼 때 PostgreSQL만큼 강력한 확장성과 안정성, 그리고 표준 준수 능력을 동시에 갖춘 오픈소스 DBMS는 드뭅니다.
PostgreSQL이란?
PostgreSQL은 객체-관계형 데이터베이스 관리 시스템(ORDBMS)입니다. 단순히 데이터를 표(Table) 형태로 저장하는 관계형(RDBMS)의 역할을 넘어 복잡한 데이터 구조를 객체 지향적으로 처리할 수 있는 유연함을 갖추고 있습니다. 또한 PostgreSQL은 '가장 표준을 준수하는(ANSI-SQL 준수)' DBMS입니다. 이는 다른 DB로 마이그레이션이 용이하고, SQL의 고급 기능을 활용하기에 최적화 되어있다고 판단할 수 있습니다.
RDBMS vs ORDBMS

데이터 베이스를 공부하다 보면 RDBMS와 ORDBMS라는 용어를 마주하게 됩니다.
- RDBMS(Relational Database Management System)
- 전통적인 RDBMS는 Table 중심입니다. 모든 데이터는 행(Row)과 열(Column)로 구성된 2차원 표에 담깁니다.
- 핵심 철학 : 데이터의 일관성과 정규화(Normalization)
- 제약 : 데이터 타입이 매우 엄격
- ORDBMS(Object-Relational Database Management System)
- RDBMS의 견고함에 객체지향 프로그래밍(OOP)의 유연함을 결합한 형태
- 핵심 철학 : 데이터 관계는 RDBMS처럼 관리하고 데이터 타입은 객체처럼 확장 가능
- 주요 차이점 : 사용자 정의 타입 가능, 테이블 간의 상속 가능, 복합 데이터 타입, 함수 및 연산자 정의
| 구분 | RDBMS | ORDBMS |
| 데이터 모델 | 2차원 테이블 중심 | 테이블 + 객체(사용자 정의 타입) |
| 데이터 타입 | 기본 타입(Primitive) 중심 | 복합 타입, 배열, JSONB, GIS 지원 |
| 확장성 | 낮음( 표준 준수 위주) | 매우 높음(사용자 확장 가능) |
| 주 사용처 | 단순 트랙젠셕, 정형 데이터 | 복합 데이터, 공간 분석, 분석용 DB |
탄생
1986년 UC 버클리의 마이클 스톤브레이커 교수가 이끄는 POSTGRES 프로젝트에서 시작되었습니다. 1980년대 당시 RDBMS의 표준이었던 'INGRES'라는 데이터베이스의 후속 프로젝트라는 의미로 'Post-INGRES' 즉 "POSTGRES"라고 명명되었습니다. 이후 1996년에 SQL을 공식 지원하면서 현재의 PostgreSQL로 이름이 변경되었습니다.
슬로닉(Slonik)
PostgreSQL 의 마스코트는 코끼리입니다. Slonik(슬로닉) 이라는 이름이 있습니다. Slonik은 러시아어로 작은 코끼리인데요.찾아 봤지만 왜 코끼리인지는 안타깝게도 명확하게 설명된게 없습니다. 커뮤니티에서 "코끼리는 절대 잊지 않는다(An Elephant never forgets)"라는 속담이 통용되는데 데이터 베이스가 지녀야할 핵심 가치인 '지속성' 과 맞아떨어진다는점에서 코끼라가 된게 아닐까싶습니다. 찾다보니 치타로고, 거북이 로고였던 적이 있는데 신기하네요.



PostgreSQL의 핵심 3가지
1. 강력한 확장성(Extensibility)
단순한 데이터 저장을 넘어 사용자가 직접 데이터 타입, 함수, 연산자, 그리고 인덱스 유형까지 정의할 수 있습니다. PostGIS 확장을 설치하면 단순한 RDBMS가 즉시 공간(Spatial) 데이터를 다루는 강력한 GIS 엔진으로 변모합니다.
오라클(Oracle)이나 MySQL 등 타 DBMS도 확장 기능을 제공합니다. 하지만 PostgreSQL은 설계 단계부터 사용자가 엔진 내부의 핵심 요소(타입, 인덱스, 함수)를 수정하거나 확장할 수 있도록 API를 개방적으로 열어두었다는점에서 독보적입니다.
특히나 B-Tree 인덱스만 쓰는게 아니라 사용자가 직접 인덱스 타입을 선택하거나 새로운 인덱스 알고리즘을 코딩해서 붙일 수도 있습니다(예: PostGIS의 공간 인덱스)
2.풍부한 데이터 타입 지원 및 확장
기본적인 숫자, 문자열은 물론, 다음과 같은 복잡한 데이터를 지원합니다. CREATE TYPE 을 통해 완전히 새로운 복합 타입을 만들고 이에 대해 CAST 규칙까지 사용자가 완벽히 제어할 수 있습니다.
- JSONB : NoSQL 수준의 유연한 문서 저장과 인덱싱 지원
- Array : 열 하나에 배열 형태의 데이터 저장
- Range, Geometric, Network address types 등
3. ACID 보장 및 신뢰성
고도의 정합성이 요구되는 시스템에서 PostgreSQL을 선택하는 이유는 ACID(원자성, 일관성, 고립성, 지속성) 트랜잭션 처리가 매우 견고하기 때문입니다. 특히 MVCC(Multi-Version Concurrency Control) 매커니즘을 통해 읽기/쓰기 작업 간의 충돌을 최소화하여 높은 동시성을 보장합니다.

PostgreSQL 생태계의 강점
- 오픈소스 : 상용 DB(Oracle 등) 대비 압도적인 비용 절감 효과
- 커뮤니티 : 수십 년간 축적된 강력한 커뮤니티 서포트와 문서
- 범용성 : Java, Python 등 대부분의 최신 언어와 프레임워크에서 완벽한 연동성을 자랑
An Elephant never forgets
지도 위 수많은 점, 선 그리고 면을 PostgreSQL 이라는 그릇에 담아온 지난 시간들
그 과정에서 얻은 기술적인 경험들과 함께 PostgreSQL에 대해 정리해보고 싶었습니다.
이 글을 읽으신 분들의 데이터베이스 선택에 작은 길잡이가 되길바랍니다.

'Database > PostgreSQL' 카테고리의 다른 글
| PostgreSQL 설치 (0) | 2026.06.12 |
|---|
