--- title: PostgreSQL — 데이터베이스 및 서버 운영 date: 2026-10-18 time: 12:00 model: admin category: programs author_type: human summary: ACID·확장성·표준 준수로 알려진 오픈소스 RDBMS. 웹·분석·임베디스까지 폭넓게 쓰입니다. tags: 프로그램, 데이터베이스 및 서버 운영, postgresql --- ACID 트랜잭션과 확장성을 갖춘 대표 오픈소스 관계형 데이터베이스입니다. ## 기본 정보 | 프로그램 이름 | PostgreSQL (포스트그레스큐엘) | | --- | --- | | 한 줄 소개 | ACID 트랜잭션과 확장성을 갖춘 대표 오픈소스 관계형 데이터베이스입니다. | | 개발·유지 | PostgreSQL Global Development Group | | 공식 홈페이지 | https://www.postgresql.org/ | | 공식 문서 | https://www.postgresql.org/docs/ | | 공식 다운로드 | https://www.postgresql.org/download/ | | 지원 운영체제 | Linux, macOS, Windows, FreeBSD 등 | | 라이선스 | PostgreSQL License (BSD 계열, 상업 이용 가능) | | 안정 버전 | 18.x 안정 라인 (19 버전 2026-09 베타 공개) — 확인일 2026-10-18 | | GitHub 저장소 | https://github.com/postgres/postgres | | 분류 | 데이터베이스 및 서버 운영 (태그: 데이터베이스, RDBMS, SQL, 서버 운영, 오픈소스) | ## 이 프로그램은 무엇인가? PostgreSQL(포스트그레스)은 1996년 이후 이어져 온 대표 오픈소스 관계형 데이터베이스입니다. ACID 트랜잭션, 다중 버전 동시성 제어(MVCC), 표준 SQL 준수를 제공하며 JSON·GIS·전문 검색 같은 확장도 함께 갖췄습니다. 웹 서비스 백엔드, 분석 워크로드, 임베디스 배포까지 쓰이며, 라이선스가 관대해 상업 제품에 그대로 내장하는 경우도 많습니다. 서버 운영 시 설정·백업·복구 절차가 핵심 관리 대상입니다. ## 어떤 문제를 해결하는가? - ('웹 서비스 운영에서', '안정적인 트랜잭션 저장소가 필요할 때', 'MVCC 기반 동시성으로 다중 사용자 쓰기를 처리합니다.') - ('데이터 분석에서', '집계·조인·윈도우 함수 같은 SQL 분석이 필요할 때', '표준 SQL과 확장(예: 집계 함수)으로 분석 질의를 수행합니다.') - ('자체 배포·내장에서', '클라우드 종속 없이 데이터베이스를 직접 운영해야 할 때', '오픈소스라 라이선스 비용 부담 없이 배포할 수 있습니다.') ## 주요 기능 ### 트랜잭션·MVCC 여러 세션이 충돌 없이 동시 읽기·쓰기 - **활용 상황**: 웹 트랜잭션 처리 - **얻는 결과**: 데이터 일관성·격리 보장 - **제한 사항**: 장기 트랜잭션은 정크 레코드·성능 문제를 만들 수 있습니다. ### 확장·파티셔닝 확장(예: PostGIS)·테이블 파티셔닝으로 규모 확장 - **활용 상황**: 대용량·GIS 데이터 - **얻는 결과**: 워크로드에 맞춘 확장 구성 - **제한 사항**: 확장·파티셔닝 설계가 잘못되면 유지 부담이 큽니다. ### 복제·백업 스트리밍 복제·pg_dump 기반 백업 - **활용 상황**: 고가용성·재해 복구 - **얻는 결과**: 읽기 부하 분산·복구 체계 구축 - **제한 사항**: 복구 절차 미검증은 장애 시 치명적입니다. ### 표준 SQL 준수 표준을 따르는 SQL 구현 - **활용 상황**: 이식성 - **얻는 결과**: 다른 도구·라이브러리와 호환 - **제한 사항**: 비표준 확장 사용 시 이식성 저하. ## 설치 및 실행 ### Ubuntu / Debian 저장소 버전 설치 후 서비스를 시작합니다. ``` sudo apt update sudo apt install postgresql postgresql-contrib sudo systemctl enable --now postgresql ``` ### RHEL / CentOS / Fedora dnf로 설치합니다. ``` sudo dnf install postgresql-server postgresql-contrib sudo postgresql-setup --initdb sudo systemctl enable --now postgresql ``` ### macOS / Windows Homebrew 또는 공식 인스톨러(EDB)를 사용합니다. ``` brew install postgresql@17 # macOS # Windows: postgresql.org/download 에서 EDB 인스톨러 ``` ## 실제 사용 예제 ### psql 접속 postgres 사용자로 접속해 관리 콘솔을 시작합니다. ``` sudo -u postgres psql postgres=# \l # 데이터베이스 목록 postgres=# \c mydb # mydb로 연결 ``` ### 테이블 생성·삽입 표준 SQL로 스키마를 정의하고 데이터를 넣습니다. ``` CREATE TABLE users (id serial PRIMARY KEY, name text); INSERT INTO users (name) VALUES ('alice') RETURNING id; ``` ### 복제·백업 상태 확인 복제 지연·백업 결과를 점검합니다. ``` postgres=# SELECT * FROM pg_stat_wal_receiver; $ pg_dump mydb | gzip > /backup/mydb.sql.gz ``` ## 장점과 한계 ### 장점 - 무료·오픈소스(관대한 라이선스)로 상업 이용·재배포 자유 - ACID·MVCC 등 엔터프라이즈급 기능 기본 제공 - 확장 생태계 풍부(JSON·GIS·전문 검색 등) - 표준 SQL 준수로 이식성·인력 확보가 쉬움 ### 사용 전에 고려할 점 - 초기 설정·튜닝(공유 버퍼·WAL·커넥션 풀) 학습이 필요합니다. - 대규모 수직 확장보다 수평 확장은 별도 설계(복제·파티셔닝)가 필요합니다. - 복구 절차 미검증 시 장애 시 데이터 손실 위험이 있습니다. ## 비슷한 프로그램과 비교 | 프로그램 | 특징 | 이런 경우에 적합 | | --- | --- | --- | | MySQL / MariaDB | 웹 중심으로 널리 쓰이는 RDBMS | 웹 트랜잭션·빠른 읽기 중심 | | SQLite | 임베디스·단일 파일 DB | 서버 없이 앱 내부 저장 | | Oracle | 엔터프라이즈 상용 DB | 대규모·상용 지원이 필수인 환경 | ## 공식 자료 및 추가 학습 - [공식 홈페이지](https://www.postgresql.org/) — https://www.postgresql.org/ - [공식 문서 / 지식베이스](https://www.postgresql.org/docs/) — https://www.postgresql.org/docs/ - [공식 다운로드](https://www.postgresql.org/download/) — https://www.postgresql.org/download/ - [릴리스 노트](https://www.postgresql.org/docs/release/) — https://www.postgresql.org/docs/release/ - [소스 / 개발 자료](https://github.com/postgres/postgres) — https://github.com/postgres/postgres 버전·지원 환경 정보는 2026-10-18 기준으로 공식 사이트에서 확인한 값입니다. 설치 명령은 사용하는 배포판과 버전에 따라 달라질 수 있으므로 공식 설치 문서를 함께 확인하세요. ## 실제 실행 화면 아래는 사용 흐름을 이해하기 위해 만든 합성 예시 화면입니다(실제 실행 결과 아님). 화면은 합성 예시이며 실제 실행 결과가 아닙니다. ![PostgreSQL 예시: 버전·복구 상태 확인 쿼리](https://games.cursorai.co.kr/assets/postgresql-demo.png) 실제 운영 중인 서버 --- 원문(HTML): https://games.cursorai.co.kr/programs/apps/databases/postgresql.html