안녕하세요, 성조입니다.
PostgreSQL을 자주 보고, 사용도 하면서 간략하게 정리했던 글이 하나도 없던 것을 알게 됐네요.
가볍게 정리 작성한 포스팅입니다.
PostgreSQL이란?
데이터를 테이블 구조로 저장하고 SQL로 관리하는 데이터베이스 시스템이다.
정말 간략하게 표기하면 위와 같이 정의 되지만, 오픈 소스 진영의 객체 관계 데이터베이스 주력 옵션이 되어 가는 것을 인지하고 ORDBMS를 같이 학습하기를 추천한다.
[참조 자료]
https://aws.amazon.com/ko/compare/the-difference-between-relational-and-non-relational-databases/
관계형 데이터베이스와 비관계형 데이터베이스 - 데이터베이스 유형 간의 차이점 - AWS
관계형 데이터베이스와 비관계형 데이터베이스의 차이점은 무엇인가요? AWS에서 관계형 및 비관계형 데이터베이스를 사용하는 방법.
aws.amazon.com
PostgreSQL의 특징
1. 완전한 데이터 무결성을 위한 ACID 트랜잭션 지원 -> 데이터 정합성을 보장한다.
ACID란?
- Atomicity: 모두 성공하거나 모두 실패
- Consistency: 데이터 무결성 유지
- Isolation: 트랜잭션 간 독립성
- Durability: 장애 발생 후에도 데이터 유지
즉, 누군가 데이터베이스에 접근하여 데이터를 쓰고 있어도, 다른 사람이 데이터를 읽는 것을 방해하지 않아 대규목 트래픽에서도 용이하게 사용할 수 있는 기능이다. 요즘 세대에 데이터베이스들은 대부분 해당 기능을 지원하지만, 오픈 소스 진영의 데이터베이스로 점유율을 키워가는 것이 매우 큰 장점이라 생각된다.
2. 매우 범용적인 확장성 -> PostgreSQL은 확장에 매우 범용적으로 열려있다.
정말 초당 엄청난 트래픽을 견뎌내는 것이 아니면 레디스 같은 별도 캐싱 부분을 늘리는 것보다 효율적인 쿼리로 PostgreSQL만 단독으로 사용하는 것까지 권장하는 개발자 분이 있을 정도로(나름 논리에 대해 납득했다) PostGIS GIS/지도 데이터, pgvector (벡터 검색) 등 좋은 기능이 이미 제공되고 있는 데이터베이스 시스템이다.
3. 다양한 데이터 타입 지원 -> 다른 상용 데이터베이스도 지워하겠지만, 오픈 소스 진영에서 단순 테이블뿐 아니라 다양한 데이터 구조들을 관리할 수 있도록 지속적인 업데이트 지원이 이뤄지고 있는 것이 특징겸 장점이 된다.
NoSQL이 없어도 JSONB 형식의 데이터로 빠른 속도의 검색을 지원할 수 있는 서비스이다.
궁금하다면 다음의 학습 자료를 참조하면 좋겠다.
https://postgresql.kr/blog/postgresql_jsonb.html
jsonb 자료형 다루기
json, jsonb 자료형에 대한 소개와 간단한 사용법을 살펴봅니다.
postgresql.kr
4. 강력한 SQL -> 포스트그레스큐엘은 SQL 표준을 잘 지원해주는 DB이다.
- Window Functions
- CTE (WITh)
- Recursive Query
- Materialized View
- Stored Procedure
- Parallel Query 등 다양한 쿼리들을 지원한다.
5. MVCC (Multi Version Concurreny Control) 구조를 사용하여 동시성 처리에 유용하다.
- Lock 최소화
- 읽기 성능 향상
- 대규모 동시 사용자 처리 가능(병렬 처리도 가능하다)
PostgreSQL의 아키텍처
간단한 아키텍처 구조는 다음과 같다.
Client (App / API)
│
▼
PostgreSQL Server
│
┌───────────────┐
│ Query Parser │
│ Query Planner │
│ Executor │
└───────────────┘
│
▼
Storage
(Tables / Index)
│
▼
WAL Log
PostgreSQL과 MySQL의 차이점
1. 데이터 타입 검증
MySQL은 비교적 관대하게 데이터를 변환해서 넣어주려는 유연함이 있지만, PostgreSQL은 타입이 다르면 엄격하게 에러를 뱉는 구조다.(데이터 정합성 보장)
2. MySQL은 스레드(Thread) 기반이라 가볍고 빠르지만, PostgreSQL은 프로세스(Process) 기반이라 무겁지만 안정적이고 병렬 처리에 능하다.
3. PostgreSQL은 복잡한 쿼리에 강하고, MySQL은 단순 트랜잭션 처리에서 많이 사용되는 경향이 있다.
단순 CRUD를 중점으로 두는 서비스는 MySQL이 조금 더 적합하다는 의미도 된다.
MySQL = Web CRUD
PostgreSQL = Complex query / Data Platform etc..
이런 느낌으로 자료를 리서치할 수 있었다.
오탈자나 정확하지 않은 정보가 전달된 경우 댓글로 어떤 개념인지 의견을 공유해주시면 감사드리겠습니다.
다음 포스팅에서 뵙겠습니다.
'Database' 카테고리의 다른 글
| [PostgreSQL] WHERE와 조건 연산자 한 스푼 정리하기 (1) | 2026.03.14 |
|---|---|
| [Mongo] Mongo Database란? (0) | 2022.12.08 |
| [Database] [Oracle] Oracle 19C 버전 설치하기 (0) | 2022.07.17 |
| [Database] 이상 현상(Anomaly)이란? (0) | 2022.04.29 |
| [Database] 정규화(Normalization)란? (0) | 2022.04.28 |