카테고리 없음

Docker_SQLite 한계 및 PostgreSQL

멍주다배 2025. 1. 22.

SQLite

가벼운 파일 기반의 관계형 데이터베이스 관리 시스템

  • 소규모 프로젝트나 간단한 테스트 환경에 적합
  • Django가 기본으로 사용
  • Python과 같이 기본적으로 제공되므로 추가 설치가 필요 없음
  • 하나의 .sqlite3 파일에 모든 데이터가 저장됨
  • 메모리 사용량이 적으며 속도가 빠름
한계

- 여러 사용자가 동시에 데이터를 쓸 경우, 충돌 발생 가능
- 대량의 데이터를 처리하는 데 적합하지 않아 확장성이 부족함
- 파일 기반이라 네트워크 접근이 불가해 여러 컴퓨터에서 공유하기가 어려움

 

PostgreSQL

오픈소스 관계형 데이터베이스 관리 시스템

    • 대규모 데이터 처리가 가능해 많은 동시 연결을 처리할 수 있음
    • ACID 규칙을 준수하여 데이터의 무결성을 보장
      • 원자성, 일관성, 고립성, 지속성
    • 원격으로 접근이 가능하여 데이터베이스 공유가 자유로움
    • JSON, Full-Text Search 등 다양한 확장 기능 제공

 

❕ Django 프로젝트에서 팀원들과 데이터베이스를 공유해야 할 경우, SQLite 대신 PostgreSQL을 사용하고 이를 도커로 실행하는 것이 효과적임

 

도커로 PostgreSQL 구축

더보기

1. 도커 설치 확인

docker --version

 

2. PostgreSQL 컨테이너 실행

docker run --name my_postgres \
  -e POSTGRES_USER=myuser \
  -e POSTGRES_PASSWORD=mypassword \
  -e POSTGRES_DB=mydatabase \
  -p 5432:5432 \
  -d postgres

 

3. 컨테이너 실행 확인 및 터미널 접속

docker ps
docker exec -it my_postgres psql -U myuser -d mydatabase

Django 프로젝트에서 PostgreSQL 사용

더보기

1. PostgreSQL 패키지 설치

pip install psycopg2-binary

 

 2. settings.py에서 데이터베이스 설정 변경 및 마이그레이션 적용

 

팀원들과 데이터베이스 공유

서버 IP 주소 확인(ifconfig) -> settings.pyHOST를 서버 IP 주소로 변경 -> 볼륨을 추가해 데이터 유지

docker run --name my_postgres \
  -e POSTGRES_USER=myuser \
  -e POSTGRES_PASSWORD=mypassword \
  -e POSTGRES_DB=mydatabase \
  -p 5432:5432 \
  -v my_pgdata:/var/lib/postgresql/data \
  -d postgres