데이터베이스에서 삭제하는 방법은 용도에 따라 크게 '물리삭제'와 '논리삭제'로 나눌 수 있다.
물리삭제와 논리삭제
물리삭제는 SQL의 DELETE 명령을 이용해 직접 데이터를 삭제하자는 사고 방식이다.
삭제 대상 데이터는 "필요 없는 데이터이니 DELETE명령으로 테이블에서 삭제한다"라는 사고방식은 지극히 정상적이다.
한편 논리삭제의 경우, 테이블에 '삭제플래그'와 같은 열을 미리 준비하는 것이다.
테이블에서 실제로 행을 삭제하는 대신, UPDATE명령을 이용해 삭제플래그의 값을 유효하게 갱신하는 것이다.
논리삭제를 구현하는 방법은 삭제 플래그 말고도 여러 방법이 있다.
다만, 일반적으로는 삭제 플래그를 사용해서 논리삭제를 구현한다.
논리삭제의 장단점
논리삭제의 장점으로는 데이터를 삭제하지 않기 때문에 삭제되기 전의 상태로 쉽게 돌릴 수 있지만 단점으로는, 저장공간이 유지된다는점, 데이터베이스 크기가 증가함에 따라 검색 속도가 떨어질 수 있다는 점이 있다.
뿐만 아니라, 어플리케이션에서도 삭제임에도 DELETE가 아닌 UPDATE를 해야하니 혼란이 올 수 도 있다.
그럼 무엇을 써야 하는가
시스템의 특성이나 테이블에 저장되어 있는 데이터의 특성에 따라 다르기 때문에 단정지을 수 없다. 상황에 맞게 선택하는 것이 옳다.
비지니스에 따라 구분할수 있다.
개인정보 같은 경우에는 물리삭제하는 것이 보안 측면에서 좋을 수 있다.
주문 취소같은 경우에는 주문 관련 통계를 낼 때 유용할수도 있기에 물리삭제가 좋지 않을 수 있다.
또, 하드웨어면에서 저장공간이 부족한 경우 물리삭제해야할 수도 있다.
그렇기에 용도에 맞게 잘 알아서 판단해서 쓰자
'Backend > Database' 카테고리의 다른 글
[DB] 데이터베이스와 SQL (0) | 2023.11.21 |
---|