01. DDL과 DML
1. 데이터 정의어 (DDL, Data Defination Language)
데이터 정의어란 주로 DB를 설계 및 관리하는 사람이 사용하는 언어로, 데이터베이스 구조를 생성 / 수정 / 삭제하는 언어를 뜻한다.
| DDL | 예시 | |
| CREATE | 데이터베이스 구조 생성 | CREATE INDEX 인덱스 이름] ON [테이블(속성)] |
| ALTER | 데이테베이스 구조 수정 | ALTER TABLE [테이블] ADD [속성 이름] [속성 타입] |
| DROP | 데이버테이스 구조 삭제 | DROP [테이블] |
| TRUNCATE | 데이터베이스 구조는 냅두되, 내용만 삭제 | TRUNCATE [테이블] |
2. 데이터 조작어 (DML, Data Manipulation Language)
데이터 조작어란 주로 데이터베이스 구조 내 테이블에 저장될 데이터를 생성 / 수정 / 삭제 / 조회하는 언어를 뜻한다.
| DML | 의미 | 예시 |
| INSERT | 데이터 삽입 | INSERT INTO VALUES [(속성값1, 속성값2, ...)] |
| SELECT | 데이터 조회 | SELETE * FROM [테이블] |
| UPDATE | 데이터 수정 | UPDATE [테이블] SET [수정할 내용] |
| DELETE | 데이터 삭제 | DELETE FROM [테이블] |
3. DDL vs DML
| 구분 | DDL (Data Definition Language) |
DML (Data Manipulation Language) |
| 개념 | 데이터베이스 객체의 구조를 정의하는 언어 | 데이터를 조회 / 저장 / 수정 / 삭제하는 언어 |
| 대상 | 테이블, 인덱스, 뷰 등 스키마 | 테이블 내의 실제 데이터인 레코드 |
| 반영 | 명령 실행 즉시 데이터베이스에 반영 | Rollback이 가능 / Commit을 통해 최종 반영 |
02. 역정규화 (Denormalization)
역정규화란 데이터베이스의 성능 향상을 목적으로, 의도적으로 정규화 원칙을 위배하는 행위를 의미한다. 즉, 정규화를 통해 분리된 데이터를 다시 통합 / 중복 / 분리하여 데이터베이스의 전체적인 성능을 향상시키고 편의성을 개선하는 행위를 뜻한다.
1. 역정규화가 필요한 상황
| 필요한 상황 | |
| 조인 연산 과다 | 데이터를 조회할 떄 너무 많은 테이블에 조인 연산이 적용된 경우, 성능 저하가 발생 |
| 대량 데이터 조회 | 특정 범위의 데이터나 요약 통계를 너무 빈번하게 조회할 경우 |
| 성능 한계 | 인덱스나 캐시 등의 수단을 활용한 성능 최적화가 불가능한 경우 |
2. 역정규화의 장단점
| 장점 | 데이터 조회 속도 향상 | 조인 횟수가 줄어들어 데이터 조회 속도 개선 |
| 단점 | 데이터 무결성 파괴 | 데이터 중복으로 인한 데이터 무결성 파괴 가능성 증가 |
| 비용 증가 | 데이터 중복 저장으로 인해 사용하는 저장 공간 크기 증가 |
3. 고려 사항
| 고려 사항 | |
| 데이터 무결성 유지 | 중복된 데이터 내용이 달라지지 않도록, 별도의 로직 필요 |
| 대안 검토 | 역정규화를 대신할 수 있는 인덱스 조정 / 뷰 활용 / 캐싱 레이어 도입 등을 먼저 시도했는지 확인 |
| 유지보수 비용 | 구조의 복잡도에 따라 개발 및 운영 비용이 얼마나 늘어날지 계산 필요 |
'[Codeit] > Spring 백엔드 10기 위클리페이퍼' 카테고리의 다른 글
| [10] 계층별 입력값 검증과 Mockito (0) | 2026.04.06 |
|---|---|
| [09] JPA의 N+1 문제, 그리고 트랜잭션의 ACID (0) | 2026.04.06 |
| [07] 웹 API의 발전 과정과 HTTP 요청의 흐름 (0) | 2026.02.26 |
| [06] AOP와 MVC (0) | 2026.02.26 |
| [05] 웹 서버와 WAS, 그리고 Bean 등록 (0) | 2026.02.12 |