Soft delete에 대해 알아보자

권태형·2023년 3월 4일
0

지식정리

목록 보기
15/72
post-thumbnail

우리는 게임에서 무언가를 지우거나 잃어버리거나, 실수로 홈페이지 아이디나 게시물을 지웠을 때 가끔 관리자에게 문의하여 복구하는 경우가 있다. 그냥 삭제(delete)를 하였을 때 남아있는 데이터가 존재하지 않는데 어떻게 똑같은 상태로 복구할 수 있는 것일까?

위와 같은 기능을 하기 위해선 삭제를 할 때 완전한 삭제를 하는 것이 아니라 Soft delete(일시적인 삭제)를 하는 것이다. 그럼 정확히 Soft delete는 뭘까?

Soft delete란?

Soft delete는 데이터베이스 레코드를 삭제하지 않고, 삭제된 것처럼 처리하는 기술을 말한다. Soft delete는 삭제된 데이터를 복원하기 쉽게 하며, 데이터의 무결성을 유지하기 위한 목적으로 사용된다. 일반적으로 소프트웨어 개발에서 데이터의 삭제는 물리적인 삭제가 아니라 논리적인 삭제를 의미한다.

Soft delete의 구현방법

Soft delete의 구현 방법은 데이터베이스 종류에 따라 다를 수 있지만, 대표적인 방법은 다음의 두 가지이다.

  1. is_deleted 컬럼 추가
    데이터베이스에 삭제 여부를 나타내는 컬럼을 추가하고, 삭제된 레코드는 해당 컬럼에 특정 값을 입력하는 방법이다. 삭제된 데이터를 복원하고자 할 때는 is_deleted 컬럼에 특정 값을 입력하여 삭제 상태를 취소할 수 있도록 만든다.

  2. 별도의 테이블 생성
    삭제된 데이터를 기록하는 별도의 테이블을 생성하는 방법이 있다. 별도의 테이블에는 삭제된 레코드의 정보와 삭제 시간 등을 저장하며, 삭제된 데이터를 복원하고자 할 때는 해당 테이블에서 데이터를 조회하여 복원한다.

Soft delete의 특징

장점

아무래도 가장 큰 장점은 삭제된 데이터를 복원할 수 있다는 것이다. 예를 들어, 실수로 데이터를 삭제한 경우에도 Soft delete를 이용하면 데이터를 복원할 수 있다.

또한, Soft delete는 데이터의 무결성을 유지하기 위한 목적으로도 사용된다. 데이터베이스에서 물리적으로 삭제되지 않기 때문에 데이터 간의 관계가 유지된다.

단점

완전히 삭제하지 않고 유지하기 때문에 데이터베이스의 용량이 증가하고, 검색 속도가 느려질 수 있다.

또한, 삭제된 데이터가 여전히 데이터베이스에 존재하기 때문에, 공격자가 삭제된 데이터를 악용할 가능성이 있다.

profile
22년 12월 개발을 시작한 신입 개발자 ‘권태형’입니다. 포스팅 하나하나 내가 다시보기 위해 쓰는 것이지만, 다른 분들에게도 도움이 되었으면 좋겠습니다. 💯컬러폰트가 잘 안보이실 경우 🌙다크모드를 이용해주세요.😀 지적과 참견은 언제나 환영합니다. 많은 댓글 부탁드립니다.

0개의 댓글