데이터베이스의 삭제 방법인 물리 삭제와 논리 삭제에 대해 알아보자.
데이터를 삭제할 때에는 물리 삭제와 논리 삭제의 두 가지 방법을 고려해볼 수 있다.
그러나 이 방법들은 각기 다른 SQL 명령이 존재하는 것이 아니라 사고방식의 차이라 봐야 한다.
먼저 물리 삭제는 SQL의 DELETE
명령을 사용해 직접 데이터를 삭제하는 방법이다. 삭제 대상 데이터는 필요 없는 데이터이므로 테이블에서 삭제하자는 자연스러운 발상이다.
논리 삭제의 경우 테이블에 삭제 플래그와 같은 열을 미리 준비해둔다.
즉, 실제로 데이터를 삭제하는 것이 아니라 UPDATE
명령을 이용해 삭제 플래그의 값을 갱신해주자는 삭제 방법을 말한다.
조회할 때도 삭제 플래그가 설정된 행을 제외하는 SELECT
명령을 실행하여 실제로 데이터가 삭제된 것처럼 동작하게 하는 것이다.
논리 삭제의 장점으로는 데어트를 삭제하지 않기 때문에 삭제 전 상태로 간단하게 복구할 수 있다.
하지만 단점으로는 삭제해도 데이터베이스의 공간이 늘어나지 않는 점과 데이터베이스의 크기가 증가함에 따라 검색 속도도 떨어지는 점이 있다.
삭제 방법을 선택하는 것은 테이블에 저장되어 있는 데이터의 특성에 따라 다르기 때문에 단정지어 말할 수 없다. 상황에 맞게 선택해야 한다.
예를 들어 SNS 서비스 처럼 개인정보를 다루는 시스템에서는 사용자가 탈퇴한 경우 데이터를 삭제한다.
개인정보의 유츨을 미연에 방지하는 측면에서도 좋은 선택이라 할 수 있다.
반면, 쇼핑 사이트의 경우 사용자가 주문을 취소할 경우에도 데이터를 삭제하는데 이때는 논리 삭제를 많이 사용한다.
주문이 취소되었다고 해도 발주는 된 것으로 주문 관련 통계를 낼 때 유의미하게 사용될 수 있기 때문이다.
이처럼 물리 삭제와 논리 삭제는 어느 쪽이 좋은지 따지기 보다는 상황과 용도에 맞게 선택하는 것이 중요하다.
데이터베이스에서 물리적으로 데이터를 삭제하는 방법이 아닌 논리적으로 데이터를 삭제하는 방법에 대해 알아보았다.
데이터가 중요해지는 시대인 만큼 관리해야 하는 데이터가 어떤 데이터인지 잘 파악하고 용도와 상황에 맞게 삭제하는 것이 중요할 것이다.