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.py의 HOST를 서버 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