컴퓨터를 공부하고자 마음먹은지 N일차
[198일차]물리삭제와 논리삭제 본문
728x90
Reference
📕 SQL 첫걸음 / 아사이아츠시
물리삭제와 논리삭제
물리삭제와 논리삭제는 sql이나 데이터베이스 명령 그 자체라기보단,
아키텍쳐에 가깝다. 물리냐 논리냐를 판단하는건 데이터베이스 매니저가 설정을 해주는게 아닌,
만든사람이 용도에 따라 어떻게 구조하느냐에 따라 다르다.
물리삭제
DELETE FROM Friends WHERE id=3
위와같이 지우려는 데이터를 데이터베이스에서 아예 삭제해버리는것이다.
논리삭제
반면 논리삭제는 삭제여부를 나타내는 칼럼을 추가해서
그 칼럼의 값으로 삭제됐는지 판단을 하는것이다.
UPDATE Friends SET isDeleted=1 WHERE ID=2;
데이터베이스 상에서는 삭제되지 않았지만, 해당 테이블을 참조 할 때에는,
삭제여부칼럼을 통해 판단하여 값을 불러올때 제외시킨다.
그래서 결과적으로 값을 내어 줄 때에는 삭제되지 않은것만 준다.
물리삭제 vs 논리삭제
논리삭제의 장점으로는 실질적으로 데이터를 삭제하지 않았기 때문에
복구가 필요한 데이터는 되돌리기가 용이하다는 것이다.
단점으로는 실질적으로 데이터를 삭제한게아닌것과, 삭제로 설정되지않은 값을 select해야 되기 때문에,
검색속도가 떨어진다.
또한 유저의 개인정보와 같은 민감한 정보는 유출을 방지하기 위해,
탈퇴와 같은 로직에서 물리삭제를 선택하는것이 좋다.
예를들면 배달앱같은 경우 배달을 취소 하더라도 배달을 이미 시작한 경우나,
주문 관련 통계를 활용하기 위해서 해당 정보를 완전히 불필요하게 여기고 삭제하지 못한다.
상황에 따라 용도에 맞게 삭제방법을 택하는것이 중요하겠다.
'🗄Database' 카테고리의 다른 글
[225일차]인덱스 (0) | 2021.04.26 |
---|---|
[131일차]crud방명록 만들기-2 sequelizeORM 리팩토링하기 (0) | 2021.01.23 |
Comments