Skip to main content

NestJS PostgreSQL 설치

Goal

PostgreSQL DB를 설치하고 DBeaver 클라이언트로 연결해보자.
내부적으로 TypeORM을 사용해서 모델링과 CRUD 로직을 작성해본다.

설치 방법

  1. PostgreSQL 서버를 직접 로컬 머신에 설치
  2. PostgreSQL Docker로 설치

1번 방법 - PostgreSQL 서버 설치

컴포넌트 구성

PostgreSQL Server : DBMS 서버 -- 필수 (Server)
postgres CLI client : CLI DB 클라이언트 프로그램 (Client)
PgAdmin4 : GUI DB 관리 프로그램 (Client)
DBeaver : GUI DB 관리 프로그램 (Client)

  • 옵션 : StackBuilder : Workbench같은 SQL 작성 툴인 듯 ?
  • *주의 : 버전 통일 ( v13 으로 Server, Client 맞출 것)

download --> https://www.postgresql.org/

- PostgreSQL Server + pgAdmin 설치 가능  
- 비번 : <password>
- 포트 : 5433

postgres

postgres 명령어는 : SQL Server를 실행시키고 관리하는 명령이다.

  • SSL, connection수 등 관리가능
>postgres --version
postgres (PostgreSQL) 13.0

psql

psql은 PostgreSQL 대화식 터미널입니다 (CLI 클라이언트).

psql --help.

  • postgres, psql 위 두 명령어 환경변수 등록이 필요하다.
>psql --host=localhost --port=5433 --username=postgres

postgres 사용자의 암호:
psql (13.0)
도움말을 보려면 "help"를 입력하십시오.
postgres=#

2번 방법 - Docker postgres:13 install

yml file setup

# .env
POSTGRES_VOLUME_DIR= VOLUME_DIR
POSTGRES_PASSWORD=PASSWORD
---
# docker-compose.yml
version: "0.2"

services:
postgres_db:
image: postgres:13
container_name: postgres_db
restart: always
volumes:
- ${POSTGRES_VOLUME_DIR}:/var/lib/postgresql/data
ports:
- "8500:5432"
environment:
- POSTGRES_PASSWORD=${POSTGRES_PASSWORD}

container run

docker compose up -d 

check ping

docker exec -it postgres_db bash
psql --username=postgres

# \dt
List of relations
Schema | Name | Type | Owner
--------+------+-------+----------
public | user | table | postgres
(1 row)

PostgreSQL에서 데이터베이스(Database), 스키마(Schema), 테이블(Table)의 관계

  1. 데이터베이스(Database):

    • 데이터베이스는 정보를 구조화하고 저장하는 공간입니다.
    • 여러 개의 데이터베이스가 PostgreSQL 서버에 존재할 수 있습니다.
  2. 스키마(Schema):

    • 스키마는 데이터베이스 내의 논리적인 구조를 정의합니다.
    • 스키마 안에는 여러 개의 테이블, 뷰, 함수 등이 포함될 수 있습니다.
    • 각 데이터베이스는 여러 개의 스키마를 가질 수 있습니다.
  3. 테이블(Table):

    • 테이블은 실제 데이터가 저장되는 곳입니다.
    • 테이블은 특정 스키마 내에 속하며, 열(Column)과 행(Row)의 형태로 데이터를 저장합니다.

간단히 말하면, 데이터베이스는 여러 개의 스키마를 포함하고, 각 스키마는 여러 개의 테이블과 다른 객체를 가질 수 있어요. 이러한 구조는 데이터를 조직화하고 관리하는 데 도움이 됩니다.

DB 만들기

DBeaver

DBeaver DB 만들기

  1. connection 정보 입력 후 DB 접속
  2. Create New Database

ref

https://docs.nestjs.com/techniques/database#database
https://www.npmjs.com/package/typeorm