
오픈 소스 관계형 데이터베이스로 ORDBMS이다.
ORDBMS : 객체-관계형 DBMS의미

PostgreSQL의 가장 하위 계층이며 실제 데이터가 저장되고 관리되는 영역이다.
base/<oid>/<table_filenode> 경로에 존재한다.| 구성요소 | 설명 |
|---|---|
| Shared Buffers | 메모리 캐시 |
| WAL (Write-Ahead Log) | 트랜잭션 로그 기록 및 복구에 사용 |
| Data Files | 테이블 및 인덱스 데이터 저장 |
| pg_xact | 트랜잭션의 상태 저장 |
| pg_wal | WAL 로그 저장 디렉터리 |
| pg_stat | 통계 정보 파일 |
PostgreSQL과 상호작용하는 외부 인터페이스 계층이다.
| 도구/라이브러리 | 설명 |
|---|---|
| psql | 터미널 기반 SQL 쉘 |
| JDBC, ODBC | 자바/기타 언어에서 DB 접속 |
| ORM(JPA, Hibernate, Django ORM 등) | 객체 <-> 테이블 자동 매핑 |
| pgAdmin, DBeaver | GUI 클라이언트 도구 |
PostgreSQL은 내부적으로 다음과 같은 계층으로 데이터베이스를 관리한다.
Cluster
└── Database
└── Schema
├── Table
├── View
├── Function
└── Index
하나의 PostgreSQL 서버 인스턴스이다.
하나의 클러스터 안 에 여러 개의 데이터베이스를 생성할 수 있다.
데이터베이스는 CREATE DATABASE ... 명령어로 생성한다.
각 데이터베이스 내부의 논리적 그룹핑을 의미한다.
테이블에 매우 큰 값을 저장할 경우 별도 TOAST 테이블로 분리해 저장한다.
각 트랜잭션은 자신의 스냅샷을 보고 작업한다.
삭제되지 않은 이전 버전 row는 vacuum을 통해 정리된다.
터미널을 열고 brew를 사용해 설치해준다.
brew update
brew install postgresql
추후에 PostgreSQL을 삭제한다면
brew uninstall postgresql
rm -rf /usr/local/var/postgres
다음과 같은 명령어로 삭제해준다.
postgres --version

brew services start postgresql // 실행
brew services stop postgresql // 종료
꼭 PostgreSQL을 실행시킨 후 PostgreSQL 콘솔로 접속해야 한다.
psql postgres
콘솔에 접속하면 터미널 창 형태가 변한다.

CREATE DATABASE test;
이렇게 생성하고 나면 콘솔에 CREATE DATABASE라고 뜬다.
\c [DB이름]
이렇게 이동하고 나면

기존에 postgres=#라고 떴던 게 DB 이름으로 변경된 것을 확인할 수 있다.
CREATE TABLE users (
id SERIAL PRIMARY KEY,
name VARCHAR(100),
email VARCHAR(100) UNIQUE
);
이렇게 생성하고 나면 DB를 생성했을 때와 동일하게 CREATE TABLE이라고 콘솔에 뜬다.
SELECT * FROM [테이블명];

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