DATA & DATABASE · DATABASE22강 공개
데이터베이스 기초집
SQL 문법을 넘어 데이터가 오래 안전하게 살아남는 구조를 설계합니다. PostgreSQL에서 무결성, 실행 계획, 트랜잭션, 동시성, 백업과 보안을 점검하며 게임 랭킹 서비스를 운영 가능한 데이터베이스로 발전시킵니다.
강의 수22강
난이도초급 → 중급
최종 결과물운영 가능한 게임 랭킹 서비스 데이터베이스 설계서
진행률을 불러오는 중...
과정 소개
SQL 기초집에서 만든 players, games, match_results, character_stats를 출발점으로 삼습니다. 이번에는 쿼리 문법을 반복하지 않고 요구사항을 ERD로 바꾸는 방법, 제약 조건으로 오류를 차단하는 방법, 실행 계획과 인덱스로 병목을 찾는 방법, 여러 요청이 동시에 들어올 때 데이터를 지키는 방법을 학습합니다.
주 데이터베이스는 PostgreSQL입니다. SQLite와의 차이는 파일형 개발 환경과 서버형 운영 환경의 차이가 판단에 영향을 줄 때만 비교합니다.
선수지식
실습 환경
- PostgreSQL 18 현재 안정 문서 기준
- Windows PowerShell과
psql,pg_dump,pg_restore - Python 3.13+, FastAPI, SQLAlchemy 2.x, Alembic, python-dotenv
- 실습 루트:
C:\dev\game-ranking-service - 개발 DB:
game_ranking_dev, 테스트 DB:game_ranking_test
최종 결과물
- 플레이어, 게임, 매치 결과, 캐릭터, 랭킹 스냅샷을 포함한 ERD와 설계 근거
- PK·FK·UNIQUE·CHECK·NOT NULL로 보호되는 PostgreSQL 스키마
- 조회 패턴에 근거한 인덱스와
EXPLAIN (ANALYZE, BUFFERS)점검 기록 - 경기 결과와 랭킹 갱신을 원자적으로 처리하는 트랜잭션 시나리오
- FastAPI·SQLAlchemy 모델, 세션, Alembic 마이그레이션 연결 기준
- 역할·권한·환경 변수·백업·복구·로그·느린 쿼리 운영 체크리스트
공식 문서 기준
- PostgreSQL Windows 설치
- PostgreSQL 현재 버전 문서
- PostgreSQL 제약 조건
- PostgreSQL 인덱스
- PostgreSQL 트랜잭션 격리
- SQLAlchemy 2.x 문서
- Alembic 문서
22강 학습 순서
- 데이터베이스 시스템과 DBMS의 역할
- 관계형 데이터 모델과 데이터 무결성
- 데이터베이스·스키마·테이블의 계층
- 요구사항을 엔터티와 관계로 바꾸는 법
- ERD 작성과 카디널리티
- Primary Key, Foreign Key, Unique, Check 제약 조건
- 정규화 1~3정규형과 비정규화 판단
- 데이터 타입 선택과 NULL 설계
- 생성일·수정일·삭제 상태 등 공통 컬럼 설계
- 인덱스의 원리와 적용 기준
- EXPLAIN으로 실행 계획 읽기
- 트랜잭션과 ACID
- 동시성 문제: Lost Update와 Dirty Read
- 격리 수준, Lock, Deadlock 기초
- 데이터베이스 연결과 Connection Pool
- ORM과 Raw SQL의 역할 분리
- 마이그레이션과 Alembic 기반 스키마 변경
- 백업·복구·데이터 내보내기 기초
- 데이터베이스 보안: 계정, 권한, 비밀 정보
- 로그·모니터링·느린 쿼리 점검
- SQL과 NoSQL의 차이와 선택 기준
- 최종 프로젝트: 게임 랭킹 서비스 DB 설계·성능·운영 점검
COURSE ORIENTATION
과정 선택 안내
- 학습 대상
- SQL 이후 스키마, 무결성, 트랜잭션과 운영 관점을 체계화하려는 학습자
- 선수지식
- SQL 기초집
- 최종 결과물
- 운영 가능한 게임 랭킹 서비스 데이터베이스 설계서
- 추천 다음 과정