Soft delete와 hard delete

이지용·2022년 12월 17일
0

TIL

목록 보기
4/4

데이터를 삭제하는 방법 중 hard delete와 soft delete가 있다.

  • Hard delete - 데이터가 필요 없어질 때 데이터베이스에서 데이터를 영구히 삭제하는 것을 말한다. 삭제된 데이터의 복구가 불가능하다.
  • Soft delete - 테이블에 isDeleted같은 플래그나 deletedAt같은 타임스탬프 컬럼을 추가해 삭제 처리 됐다고 간주하는 것을 말한다. 삭제 처리된 데이터가 필요해지면 다시 접근이 가능하다.

그렇다면 데이터를 복구할 수 있는 soft delete가 무조건 좋은 거 아닌가?

당연히 각자 장단점이 있고, 인터넷의 정보와 나의 생각을 정리해봤다.
먼저 hard delete의 장점은 아래와 같다.

  1. 필요 없어질 경우 삭제를 하면 되기 때문에 로직이 매우 간단해진다.
  2. 계단식 삭제(cascade delete)를 지원하는 RDBMS의 경우 바로 적용이 가능하다.
  3. 테이블에 있는 데이터는 모두 존재하는 데이터이기 때문에 데이터를 읽는 과정에서 추가적인 로직이 필요 없기 때문에 좋은 성능을 보인다.
  4. 사용하지 않는 열(row)는 완전히 삭제되기 때문에 공간을 차지하지 않는다.
  5. 삭제 처리된 데이터를 구분하기 위한 행(column)이 필요하지 않기 때문에 하나의 열이 차지하는 데이터가 soft delete에 비해 적다.

그렇다면 이 모든 걸 포기하면서까지 soft delete를 적용하는 이유는 뭘까?

  1. 삭제된 데이터의 복구가 가능하다. 사실상 soft delete를 사용하는 가장 큰 이유다.
  2. 데이터가 삭제되지 않고 남아 있기 때문에 무결성 검사, 감사, 기록 확인 등을 어렵지 않게 할 수 있다.

이 외에도 hard delete를 적용할 경우 추후에 그 열에서 사용했던 primary key나 unique 행의 값을 다시 사용할 수 있는데, 이는 문제가 될 수도 있기 때문에 결국 둘 다 상황에 따라 적절히 사용하는 게 좋을 것 같다.

요약

Soft delete는 데이터를 복원할 수 있는 대신 개발 자원이 많이 소모된다.
Hard delete는 데이터 복원을 포기한 대신 쉽게 구현이 가능하고 비교적 높은 성능을 보장해준다.
따라서 정답은 없으며 상황에 맞게 적용하면 된다고 생각한다.

13개의 댓글

comment-user-thumbnail
2022년 12월 23일

dddddddddddd

1개의 답글
comment-user-thumbnail
2022년 12월 23일

dd

답글 달기
comment-user-thumbnail
2022년 12월 23일

dsadasdaddasd

답글 달기
comment-user-thumbnail
2022년 12월 23일

dasdasdsadsad

답글 달기
comment-user-thumbnail
2022년 12월 23일

sdasdasdasd

답글 달기
comment-user-thumbnail
2022년 12월 23일

dasd

답글 달기
comment-user-thumbnail
2022년 12월 23일

sdasdasdasdddddddddddddddddd

답글 달기
comment-user-thumbnail
2022년 12월 23일

fffffffffffffff

답글 달기
comment-user-thumbnail
2022년 12월 23일

fffffffffffffffffffffff

답글 달기
comment-user-thumbnail
2022년 12월 24일

dsa

답글 달기