왜 데이터베이스가 필요한가요?
❌ 인메모리 저장
- 서버 재시작 시 데이터 삭제
- 서버 여러 대일 때 데이터 불일치
- 메모리 부족 위험
✅ 데이터베이스 사용
- 영구적인 데이터 저장
- 여러 서버에서 동일한 데이터
- 효율적인 검색과 정렬
왜 PostgreSQL인가요?
여러 데이터베이스 중 PostgreSQL을 추천하는 이유:
- 무료 & 오픈소스 - 라이선스 비용 없음
- 검증된 안정성 - 30년 이상의 역사
- 클라우드 지원 - 모든 클라우드에서 관리형 서비스 제공
- JSON 지원 - NoSQL처럼 유연한 데이터 저장 가능
빠른 시작
1. 의존성 설치
터미널
pip install sqlalchemy psycopg2-binary alembic2. 데이터베이스 모델 정의
app/models/project.py
from sqlalchemy import Column, String, DateTime, Boolean
from sqlalchemy.dialects.postgresql import UUID
from sqlalchemy.ext.declarative import declarative_base
import uuid
from datetime import datetime
Base = declarative_base()
class Project(Base):
__tablename__ = "projects"
id = Column(UUID(as_uuid=True), primary_key=True, default=uuid.uuid4)
name = Column(String(200), nullable=False)
description = Column(String(1000))
is_active = Column(Boolean, default=True)
created_at = Column(DateTime, default=datetime.utcnow)
updated_at = Column(DateTime, default=datetime.utcnow, onupdate=datetime.utcnow)