코딩 이래요래
위클리 페이퍼 8주차 본문
Q. SQL에서 DDL과 DML의 차이점을 설명하고, 각각의 대표적인 명령어들의 용도를 설명하세요.
1. DDL(Data Definition Language) - 데이터 정의 언어
데이터 베이스의 스키마, 테이블, 인덱스 등 구조를 정의하거나 수정,삭제할 때 사용하는 명령어이다.
대표적으로 아래와 같은 명령어가 있다.
명령어 | 설명 |
CREATE | 테이블, 데이터베이스, 뷰 등을 생성 |
ALTER | 테이블 구조를 수정 (컬럼 추가/삭제/변경 등) |
DROP | 테이블이나 데이터베이스 삭제 |
TRUNCATE | 테이블의 모든 데이터를 빠르게 삭제 (롤백 불가) |
※ TRUNCATE는 DELETE와 유사하지만, 로그 기록을 최소화하여 속도가 빠르며 롤백이 불가능함.
2. DML(Data Manipulation Language) - 데이터 조작 언어
테이블에 저장된 데이터를 조회하거나 수정,삭제할 때 사용하는 명령어이다.
대표적으로 아래와 같은 명령어가 있다.
명령어 | 설명 |
SELECT | 데이터를 조회 |
INSERT | 데이터를 삽입 |
UPDATE | 데이터를 수정 |
DELETE | 데이터를 삭제 |
- 트랜잭션의 대상이 되므로 COMMIT, ROLLBACK이 가능함.
- 트랜잭션(Transaction) : 하나의 작업 단위를 말함. 즉, 데이터베이스의 데이터의 상태를 변화시키는(Insert, Update, Delete ...) 작업의 단위이다.
- 이때, 트랜잭션 범위 내의 모든 작업이 성공해야 COMMIT이 되고, 하나라도 실패하면 ROLLBACK이 됨.
- 사용자의 실제 데이터 조작을 위한 SQL이다.
Q. 역정규화가 필요한 상황과 적용 시 고려해야 할 사항, 그리고 역정규화를 적용할 때의 장단점을 설명해주세요.
데이터베이스 정규화 (1NF ~ 3NF + 역정규화)
정규화란?데이터베이스 설계 과정에서 데이터의 중복을 최소화하고, 데이터의 무결성과 일관성을 유지하기 위해 테이블을 체계적으로 나누는 과정이다. 정규화를 통해:불필요한 중복을 줄일
kh-coding.tistory.com
테이블을 정규화 하면 데이터의 중복을 최소화하고, 데이터의 무결성과 일관성을 유지하는 장점이 있지만, 지나친 정규화는 오히려 성능 저하를 일으키고, 복잡한 테이블 관계를 가질 수 있다.
이렇게, 정규화를 통해 지나치게 나뉘어진 테이블을 의도적으로 다시 합치거나 중복 데이터를 허용함으로써 성능을 개선시키는 정규화 기법을 역정규화라고 한다. (보통 읽기 성능 향상이 목적임)
1. 역정규화가 필요한 상황
- 조인(Join) 연산이 많아 쿼리 성능이 저하되는 경우
- 복잡한 정규화로 인해 다수의 테이블 조인이 필요함 -> 조회 쿼리 성능이 느림
- 조회(Select) 성능이 중요한 시스템
- 데이터 분석, 통계 시스템, 게시판 목록, 피드 등 조회가 빈번한 환경
- 일부 테이블에서 자주 사용되는 데이터를 함께 자주 조회할 경우
- 사용자 테이블에서 유저 이름, 프로필 이미지 등을 자주 참조
- 실시간 응답이 중요한 서비스
- 검색 엔진, 대시보드, 추천 시스템 등
2. 역정규화 적용 시 고려사항
- 데이터 중복
- 중복 데이터로 인해 저장 공간 증가 및 데이터 불일치 위험 존재
- 쓰기 작업 복잡성 증가
- 중복 필드가 여러 테이블에 존재할 경우, INSERT/UPDATE/DELETE 로직이 복잡해짐
- 트랜잭션 관리 필요
- 중복 데이터가 여러 곳에 존재할 경우, 동기화 문제를 방지하기 위한 트랜잭션 처리가 필수
- 유지보수 비용 증가
- 정규화보다 구조 변경이 어렵고 관리 부담이 커짐
3. 역정규화를 적용할 때의 장단점
- 장점
장점 | 설명 |
빠른 조회 속도 | 조인 없이도 필요한 정보를 한 번에 조회 가능 |
단순한 쿼리 | 조인 줄어들어 쿼리 복잡도 ↓ |
캐싱에 유리 | 정적인 데이터는 캐시에 올려두기 편함 |
- 단점
단점 | 설명 |
데이터 중복 | 저장 공간 낭비 및 관리 복잡성 증가 |
동기화 문제 | 중복된 필드의 변경 시 일관성 유지 어려움 |
유지보수 어려움 | 데이터 정합성 보장 위해 트랜잭션 처리 필수 |
지나친 정규화가 성능 저하를 일으킬 수 있다면 마찬가지로, 무분별한 역정규화 적용은 데이터 정합성과 유지보수성을 해칠 수 있으므로 상황을 잘 고려하여 적용해야 한다.
'위클리 페이퍼' 카테고리의 다른 글
위클리 페이퍼 10주차 (5) | 2025.06.23 |
---|---|
위클리 페이퍼 - 9주차 (2) | 2025.06.02 |
위클리 페이퍼 - 7주차 (3) | 2025.05.25 |
AOP (Aspect Oriented Programming) (0) | 2025.05.18 |
@Controller vs @RestController (0) | 2025.05.13 |