기주

[DB] soft delete 논리삭제 본문

TIL

[DB] soft delete 논리삭제

기주그지마 2024. 4. 5. 22:32

 

 

프로젝트를 진행하던 중, 실제 서비스에서 쓰이는 바와 같이 soft delete를 사용하자는 의견이 나왔다. 

 

db에 저장된 내용을 물리적으로 삭제(hard delete)하는 것이아니라, 논리적으로만 삭제함으로써, 

 

데이터 삭제요청이 들어오더라도, 그 요청을 서비스 내에서 수행함과 동시에, 실제 DB에는 과거에 생겼던 데이터 목록들

 

도 볼 수 있게된다. 

 

 

그 결과 문제가 생겼을때,  데이터 복원이 가능하고, 데이터 변경이력, 데이터 삭제시간 등을 확인할 수 있는 장점이 있다.

 

구현이 어렵지도 않기때문에 바로 기획단계에서 바로 프로젝트에 도입했다.

 

 

 

 

 

DB에 테이블을 만들때 삭제여부를 확인할 수 있는 데이터속성 1개만 추가하면된다 (is_deleted)

 

데이터 속성 1개 만으로 데이터의 삭제여부, 삭제시간을 모두 알고 싶었기 때문에 deleted_at을 이용하였다

 

 

데이터 삭제정보표시)

  • deleted_at : null : 삭제되지않음
  • deleted_at : timestamp : 삭제됨, 삭제 시간