PostgreSQL이란? 우분투·맥·도커로 설치
왜 PostgreSQL 인지·OS 별 5분 설치·첫 접속까지. 24편 교재의 시작.
데이터를 어디에 저장하나요? 엑셀? JSON 파일? 그건 100건까지는 됩니다. 1만 건이 되면 검색이 느려지고, 동시에 두 사람이 쓰면 깨집니다. 관계형 데이터베이스(RDBMS) 가 등장하는 지점이 거기입니다. 1편은 그중에서 가장 강력한 오픈소스 — PostgreSQL 을 내 컴퓨터에 설치하고 psql 로 첫 접속까지 합니다.
이 시리즈의 목표. 24편을 마치면 SELECT 부터 JOIN·트랜잭션·인덱스·성능 튜닝·백업/복구·복제까지 — 작은 서비스의 DB 를 혼자 운영할 수 있는 수준이 됩니다.
1편의 도착점. psql -d postgres 까지 들어가서 SELECT version(); 결과를 보는 것.
왜 PostgreSQL 인가 — MySQL 과의 차이 한 줄
2026년 기준 오픈소스 RDBMS 양대 산맥은 PostgreSQL 과 MySQL/MariaDB 입니다. 둘 다 훌륭하지만 결이 다릅니다.
| 기준 | PostgreSQL | MySQL |
|---|---|---|
| 표준 SQL 충실도 | 매우 높음 | 중간 (방언 많음) |
| JSON·지리·검색 확장 | jsonb·PostGIS·full-text 표준 내장 | JSON 지원 있지만 약함 |
| 동시성 제어 | MVCC 정통, 락 거의 안 잡힘 | InnoDB 도 MVCC 지만 보수적 |
| 단순 OLTP 속도 | 비슷 | 매우 빠름 (역사적) |
| 고급 분석 SQL | 윈도우·CTE·재귀 강력 | 8.0 이후 따라잡는 중 |
한 줄 요약: "기능 풍부함과 정합성이면 Postgres, 단순한 키-값/조회 위주로 빠름이면 MySQL". 그리고 최근에는 LLM 임베딩(pgvector) 때문에 Postgres 점유율이 빠르게 올라오고 있습니다. 24편에서 다룰 내용도 그 흐름을 따라갑니다.
설치 1 — 우분투 / 데비안 (apt)
가장 흔한 서버 환경입니다. 한 줄이면 끝납니다.
sudo apt update
sudo apt install -y postgresql postgresql-contrib
# 자동으로 systemd 서비스 등록·시작됩니다
systemctl status postgresql
# active (running) 이 보이면 OK
설치하면 자동으로 postgres 라는 OS 사용자와 postgres 데이터베이스가 생깁니다. 첫 접속은:
sudo -u postgres psql
# postgres=# ← 이 프롬프트가 뜨면 들어온 것
설치 2 — macOS (Homebrew)
brew install postgresql@16
brew services start postgresql@16
# psql 명령을 어디서나 쓰려면 PATH 추가 (zsh 기준)
echo 'export PATH="/opt/homebrew/opt/postgresql@16/bin:$PATH"' >> ~/.zshrc
source ~/.zshrc
psql postgres
# postgres=# ← 들어옴
설치 3 — 도커 (가장 빠르고 깨끗)
실제 운영은 도커로 띄우는 경우가 많습니다. 한 줄이면 컨테이너가 뜨고, 끝나면 한 줄로 깨끗하게 지웁니다.
docker run -d \
--name pg-learn \
-e POSTGRES_PASSWORD=mysecret \
-p 5432:5432 \
-v pg-learn-data:/var/lib/postgresql/data \
postgres:16
# 접속
docker exec -it pg-learn psql -U postgres
옵션 설명: -e POSTGRES_PASSWORD 가 슈퍼유저 비밀번호, -p 5432:5432 가 호스트 포트, -v pg-learn-data:/var/lib/postgresql/data 가 컨테이너를 지워도 데이터는 살아남게 하는 영구 볼륨입니다.
비밀번호 주의. mysecret 은 학습용입니다. 실제 서버에 띄울 때는 긴 무작위 문자열을 쓰고, 환경변수 파일(.env) 로 분리하세요. 20·23편(백업/복구·튜닝) 에서 보안 권장도 함께 다룹니다.
첫 접속 — SELECT version();
어떤 방식으로 설치했든 psql 로 들어왔다면 다음 3개 명령만 쳐보면 1편의 도착점입니다.
postgres=# SELECT version();
version
─────────────────────────────────────────────────────────────────────────────
PostgreSQL 16.x on x86_64-pc-linux-gnu, compiled by gcc ...
postgres=# \l -- 데이터베이스 목록
postgres=# \du -- 사용자(역할) 목록
postgres=# \q -- 종료
\ 로 시작하는 건 psql 의 단축 명령(메타 커맨드) 입니다. SQL 표준이 아니라 psql 만의 편의 기능 — 2편에서 자주 쓰는 10개를 정리합니다.
교재 24편 로드맵
| 파트 | 편수 | 주제 | 끝나면 |
|---|---|---|---|
| Part 1 입문 | 1~5 | 설치·psql·DB/스키마·자료형·첫 CRUD | 테이블 만들고 데이터 INSERT/SELECT |
| Part 2 SQL 기초 | 6~13 | WHERE·ORDER·GROUP·JOIN·서브쿼리·CTE·윈도우·jsonb·뷰 | 실무에서 마주치는 90% 의 쿼리 |
| Part 3 중급 | 14~19 | 트랜잭션·락·인덱스·EXPLAIN·함수·트리거 | 성능 문제 진단·인덱스 설계 |
| Part 4 고급 | 20~24 | 백업/복구·복제·파티셔닝·튜닝·확장(pgvector·PostGIS) | 작은 서비스 DB 단독 운영 |
2편 — psql 핵심 명령 10개
\l, \dt, \d, \du, \timing, \x, \?, \q, \i, 그리고 쿼리 결과 형식 바꾸기. psql 만 잘 다뤄도 작업 속도가 두 배가 됩니다.
현재: 1편 (입문) · 다음 → 2편 psql 첫 사용 · 진행: 1/24