본문으로 건너뛰기
SQL 기초집LESSON 23

SQLite와 PostgreSQL의 차이, 백엔드 연결 관점

난이도입문 → 초급
예상 시간30분
선수지식이전 강의

23강. SQLite와 PostgreSQL의 차이, 백엔드 연결 관점

1. 이번 강의에서 해결할 문제

SQLite 파일에서 동작한 스키마를 그대로 PostgreSQL에 적용하면 자동 증가 키, 날짜, 불리언, 동시성에서 차이가 납니다. 운영 DB로 확장할 변경 지점을 분리합니다.

2. 학습 목표

3. 핵심 개념

SQLite는 단일 파일·인프로세스 DB로 로컬 실습과 작은 배포에 단순합니다. PostgreSQL은 별도 서버, 사용자·권한, 연결 풀, 강한 정적 타입과 높은 동시성을 제공합니다. 스키마 마이그레이션과 운영 백업은 DB별 도구로 관리합니다.

4. 단계별 SQL 예시

대상: players에 해당하는 PostgreSQL 예시, SQLite DB 변경 없음
파일 경로: C:\dev\game-ranking-db\sql\23-postgresql-schema.sql

sql/23-postgresql-schema.sql · PostgreSQL
CREATE TABLE players (
player_id BIGINT GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
username TEXT NOT NULL UNIQUE,
region TEXT NOT NULL CHECK (region IN ('KR', 'JP', 'NA', 'EU')),
active BOOLEAN NOT NULL DEFAULT TRUE,
created_at TIMESTAMPTZ NOT NULL DEFAULT CURRENT_TIMESTAMP
);

CREATE TABLE games (
game_id BIGINT GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
mode TEXT NOT NULL CHECK (mode IN ('ranked', 'normal')),
started_at TIMESTAMPTZ NOT NULL,
duration_seconds INTEGER NOT NULL CHECK (duration_seconds > 0)
);
SQLite 대응 핵심
-- INTEGER PRIMARY KEY: SQLite rowid 별칭
-- active INTEGER CHECK (active IN (0, 1)): 불리언 표현
-- started_at TEXT: UTC ISO-8601 저장 정책
PowerShell · 파일 검토와 SQLite 상태 확인
Get-Content .\sql\23-postgresql-schema.sql
sqlite3 .\data\game_ranking.db "SELECT sqlite_version(); PRAGMA foreign_keys;"

FastAPI·SQLAlchemy 연결 문자열 예시는 sqlite:///./game_ranking.dbpostgresql+psycopg://user:password@host/dbname처럼 다르며 실제 비밀번호는 환경 변수에 둡니다.

5. 쿼리가 동작하는 이유

PostgreSQL identity는 내부 sequence에서 값을 생성하지만 UNIQUE는 별도 PRIMARY KEY가 보장합니다. TIMESTAMPTZ는 순간을 시간대와 함께 다루며 출력 시 세션 시간대를 적용합니다. DB 드라이버는 동시 요청에 연결 풀과 트랜잭션 경계를 제공합니다.

6. 자주 하는 실수와 안전한 해결법

7. 직접 실습

8. 이해 점검 질문 3개

9. 핵심 요약

MINI QUIZ

SQLite와 PostgreSQL의 차이, 백엔드 연결 관점 미니 퀴즈

선택 즉시 정답과 해설을 확인할 수 있습니다. 결과는 이 브라우저에만 저장됩니다.

0 / 2
  1. 문제 1“SQLite와 PostgreSQL의 차이, 백엔드 연결 관점”의 개념 차이를 실제 작업에 적용한 판단은 무엇인가요?
  2. 문제 2“SQLite와 PostgreSQL의 차이, 백엔드 연결 관점”의 작업 기준으로 ‘SQL 문자열에 사용자 값을 연결’을 진단하거나 바로잡은 선택은 무엇인가요?
LESSON STATUS

학습을 마쳤나요?

직접 실습과 점검 질문까지 확인한 뒤 완료로 표시하세요.

23강. SQLite와 PostgreSQL의 차이, 백엔드 연결 관점 미완료 상태