데이터베이스에서 데이터를 삭제하는 방식에는 소프트 딜리트(Soft Delete)와 하드 딜리트(Hard Delete)라는 두 가지 주요 방식이 있음. 이 두 가지 방식은 데이터 삭제의 목적과 보존 여부에 따라 선택하여 사용됨.
1. 하드 딜리트(Hard Delete)
정의
- 데이터베이스에서 데이터를 완전히 삭제하는 방식.
- DELETE SQL 명령어를 실행하면 해당 데이터는 물리적으로 데이터베이스에서 사라짐.
예시
DELETE FROM users WHERE id = 1;
위 쿼리를 실행하면 id = 1인 데이터가 완전히 삭제되어 복구가 불가능함.
장점
- 저장 공간 확보:
- 데이터를 완전히 삭제하므로 디스크 공간을 절약할 수 있음.
- 데이터베이스 성능 향상:
- 불필요한 데이터가 사라지기 때문에 쿼리 성능에 긍정적인 영향을 줄 수 있음.
단점
- 데이터 복구 불가:
- 삭제 후 데이터를 복구하려면 별도의 백업 또는 로그를 활용해야 함.
- 감사 및 추적 어려움:
- 삭제된 데이터에 대한 기록이 남지 않으므로 누가, 언제 삭제했는지 추적이 어려움.
2. 소프트 딜리트(Soft Delete)
정의
- 데이터를 삭제하지 않고, 데이터베이스에 삭제된 상태임을 표시하는 방식.
- 일반적으로 데이터의 is_deleted와 같은 컬럼에 플래그 값을 저장하거나, 삭제된 날짜를 기록하는 방식으로 구현됨.
예시
UPDATE users
SET is_deleted = true
WHERE id = 1;
위 쿼리를 실행하면 id = 1인 데이터가 물리적으로 삭제되지 않고, is_deleted 필드에 true 값이 저장되어 “삭제된 것처럼” 처리됨.
장점
- 데이터 복구 가능:
- 삭제된 데이터를 다시 복구할 수 있음.
- 감사 및 추적 용이:
- 데이터가 삭제된 시점과 상태를 기록할 수 있으므로, 감사 및 기록이 쉬움.
- 논리적인 삭제:
- 데이터는 여전히 데이터베이스에 남아 있으므로, 필요한 경우 조회하거나 복원 가능.
단점
- 저장 공간 문제:
- 삭제된 데이터도 저장되기 때문에 디스크 공간을 추가로 사용함.
- 복잡한 쿼리:
- 데이터를 조회할 때 삭제 상태를 필터링해야 하므로 쿼리가 복잡해질 수 있음.
- 예: SELECT * FROM users WHERE is_deleted = false;
- 성능 저하:
- 삭제된 데이터가 많아질수록, 조회 성능에 영향을 미칠 수 있음.
3. 소프트 딜리트와 하드 딜리트의 차이점
특징 | 소프트 딜리트 | 하드 딜리트 |
데이터 삭제 여부 | 삭제된 데이터가 물리적으로 남아 있음 | 데이터가 완전히 삭제됨 |
복구 가능 여부 | 복구 가능 | 복구 불가능 |
감사 및 추적 | 가능 | 어려움 |
저장 공간 사용량 | 더 많은 저장 공간 사용 | 저장 공간을 적게 사용 |
쿼리 복잡도 | 필터링 로직이 필요 | 단순 |
사용 사례 | 데이터 복구가 중요한 경우 | 데이터가 더 이상 필요 없는 경우 |
4. 소프트 딜리트 구현 방식
1. Boolean 플래그 사용:
- is_deleted 컬럼을 추가하여 삭제 여부를 관리.
ALTER TABLE users ADD COLUMN is_deleted BOOLEAN DEFAULT false;
2. 삭제 일자 기록:
- deleted_at과 같은 컬럼을 추가하여 삭제된 시간을 기록.
ALTER TABLE users ADD COLUMN deleted_at TIMESTAMP;
3. 이벤트 기반 로그 테이블:
- 삭제된 데이터를 별도의 테이블로 이동하여 보관.
CREATE TABLE deleted_users AS
SELECT * FROM users WHERE is_deleted = true;
5. 소프트 딜리트와 하드 딜리트 선택 기준
소프트 딜리트를 사용하는 경우
- 데이터 복구가 필요하거나, 삭제 기록을 보존해야 할 때.
- 고객 데이터, 주문 기록, 계약 정보와 같은 민감한 데이터를 관리할 때.
- 로그 및 감사 데이터가 중요한 환경.
하드 딜리트를 사용하는 경우
- 데이터 복구가 불필요하며, 저장 공간 관리가 중요한 경우.
- 임시 데이터, 캐시 데이터, 테스트 데이터 등을 삭제할 때.
- GDPR과 같은 규제에서 데이터의 영구 삭제가 요구될 때.
요약
- 소프트 딜리트는 데이터를 삭제하지 않고 삭제된 상태로 표시하여 복구 및 기록을 가능하게 함.
- 하드 딜리트는 데이터를 물리적으로 완전히 삭제하여 저장 공간을 절약함.
- 두 방식은 데이터 관리의 목적과 중요도에 따라 선택적으로 사용됨.
출처 : ChatGPT
'CS' 카테고리의 다른 글
DFS, BFS (0) | 2025.02.14 |
---|---|
git branch 별 차이 (dev, origin dev, origin/dev) (0) | 2025.02.11 |
동기, 비동기 (3) | 2025.02.06 |
JMeter 성능테스트 (1) | 2025.02.04 |
DBMS, RDBMS, RDB (3) | 2025.02.03 |