본문 바로가기
CS/DataBase

데이터베이스 첫걸음 정리 - 19장. 물리삭제와 논리삭제

by yongckim 2022. 9. 11.
728x90
반응형

두 종류의 삭제 방법

데이터베이스에서 데이터를 삭제하는 방법은 용도에 따라 크게 물리삭제논리삭제 두 가지로 나뉩니다.

하지만 SQL 명령중에 실제로 물리삭제와 논리삭제를 구분하여 삭제하는 방법은 존재하지 않습니다.

이는 시스템 설계에 대한 부분으로 삭제에 대해 두가지 전략을 사용할 수 있다고 생각하면 됩니다.

물리삭제

물리삭제는 SQL의 DELETE 명령을 사용해 직접 데이터를 삭제하는 방법입니다.

  • 물리 삭제의 장점
    • 간단한 방법으로, 논리 삭제에 비해 고려할 부분이 적습니다.
  • 물리 삭제의 단점
    • 한번 삭제시 데이터를 되돌리기 쉽지 않습니다.

논리 삭제

테이블의 삭제 플래그와 같은 열을 미리 준비둔 후 데이터를 삭제해야하는 상황때 DELETE를 사용하여 삭제하지 않고 UPDATE 명령을 통해 삭제 플래그를 이용하여 데이터가 삭제되었음을 명시하는 방법입니다.

SELECT를 이용하여 조회시에는 삭제플래그가 삭제로 설정된 행을 제외하여 SELECT 명령을 실행하는 방식으로 진행합니다.

  • 논리 삭제의 장점
    • 데이터를 삭제하지 않아도 되기 때문에 이전 상태로 간단히 돌릴 수 있습니다.
    • 데이터가 계속 남아있으므로 해당 데이터를 기준으로 통계 내기가 쉽습니다.
  • 논리 삭제의 단점
    • 방법에 따라 삭제 플래그 등의 추가 필드가 존재할 수 있습니다.
    • 삭제해도 계속 데이터가 남아있으므로 삭제를 통해 데이터베이스 공간을 확보할 수 없습니다.
    • 데이터베이스의 크기가 증가함에 따라 검색 속도가 떨어집니다.
    • 삭제 행위임에도 불구하고 UPDATE 명령을 실행하기 때문에 혼란을 줄 수 있습니다.

데이터를 삭제할 때 어떤 삭제가 적절할까?

어떤 방법으로 삭제할 것인지는 시스템의 특성이나 테이블에 따라 저장되어 있는 데이터의 특성이 다르기 때문에 단정지어 말하기는 힘듭니다.

  • 물리삭제가 추천되는 상황

사용자가 서비스 탈퇴를 하는 상황을 생각해봅시다.

사용자가 서비스에 가입한 계정을 삭제하기 때문에 사용자에 대한 데이터를 삭제해야 합니다.

이때 개인정보보호를 위해 테이블에서 사용자에 개인정보에 대한 데이터를 삭제하는 과정이 필요합니다.

이때 논리삭제를 할 경우 차후에 개인정보 유출이나, 개인정보 보호법에 위반될 수 있으므로 이런 경우에는 물리삭제를 하는 것이 좋습니다.

  • 논리삭제가 추천되는 상황

쇼핑사이트에서 사용자가 주문을 취소한 상황을 생각해봅시다.

이때 주문이 취소되었다고 해도 해당 취소했던 내용이 차후에 필요할 수 있으므로 데이터베이스에 물리삭제를 하는 것보다는 논리삭제로 데이터를 유지하는 것이 좋습니다.

또한, 이런 데이터는 주문 관련 통계를 낼때 유용하게 사용할 수 있으므로 논리삭제를 하는 것이 좋습니다.

정리

  • 데이터 삭제방법은 물리삭제와 논리삭제로 나뉩니다.
  • 물리 삭제는 DELETE 명령을 사용하여 데이터를 실제로 테이블에서 삭제하는 방법입니다.
  • 논리 삭제는 삭제 플래그라는 플래그를 추가하여 삭제 여부를 명시하는 방법입니다. 삭제 플래그는 UPDATE를 통해 수정합니다.
  • 물리삭제와 논리삭제가 어떤것이 더 좋은지 따지기보다는 현재 상황에 맞는 데이터 삭제방법을 선택하는 것이 좋습니다.
반응형