[SB 3기] 코드잇 스프린트 위클리페이퍼 8주차

JHLee·2025년 5월 31일
post-thumbnail

Q. SQL에서 DDL과 DML의 차이점을 설명하고, 각각의 대표적인 명령어들의 용도를 설명하세요.

✅ DDL이란?

  • DDL(Data Definition Language)은 데이터 정의 언어로, 데이터베이스의 스키마(구조) 자체를 정의하거나 변경할 때 사용하는 명령어다.
  • 주로 테이블, 인덱스, 뷰 등 데이터 객체의 생명주기를 관리한다.
  • CREATE: 테이블, 인덱스, 뷰 등의 객체를 생성
  • ALTER: 기존 테이블의 구조를 변경
  • DROP: 테이블이나 뷰 등의 객체를 삭제
  • TRUNCATE: 테이블 내 모든 데이터를 삭제하되, 테이블 구조는 유지

📌 예시

CREATE TABLE users (
    id         UUID PRIMARY KEY,
    username   VARCHAR(50) UNIQUE  NOT NULL,
    email      VARCHAR(100) UNIQUE NOT NULL,
    password   VARCHAR(60)         NOT NULL
);

ALTER TABLE users
    ADD COLUMN profile_id UUID;
    
DROP TABLE IF EXISTS users;

TRUNCATE TABLE users;

✅ DML이란?

  • DML(Data Manipulation Language)은 데이터 조작 언어로, 테이블의 데이터를 삽입, 수정, 삭제할 때 사용되는 명령어다.
  • INSERT: 새로운 데이터를 추가
  • UPDATE: 기존 데이터를 수정
  • DELETE: 기존 데이터를 삭제

📌 예시

INSERT INTO users(username,email,password) 
VALUES ('홍길동', 'hong@codeit.com', 'hong0000');

UPDATE users
SET password = 'hong1234'
WHERE username = '홍길동';
    
DELETE FROM users
WHERE username = '홍길동';

🆚 차이점

  • DDL문은 즉시 실행되고 영구적이다. (자동 커밋(auto commit), ROLLBACK 불가)
  • DML 문은 트랜잭션 처리에 따라 저장 또는 취소 가능하다. (COMMIT, ROLLBACK 등)

Q. 역정규화가 필요한 상황과 적용 시 고려해야 할 사항, 그리고 역정규화를 적용할 때의 장단점을 설명해주세요.

✅ 역정규화란?

  • 정규화된 DB의 구조를 의도적으로 중복을 포함하는 형태로 변경하여, 조회 성능을 향상시키는 기법이다.
  • 정규화는 조인(join) 작업이 많아질수록 읽기 성능이 저하된다는 단점이 있다.
  • 이럴 때 역정규화를 통해 성능을 최적화할 수 있다.

❓ 역정규화가 필요한 상황

  • 자주 조회되는 데이터 조합인 경우
    - ex. 게시글 조회시, 작성자의 닉네임도 항상 함께 조회된다.
  • 실시간 처리 성능이 중요한 경우
    - 빠른 응답이 중요한 실시간 서비스에서는 조인보다 한 번에 조회하는 구조가 유리하다.
  • 집계 연산이 빈번한 경우
    - COUNT, SUM, AVG 같은 연산이 자주 발생하는 경우, 미리 계산된 값을 저장하는 방식이 성능에 유리하다.

예를 들어, 전자상거래 시스템상 주문 데이터를 빠르게 조회하기 위해 역정규화를 사용할 수 있다.
반면, 금융 시스템에서는 데이터 무결성이 중요하므로 정규화를 우선적으로 고려한다.

📌 역정규화 적용 시 고려해야 할 사항

  • 데이터 정합성 유지 방안
    - 중복되는 데이터가 많아지므로, 데이터 수정/삭제 시 데이터 정합성을 어떻게 유지할지 고민해야 한다.
    • 이를 위해 트리거 활용을 고려해 볼 수 있다.

💡 트리거란?
테이블에 대한 이벤트(INSERT, UPDATE, DELETE)가 발생할 때 자동으로 실행하는 사전 정의된 작업이다.

  • 동기화 처리의 복잡성
    - 하나의 데이터 변경이 여러 테이블에 영향을 주는 경우, 유지보수가 복잡해진다.

📌 역정규화 적용 시 장단점

  • 장점
  1. 조회 성능 향상
  2. 모델 단순화
  3. DB 부하 감소
  • 단점
  1. 데이터 중복 발생
  2. 데이터 불일치 가능성
  3. 유지보수 비용 증가

📃 참고 문서

profile
개발자로 성장하기

3개의 댓글

comment-user-thumbnail
2025년 6월 2일

우왕~~ 멋진글 잘 보고갑니당!!👍👍

답글 달기
comment-user-thumbnail
2025년 6월 2일

깔끔하고 알찬 내용 잘 보고 갑니다!

답글 달기
comment-user-thumbnail
2025년 6월 2일

깔끔하게 정리된 글 잘 보고 갑니다!!!

답글 달기