CS

소프트딜리트 Soft Delete, 하드딜리트 Hard Delete

baek-dev 2025. 2. 8. 13:12

데이터베이스에서 데이터를 삭제하는 방식에는 소프트 딜리트(Soft Delete)와 하드 딜리트(Hard Delete)라는 두 가지 주요 방식이 있음. 이 두 가지 방식은 데이터 삭제의 목적과 보존 여부에 따라 선택하여 사용됨.

 

1. 하드 딜리트(Hard Delete)

 

정의

  • 데이터베이스에서 데이터를 완전히 삭제하는 방식.
  • DELETE SQL 명령어를 실행하면 해당 데이터는 물리적으로 데이터베이스에서 사라짐.

 

예시

DELETE FROM users WHERE id = 1;

위 쿼리를 실행하면 id = 1인 데이터가 완전히 삭제되어 복구가 불가능함.

 

장점

  1. 저장 공간 확보:
    • 데이터를 완전히 삭제하므로 디스크 공간을 절약할 수 있음.
  2. 데이터베이스 성능 향상:
    • 불필요한 데이터가 사라지기 때문에 쿼리 성능에 긍정적인 영향을 줄 수 있음.

 

단점

  1. 데이터 복구 불가:
    • 삭제 후 데이터를 복구하려면 별도의 백업 또는 로그를 활용해야 함.
  2. 감사 및 추적 어려움:
    • 삭제된 데이터에 대한 기록이 남지 않으므로 누가, 언제 삭제했는지 추적이 어려움.

2. 소프트 딜리트(Soft Delete)

 

정의

  • 데이터를 삭제하지 않고, 데이터베이스에 삭제된 상태임을 표시하는 방식.
  • 일반적으로 데이터의 is_deleted와 같은 컬럼에 플래그 값을 저장하거나, 삭제된 날짜를 기록하는 방식으로 구현됨.

 

예시

UPDATE users
SET is_deleted = true
WHERE id = 1;

위 쿼리를 실행하면 id = 1인 데이터가 물리적으로 삭제되지 않고, is_deleted 필드에 true 값이 저장되어 “삭제된 것처럼” 처리됨.

 

장점

  1. 데이터 복구 가능:
    • 삭제된 데이터를 다시 복구할 수 있음.
  2. 감사 및 추적 용이:
    • 데이터가 삭제된 시점과 상태를 기록할 수 있으므로, 감사 및 기록이 쉬움.
  3. 논리적인 삭제:
    • 데이터는 여전히 데이터베이스에 남아 있으므로, 필요한 경우 조회하거나 복원 가능.

 

단점

  1. 저장 공간 문제:
    • 삭제된 데이터도 저장되기 때문에 디스크 공간을 추가로 사용함.
  2. 복잡한 쿼리:
    • 데이터를 조회할 때 삭제 상태를 필터링해야 하므로 쿼리가 복잡해질 수 있음.
    • 예: SELECT * FROM users WHERE is_deleted = false;
  3. 성능 저하:
    • 삭제된 데이터가 많아질수록, 조회 성능에 영향을 미칠 수 있음.

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과 같은 규제에서 데이터의 영구 삭제가 요구될 때.

요약

  1. 소프트 딜리트는 데이터를 삭제하지 않고 삭제된 상태로 표시하여 복구 및 기록을 가능하게 함.
  2. 하드 딜리트는 데이터를 물리적으로 완전히 삭제하여 저장 공간을 절약함.
  3. 두 방식은 데이터 관리의 목적과 중요도에 따라 선택적으로 사용됨.

 

 

 

 

출처 : 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