데이터베이스를 처음 배우는 분을 위한 출발점입니다. 데이터베이스가 왜 필요한지, 관계형(RDBMS)과 NoSQL·벡터 DB의 차이, 테이블 설계와 정규화, 인덱스와 트랜잭션의 원리, Oracle·MySQL·PostgreSQL·MongoDB 선택 기준, 그리고 SQL 기초부터 운영·튜닝까지의 학습 로드맵을 정리합니다.
Beginner · 입문
업데이트 2026.09.24
약 10분 읽기
12개 섹션
예제 코드 1개
🧭
DB 개념 큰 그림RDBMS vs NoSQL 선택테이블 설계 기초인덱스·트랜잭션 이해DB 학습 순서
데이터베이스를 처음 배우는 분을 위한 출발점입니다. 데이터베이스가 왜 필요한지, 관계형(RDBMS)과 NoSQL·벡터 DB의 차이, 테이블 설계와 정규화, 인덱스와 트랜잭션의 원리, Oracle·MySQL·PostgreSQL·MongoDB 선택 기준, 그리고 SQL 기초부터 운영·튜닝까지의 학습 로드맵을 정리합니다. 이 가이드는 개념을 나열하기보다, 실제 프로젝트에서 판단해야 하는 순서대로 내용을 따라갈 수 있게 구성했습니다.
핵심 관점
데이터베이스
쿼리 문법과 함께 스키마 설계, 인덱스, 트랜잭션, 권한, 백업까지 운영 관점으로 봅니다.
DB 개념 큰 그림RDBMS vs NoSQL 선택테이블 설계 기초인덱스·트랜잭션 이해DB 학습 순서
구조 다이어그램
글로 읽은 내용을 머릿속에 오래 남기려면 먼저 흐름을 그림으로 잡는 편이 좋습니다. 아래 두 그림은 DB 입문 & 로드맵를 학습할 때 계속 되돌아볼 수 있는 기준 지도입니다.
학습 흐름
다이어그램 렌더링 중…
아키텍처 관점
다이어그램 렌더링 중…
데이터베이스는 왜 필요한가
DB 입문 & 로드맵를 처음 펼칠 때는 세부 명령보다 큰 그림이 먼저입니다. 이 섹션에서는 앞으로 배울 개념들이 어떤 문제를 풀기 위해 등장했는지부터 잡아봅니다.
데이터를 엑셀이나 파일에 저장해도 되지 않을까요? 사용자가 한 명일 때는 괜찮습니다. 하지만 수천 명이 동시에 주문하고, 서버가 갑자기 꺼져도 데이터가 사라지지 않아야 하며, 수억 건 중에서 원하는 데이터를 0.01초 안에 찾아야 한다면 이야기가 달라집니다.
데이터베이스(DBMS)는 바로 이 문제들 — 동시성, 영속성, 정합성, 빠른 검색, 보안 — 을 해결하기 위해 수십 년간 발전해온 소프트웨어입니다. 백엔드 성능 문제의 상당수가 결국 DB 문제로 귀결되기 때문에, DB는 모든 서버 개발자의 필수 역량입니다.
요구 사항
파일 저장
데이터베이스
동시 수정
덮어쓰기로 데이터 유실
잠금·트랜잭션으로 안전하게 처리
장애 복구
쓰는 도중 꺼지면 파일 손상
로그 기반 복구로 일관성 유지
검색 속도
전체를 처음부터 읽어야 함
인덱스로 즉시 탐색
데이터 규칙
잘못된 값도 그대로 저장
제약 조건(NOT NULL, UNIQUE, FK)으로 차단
권한
파일 단위
테이블·행·컬럼 단위 권한
DB 종류 지도: 관계형 · NoSQL · 특수 목적
DB 종류 지도: 관계형 · NoSQL · 특수 목적은 선택지가 갈리는 지점입니다. 표를 기준으로 각 방법의 쓰임새와 운영상의 차이를 비교해두면 이후 판단이 훨씬 쉬워집니다.
"SQL vs NoSQL" 중 하나만 고르는 시대는 지났습니다. 실제 서비스는 관계형 DB를 중심에 두고, 목적에 맞는 DB를 보조로 함께 사용하는 경우가 대부분입니다.
테이블 설계 기초: 엔티티, 관계, 정규화은 선택지가 갈리는 지점입니다. 표를 기준으로 각 방법의 쓰임새와 운영상의 차이를 비교해두면 이후 판단이 훨씬 쉬워집니다.
좋은 테이블 설계는 "같은 정보를 두 곳에 저장하지 않는 것"에서 시작합니다. 회원 이름을 주문 테이블에도 저장해두면, 이름이 바뀔 때 두 곳을 모두 고쳐야 하고 하나를 놓치면 데이터가 어긋납니다. 이를 막기 위해 데이터를 주제별 테이블로 나누는 과정을 정규화라고 합니다.
관계
예시
구현 방법
1:1
회원 ↔ 회원 상세 프로필
한쪽 테이블에 상대 PK를 UNIQUE FK로
1:N
회원 1명 ↔ 주문 여러 건
N쪽(주문) 테이블에 회원 FK
N:M
주문 ↔ 상품 (한 주문에 여러 상품, 한 상품이 여러 주문에)
중간 테이블(주문상품)로 분리
첫 SQL: 테이블 만들고 조회하기
여기서는 첫 SQL: 테이블 만들고 조회하기을 실제 코드와 함께 확인합니다. 예제를 그대로 따라 하기보다, 입력과 출력, 그리고 바뀌기 쉬운 부분이 어디인지 보면서 읽어보세요.
SQL은 "어떻게"가 아니라 "무엇을" 원하는지 선언하는 언어입니다. 아래 예제는 회원과 주문 테이블을 만들고, 회원별 주문 금액 합계를 구합니다. JOIN과 GROUP BY만 익혀도 실무 조회의 절반 이상을 작성할 수 있습니다.
first.sqlSQL
CREATE TABLE members ( id BIGSERIAL PRIMARY KEY, email VARCHAR(255) NOT NULL UNIQUE, name VARCHAR(100) NOT NULL, created_at TIMESTAMP NOT NULL DEFAULT now());CREATE TABLE orders ( id BIGSERIAL PRIMARY KEY, member_id BIGINT NOT NULL REFERENCES members(id), -- 1:N 관계 amount INTEGER NOT NULL CHECK (amount > 0), ordered_at TIMESTAMP NOT NULL DEFAULT now());CREATE INDEX idx_orders_member ON orders(member_id); -- JOIN·조회 성능INSERT INTO members (email, name) VALUES ('kim@example.com', '김개발'), ('lee@example.com', '이디비');INSERT INTO orders (member_id, amount) VALUES (1, 30000), (1, 12000), (2, 8000);-- 회원별 주문 건수와 총액 (많이 산 순)SELECT m.name, COUNT(o.id) AS order_count, SUM(o.amount) AS totalFROM members mJOIN orders o ON o.member_id = m.idGROUP BY m.id, m.nameORDER BY total DESC;
인덱스와 트랜잭션: DB의 두 기둥
인덱스와 트랜잭션: DB의 두 기둥은 선택지가 갈리는 지점입니다. 표를 기준으로 각 방법의 쓰임새와 운영상의 차이를 비교해두면 이후 판단이 훨씬 쉬워집니다.
인덱스는 책의 색인과 같습니다. 색인 없이 특정 단어를 찾으려면 책 전체를 넘겨야 하듯, 인덱스가 없으면 DB는 테이블 전체를 읽습니다(Full Scan). 반대로 인덱스는 쓰기 성능과 저장 공간을 소모하므로 자주 조회하는 조건에만 만듭니다.
트랜잭션은 "계좌 A에서 출금 + 계좌 B에 입금"처럼 함께 성공하거나 함께 실패해야 하는 작업을 묶는 단위입니다. 이를 보장하는 네 가지 성질을 ACID라고 합니다.
ACID
의미
예시
Atomicity (원자성)
전부 성공하거나 전부 취소
출금만 되고 입금이 안 되는 일은 없음
Consistency (일관성)
제약 조건이 항상 지켜짐
잔액이 음수가 되지 않음
Isolation (격리성)
동시 실행 트랜잭션이 서로 간섭하지 않음
두 사람이 동시에 마지막 재고를 사지 못함
Durability (지속성)
커밋된 데이터는 장애에도 유지
커밋 직후 서버가 꺼져도 주문 유지
운영의 기본: 백업, 권한, 모니터링
운영의 기본: 백업, 권한, 모니터링은 선택지가 갈리는 지점입니다. 표를 기준으로 각 방법의 쓰임새와 운영상의 차이를 비교해두면 이후 판단이 훨씬 쉬워집니다.
백업은 "복구해봤을 때" 비로소 의미가 있습니다. 정기적으로 백업에서 실제 복구를 해보는 리허설을 운영 절차에 포함하세요.
영역
해야 할 일
놓치면
백업
정기 전체 백업 + 로그 백업, 복구 리허설
장애 시 데이터 영구 손실
권한
애플리케이션 계정은 필요한 테이블·권한만
해킹 시 전체 DB 유출
커넥션 관리
커넥션 풀 크기 조정, 유휴 연결 정리
연결 고갈로 서비스 중단
슬로 쿼리
느린 쿼리 로그 수집 및 주기적 개선
트래픽 증가 시 DB 과부하
복제 (Replication)
읽기 전용 복제본, 장애 시 전환
단일 장애점
스키마 변경
마이그레이션 도구로 버전 관리, 대형 테이블은 온라인 변경
운영 중 테이블 잠금
시작 전 준비물
시작 전 준비물은 선택지가 갈리는 지점입니다. 표를 기준으로 각 방법의 쓰임새와 운영상의 차이를 비교해두면 이후 판단이 훨씬 쉬워집니다.
DB 학습은 프로그래밍 경험이 없어도 시작할 수 있는 분야입니다. SQL은 영어 문장과 비슷해 비개발 직군(기획, 마케팅, 데이터 분석)도 많이 배웁니다.