풀스택 백엔드 2026.06.22

syyu21b·2026년 6월 22일

풀스택 - 백엔드

목록 보기
34/49
post-thumbnail

[SECTION01. 데이터베이스란 무엇인가?]

데이터 베이스 특징

  • 동시성 제어: 여러 사용자가 동시에 읽고 써도 데이터가 깨지지 않도록 관리
  • 데이터 정합성: 정해진 규칙(타입, 제약조건)에 맞지 않는 데이터는 저장 자체를 막음
  • 대용량 처리 및 빠른 검색: 인덱스 등을 이용해 수백만 건 중에서도 빠르게 원하는 데이터를 찾음
  • 관계 표현: 데이터 간의 연결(누가 작성했는지, 어떤 카테고리인지 등)을 구조적으로 표현

데이터베이스의 종류

관계형 데이터베이스 (RDBMS)

  • 데이터를 표(테이블) 형태로 저장하고, 테이블 간의 관계로 데이터를 연결. 정해진 구조(스키마)를 미리 정의해야 함.
제품명특징주로 쓰이는 분야
MySQL무료, 가장 널리 쓰임, 웹 서비스에 최적화일반적인 웹/앱 서비스 백엔드
MariaDB완전 무료, 널리 쓰임, 웹 서비스에 최적화일반적인 웹/앱 서비스 백엔드
PostgreSQL무료, 기능이 풍부하고 확장성이 좋음복잡한 쿼리, 데이터 분석이 필요한 서비스
Oracle유료, 안정성과 성능이 매우 높음은행, 금융권, 대기업 기간계 시스템
H2가볍고 빠름, 별도 설치 불필요개발/테스트용 (실무 운영 DB로는 잘 안 씀)

데이터 구조가 명확하고, 데이터 간 관계가 중요하고, 정확성(정합성)이 중요한 경우 사용
예: 쇼핑몰 주문 시스템, 게시판, 회원 관리, 결제 시스템

비관계형 데이터베이스 (NoSQL)

  • 테이블/스키마에 얽매이지 않고 유연하게 데이터를 저장. 종류가 다양함.
종류저장 방식대표 제품주로 쓰이는 분야
Document(문서형)JSON과 비슷한 문서 단위로 저장MongoDB구조가 자주 바뀌는 서비스, 빠른 개발이 필요한 스타트업
Key-Value(키-값)Key 하나에 Value 하나, 단순 조회가 빠름Redis캐싱, 세션 저장, 실시간 랭킹
Column-family(컬럼형)대용량 데이터를 컬럼 단위로 저장Cassandra로그 데이터, IoT 센서 데이터 등 초대용량 처리
Graph(그래프형)데이터 간 "관계"를 노드/엣지로 저장Neo4j소셜 네트워크 친구 추천, 추천 알고리즘

데이터 구조가 자주 바뀌거나, 정형화되지 않은 데이터를 다루거나, 특정 기능(캐싱, 실시간 처리)에 특화된 저장이 필요한 경우


테이블, 행, 열

  • 관계형 데이터베이스는 데이터를 테이블(Table) 형태로 저장
용어비유설명
테이블 (Table)엑셀의 시트 (Sheet)같은 종류의 데이터를 모아둔 곳
행 (Row / Record)엑셀의 한 줄데이터 하나하나 (예: 회원 1명)
열 (Column / Field)엑셀의 세로 칸데이터의 속성 (예: 이름, 나이)

Primary Key (기본키)

  • 각 행을 유일하게 구분하는 값
  1. 이름이나 이메일은 변경되거나 중복될 가능성이 있지만, PK는 절대 중복되지 않음
  2. 보통 자동으로 1씩 증가하는 정수를 많이 사용 (AUTO_INCREMENT, IDENTITY 등)
  3. 모든 테이블은 원칙적으로 PK를 가져야 함

Foreign Key (외래키 - 참조키)

  • 다른 테이블의 Primary Key를 참조하는 값

예시: 게시글은 누가 썼는지 알아야 합니다.

member 테이블:

id (PK)nameemail
1홍길동hong@test.com
2김철수kim@test.com

board 테이블:

id (PK)titlecontentmember_id (FK)
1첫 게시글내용입니다1
2두번째 게시글내용입니다2

board.member_idmember.id를 가리킵니다.

"1번 게시글은 1번 회원(홍길동)이 작성했다" 는 관계가 만들어집니다.

FK를 사용하면 다음과 같은 제약도 자동으로 생깁니다:

  • member 테이블에 없는 idboard.member_id에 넣으려 하면 → 에러 (무결성)
  • 1번 회원을 삭제하려고 하면 → 그 회원이 쓴 게시글이 있는 경우 기본적으로 막힘 (또는 설정에 따라 같이 삭제/NULL 처리)

정규화 (Normalization)

  • 데이터를 중복 없이, 적절한 단위로 나누어 저장하는 것을 정규화

정리

  • 데이터베이스는 동시성, 정합성, 대용량 처리, 관계 표현을 위해 사용한다
  • 관계형 DB(RDBMS)는 구조화된 데이터와 명확한 관계 표현에 적합하다 (MySQL, PostgreSQL, Oracle 등)
  • 비관계형 DB(NoSQL)는 유연한 구조나 특정 목적(캐싱, 대용량 로그 등)에 적합하다 (MongoDB, Redis, Cassandra 등)
  • 테이블 = 데이터 모음, 행 = 데이터 1건, 열 = 속성
  • PK = 행을 유일하게 구분, FK = 다른 테이블과의 관계 연결
  • 정규화 = 중복을 줄이고 관계로 데이터를 나누는 것

연습 문제 및 정답

1. 관계형 DB와 NoSQL의 가장 큰 차이는 무엇인가?

2. 캐싱이 필요한 서비스에는 어떤 종류의 DB가 적합한가?

  • NoSQL 데이터베이스 중에서도 인메모리(In-Memory) 키-값(Key-Value) 구조의 NoSQL DB가 가장 적합

3. PK와 FK의 차이를 한 문장씩으로 설명해보자.

  • PK(기본키)는 테이블에서 각 행(레코드)을 서로 중복 없이 유일하게 식별할 수 있도록 지정한 고유한 기준 열입니다.

  • FK(외래키)는 한 테이블의 열이 다른 테이블의 PK를 참조하도록 연결하여 두 테이블 간의 상호 관계를 맺어주는 열입니다.

4. 게시글 테이블에 작성자의 이름을 직접 저장하지 않고 FK로 연결하는 이유는?

  • 데이터의 중복을 방지하고 일관성을 유지(데이터 무결성)하기 위해서

[SECTION02. H2 설치와 테이블 생성 실습]

  • H2 데이터베이스 = H2는 Java로 만들어진 가볍고 빠른 데이터베이스
  1. 별도의 설치 프로그램 없이 jar 파일 하나로 실행 가능
  2. 메모리 모드파일 모드를 모두 지원
  3. 웹 기반 콘솔(H2 Console)을 제공해서 브라우저에서 바로 SQL을 실행하고 결과를 확인할 수 있음
  4. 가볍고 빠르기 때문에 개발/테스트 단계에서 많이 사용 (실무 운영에서는 보통 MySQL, PostgreSQL 등을 사용)

데이터 타입

타입설명예시
INT정수1, 25, 100
BIGINT큰 정수 (자동증가 PK에 자주 사용)1, 1000000
VARCHAR(n)길이가 가변적인 문자열, n은 최대 길이'홍길동', 'hong@test.com'
TEXT길이 제한이 거의 없는 긴 문자열게시글 본문처럼 긴 글
DATE날짜만 (연-월-일)2026-06-21
TIMESTAMP날짜+시간2026-06-21 14:30:00
BOOLEAN참/거짓TRUE, FALSE

CREATE TABLE 문법

  • 기본 문법

CREATE TABLE 테이블명 (
    컬럼명1 데이터타입 제약조건,
    컬럼명2 데이터타입 제약조건,
    ...
);
  • 주요 제약조건

제약조건의미
PRIMARY KEY기본키 지정
NOT NULL빈 값을 허용하지 않음
UNIQUE중복된 값을 허용하지 않음
AUTO_INCREMENT (H2에서는 보통 IDENTITY 사용)값이 자동으로 1씩 증가
DEFAULT 값값을 넣지 않으면 기본값 사용
FOREIGN KEY다른 테이블의 PK를 참조

0개의 댓글