본문으로 건너뛰기
데이터베이스 기초집LESSON 01

데이터베이스 시스템과 DBMS의 역할

난이도초급 → 중급
예상 시간35분
선수지식SQL 기초집

1강. 데이터베이스 시스템과 DBMS의 역할

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

FastAPI가 데이터를 직접 파일에 쓰면 동시 요청, 일부 저장, 검색 성능, 권한 통제를 모두 애플리케이션이 책임져야 합니다. 게임 랭킹 서비스에서 DBMS가 해결해야 할 문제와 백엔드에 남겨야 할 규칙을 구분합니다.

2. 학습 목표​

3. 핵심 개념​

데이터베이스는 조직된 데이터 자체이고 DBMS는 그 데이터를 정의하고 읽고 바꾸며 보호하는 소프트웨어입니다. PostgreSQL 서버 프로세스는 여러 클라이언트 연결을 받아 SQL을 계획·실행하고, 트랜잭션 로그와 데이터 파일을 관리합니다. FastAPI는 인증된 사용자와 비즈니스 규칙을 판단하고, DBMS는 제약 조건과 트랜잭션으로 저장 상태를 지킵니다.

초보자가 가장 먼저 구분해야 할 것은 데이터, 관리 프로그램, 서비스 코드입니다. 경기 결과 한 건은 데이터이고, PostgreSQL은 그 데이터를 안전하게 저장하는 DBMS이며, FastAPI는 사용자의 요청이 허용되는지 판단하는 애플리케이션입니다. 세 가지를 모두 "DB"라고 부르면 장애가 났을 때 어느 계층을 확인해야 하는지 알기 어렵습니다.

용어 정리​

용어무엇인가이 과정의 예
데이터베이스관련 데이터와 구조의 논리적 모음game_ranking_dev
DBMS저장·조회·무결성·동시성·복구를 담당하는 소프트웨어PostgreSQL
데이터베이스 서버DBMS 프로세스가 연결을 기다리는 실행 환경로컬 PostgreSQL 서비스
클라이언트DBMS에 연결해 SQL을 요청하는 프로그램psql, FastAPI/SQLAlchemy
트랜잭션함께 성공하거나 함께 취소할 작업 묶음경기 결과와 점수 갱신
제약 조건저장 가능한 상태를 제한하는 DB 규칙점수 CHECK, 플레이어 FOREIGN KEY

같은 규칙을 어디에 둘까​

규칙주 책임이유
요청 사용자가 해당 플레이어인가FastAPI인증 정보와 요청 문맥이 필요함
점수는 음수가 될 수 없다PostgreSQL 제약 + API 사전 검증어떤 쓰기 경로에서도 지켜야 함
승리하면 알림을 보낸다FastAPI/작업 큐외부 동작과 실패 정책이 필요함
경기 결과와 점수는 함께 저장된다PostgreSQL 트랜잭션일부 저장을 막아야 함

API 검증과 DB 제약은 경쟁 관계가 아닙니다. API는 사용자에게 빠르고 이해하기 쉬운 오류를 주고, DB 제약은 배치·관리 도구처럼 다른 쓰기 경로도 같은 불변식을 지키게 합니다.

4. 단계별 예시​

문서 경로: C:\dev\game-ranking-service\docs\database\01-responsibility-map.md

아래 지도는 코드를 실행하는 예제가 아니라 요청이 이동하는 경로를 먼저 그리는 설계 실습입니다. 화살표 하나를 지날 때마다 어떤 정보가 전달되고 어느 계층이 판단하는지 표시합니다.

docs/database/01-responsibility-map.md
게임 클라이언트 → FastAPI → SQLAlchemy → PostgreSQL → 디스크

FastAPI: 인증, 요청 검증, 승리 보상 계산
PostgreSQL: FK/CHECK 검증, 동시 변경 조정, 원자적 저장, 복구
운영자: 역할·권한, 백업, 모니터링, 용량 계획

한 요청을 단계별로 따라가기​

플레이어가 경기 종료 결과를 보낸다고 가정합니다.

  1. 게임 클라이언트가 경기 ID와 결과를 HTTP 요청으로 보냅니다. 클라이언트가 계산한 점수를 그대로 신뢰하지 않습니다.
  2. FastAPI가 로그인 정보, 입력 형식, 해당 경기 참가 여부를 확인하고 서버 규칙으로 점수 변화를 계산합니다.
  3. SQLAlchemy가 애플리케이션의 저장 의도를 SQL과 매개변수로 바꿉니다. 문자열을 이어 붙여 SQL을 만들지 않습니다.
  4. PostgreSQL이 FK·CHECK를 검사하고 경기 결과 추가와 점수 갱신을 한 트랜잭션으로 처리합니다.
  5. 저장 계층이 커밋된 변경을 복구 가능한 형태로 기록합니다.
  6. 성공한 경우에만 FastAPI가 클라이언트에 성공 응답을 보냅니다.

중간에 점수 갱신이 실패하면 경기 결과만 남겨서는 안 됩니다. 트랜잭션을 롤백해 요청 전 상태로 돌아가는 것이 DBMS가 제공하는 핵심 안전 장치입니다.

PowerShell · 프로젝트 준비
New-Item -ItemType Directory -Force C:\dev\game-ranking-service\docs\database
Set-Location C:\dev\game-ranking-service
psql --version

psql --version은 서버 데이터에 접근하거나 변경하지 않습니다. 설치된 PostgreSQL 클라이언트 버전이 출력되면 준비가 된 것입니다.

출력 예시
psql (PostgreSQL) 17.x

실제 숫자는 설치한 버전에 따라 다릅니다. 명령을 찾지 못한다면 SQL을 고치기 전에 PostgreSQL의 bin 폴더가 PATH에 포함됐는지 확인합니다.

5. 동작 원리​

클라이언트는 DB 파일이 아니라 PostgreSQL 프로토콜을 통해 서버에 요청합니다. DBMS는 파서, 플래너, 실행기, 저장 계층을 거쳐 결과를 만들고 트랜잭션 경계를 적용합니다. 책임을 나누면 API 프로세스가 중단되어도 커밋된 데이터의 일관성을 DBMS가 유지할 수 있습니다.

6. 자주 하는 실수와 해결법​

7. 직접 실습​

8. 이해 점검 질문 3개​

9. 핵심 요약​

다음 강의 연결​

DBMS의 책임을 정했으므로 다음에는 무엇을 정상 데이터로 인정할지 관계형 모델과 제약으로 표현합니다. 2강. 관계형 모델과 데이터 무결성로 이어갑니다.

MINI QUIZ

데이터베이스 시스템과 DBMS의 역할 미니 퀴즈

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

0 / 2
  1. 문제 1“데이터베이스 시스템과 DBMS의 역할” 내용을 실제 작업에 적용한 설명으로 가장 알맞은 것은 무엇인가요?
  2. 문제 2“데이터베이스 시스템과 DBMS의 역할” 실습 중 ‘개발용 관리자 계정으로 서비스 실행’ 상황을 발견했습니다. 본문과 일치하는 설명은 무엇인가요?
LESSON STATUS

학습을 마쳤나요?

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

1강. 데이터베이스 시스템과 DBMS의 역할 미완료 상태