[PostgreSQL] PostgreSQL이란?

gyeol·2025년 7월 27일

SQL

목록 보기
6/7
post-thumbnail

PostgreSQL (포스트그레)

오픈 소스 관계형 데이터베이스로 ORDBMS이다.

ORDBMS : 객체-관계형 DBMS의미

  • ACID(Atomicity, Consistency, Isolation, Durability) 지원
  • 표준 SQL 지원 및 확장 가능
  • Trigger, View, Procedure 와 같은 다수의 고급 기능 제공
  • 20년 이상 된 시스템으로 안정성 및 신뢰성

구조

Storage & Process Layer

PostgreSQL의 가장 하위 계층이며 실제 데이터가 저장되고 관리되는 영역이다.

데이터 저장 구조

  • 데이터베이스의 각 테이블은 하나의 파일 또는 다수의 파일로 저장된다.
  • 파일은 보통 base/<oid>/<table_filenode> 경로에 존재한다.

구성 요소

구성요소설명
Shared Buffers메모리 캐시
WAL (Write-Ahead Log)트랜잭션 로그 기록 및 복구에 사용
Data Files테이블 및 인덱스 데이터 저장
pg_xact트랜잭션의 상태 저장
pg_walWAL 로그 저장 디렉터리
pg_stat통계 정보 파일

Postgre SQL Core Layer

1. Parser

  • SQL을 파싱해 Parse Tree 생성
  • 문법 오류도 이 단계에서 바로잡을 수 있음

2. Rewriter

  • View나 Rule이 있을 경우 쿼리 재작성

3. Optimizer

  • 여러 실행 계획 중 가장 비용이 적은 쿼리 실행 계획 선택
  • 비용 기반 최적화 (Cost-Based Optimization) 사용

4. Executor (실행기)

  • 옵티마이저가 만든 실행 계획을 실행해 결과 반환
  • 결과는 psql, JDBC, ORM 등으로 전달

SQL Interface / API Layer

PostgreSQL과 상호작용하는 외부 인터페이스 계층이다.

클라이언트 도구

도구/라이브러리설명
psql터미널 기반 SQL 쉘
JDBC, ODBC자바/기타 언어에서 DB 접속
ORM(JPA, Hibernate, Django ORM 등)객체 <-> 테이블 자동 매핑
pgAdmin, DBeaverGUI 클라이언트 도구

데이터 구조

PostgreSQL은 내부적으로 다음과 같은 계층으로 데이터베이스를 관리한다.

Cluster
 └── Database
      └── Schema
           ├── Table
           ├── View
           ├── Function
           └── Index

Cluster

하나의 PostgreSQL 서버 인스턴스이다.

Database

하나의 클러스터 안 에 여러 개의 데이터베이스를 생성할 수 있다.
데이터베이스는 CREATE DATABASE ... 명령어로 생성한다.

Schema

각 데이터베이스 내부의 논리적 그룹핑을 의미한다.

저장 방식

TOAST (The Oversized-Attribute Storage Technique)

테이블에 매우 큰 값을 저장할 경우 별도 TOAST 테이블로 분리해 저장한다.

MVCC (Multi-Version Concurrency Control)

각 트랜잭션은 자신의 스냅샷을 보고 작업한다.
삭제되지 않은 이전 버전 rowvacuum을 통해 정리된다.

사용법

  • 환경 : MAC OS
  • 필자는 brew를 통해 터미널에서 설치

PostgreSQL 설치

터미널을 열고 brew를 사용해 설치해준다.

brew update
brew install postgresql

추후에 PostgreSQL을 삭제한다면

brew uninstall postgresql
rm -rf /usr/local/var/postgres

다음과 같은 명령어로 삭제해준다.

버전 확인

postgres --version

PostgreSQL 실행/종료

brew services start postgresql // 실행
brew services stop postgresql // 종료

꼭 PostgreSQL을 실행시킨 후 PostgreSQL 콘솔로 접속해야 한다.

콘솔 접속

psql postgres

콘솔에 접속하면 터미널 창 형태가 변한다.

DB 생성

CREATE DATABASE test;

이렇게 생성하고 나면 콘솔에 CREATE DATABASE라고 뜬다.

DB로 이동

\c [DB이름]

이렇게 이동하고 나면

기존에 postgres=#라고 떴던 게 DB 이름으로 변경된 것을 확인할 수 있다.

테이블 생성

CREATE TABLE users (
    id SERIAL PRIMARY KEY,
    name VARCHAR(100),
    email VARCHAR(100) UNIQUE
);

이렇게 생성하고 나면 DB를 생성했을 때와 동일하게 CREATE TABLE이라고 콘솔에 뜬다.

테이블 조회

SELECT * FROM [테이블명];

이렇게 테이블의 값들을 조회할 수 있다.

profile
공부 기록 공간 '◡'

0개의 댓글