Soft Delete (논리 삭제)
💡Soft Delete 란?
- 논리 삭제는 데이터를 실제로 삭제하지 않고 '삭제됨'으로 표시하는 방식이다.
- 데이터는 물리적으로 데이터베이스에 남아있지만, 플래그나 상태 필드를 통해 삭제 여부를 관리한다.
💡구현 방식
- 일반적으로 테이블에 is_deleted, deleted_at, status와 같은 컬럼을 추가하여 삭제 상태를 관리한다.
💡장점
- 논리 삭제는 삭제된 데이터를 쉽게 복구할 수 있다.
- 감사 추적(Audit Trail)이 필요한 경우 변경 이력을 유지할 수 있으며, 실수로 인한 데이터 손실 위험을 줄일 수 있다.
- 여기서 감사 추적(Audit Trail)이란, 누가, 언제, 어떤 작업을 했는지와 그 결과를 시간순으로 기록해 두는 것을 말한다. 흔히 로그(log) 형태로 남긴다.
💡단점
- 삭제된 데이터가 계속 저장되어 데이터베이스 용량이 증가한다.
- 조회 시 삭제된 데이터를 필터링하는 추가 조건이 필요하여 쿼리가 복잡해지고, 사용자가 삭제된 데이터를 볼 수 있어 혼란을 야기할 수 있다.
Hard Delete (물리 삭제)
💡Hard Delete 란?
- 물리 삭제는 데이터베이스에서 데이터를 완전히 제거하는 방식이다.
- 한번 삭제되면 복구가 불가능하며, 더 이상 필요하지 않은 데이터를 제거할 때 사용된다.
💡구현 방식
- SQL의 DELETE 문을 사용하여 레코드를 완전히 제거한다.
💡장점
- 불필요한 데이터를 제거하여 저장 공간을 절약할 수 있다.
- 삭제된 데이터가 완전히 사라져 데이터베이스 관리가 단순해지며, 추가 플래그나 조건 없이 쿼리 성능이 향상된다.
💡단점
- 데이터가 영구적으로 제거되어 나중에 필요할 경우 복구할 수 없다.
- 감사 추적을 위한 이력 기록이 남지 않으며, 외래 키 제약조건이 있는 경우 연관된 데이터 처리가 복잡해진다.
요약
| 구분 | 논리 삭제(Soft Delete) | 물리 삭제(Hard Delete) |
| 데이터 보존 | 데이터베이스에 유지됨 | 완전히 제거됨 |
| 복구 가능성 | 복구 가능 | 복구 불가능 |
| 저장 공간 | 용량 증가 | 용량 절약 |
| 쿼리 복잡도 | 필터링 조건 필요 | 단순함 |
| 감사 추적 | 이력 유지 가능 | 이력 없음 |
| 구현 방식 | 플래그 또는 상태 컬럼 추가 | DELETE 문 사용 |
출처
https://www.geeksforgeeks.org/dbms/difference-between-soft-delete-and-hard-delete/
Difference Between Soft Delete and Hard Delete - GeeksforGeeks
Your All-in-One Learning Portal: GeeksforGeeks is a comprehensive educational platform that empowers learners across domains-spanning computer science and programming, school education, upskilling, commerce, software tools, competitive exams, and more.
www.geeksforgeeks.org
'심화 > DB' 카테고리의 다른 글
| [DB] existById, findById (업데이트 중..) (0) | 2025.11.10 |
|---|---|
| [DB] NoSQL 장/단점 (0) | 2025.10.28 |
| [DB] NoSQL 특징 (0) | 2025.10.27 |
| [DB] Spring Boot 초기 데이터 세팅 (업데이트 중..) (2) | 2025.10.21 |
| [DB] SQL 제약조건 (0) | 2025.09.20 |