개발 지식 - DB에서 '진짜' 값을 삭제하면 안되는 이유.

이유승·2023년 7월 19일
0

개발 지식

목록 보기
1/27

데이터베이스에 저장된 데이터를 '삭제'하는 것은 어려운 일이 아니다. 그런데 많은 개발자분들은 데이터베이스에서 '진짜로' 데이터를 삭제해서는 안된다고들 말한다. 그 이유는 무엇일까?

1. 데이터의 보존과 복구.

삭제된 데이터는 대부분의 경우 복구가 어렵다. 인간은 완벽하지 않고 실수로 삭제한 데이터가 정말 중요한 데이터라면? 돌이킬 수 없는 사태가 일어날 수도 있다.

2. 데이터의 상호 연관성.

각각의 데이터는 상황과 필요에 따라서 다른 데이터를 '참조'하고 있을 수도 있다. 특히 PK 혹은 FK의 개념으로 사용되고 있는 데이터를 실수로 삭제해버리면? 데이터 사이의 참조 관계가 무너져서 기능 어딘가에서 문제가 발생될 소지가 있다.

3. 데이터베이스의 성능.

데이터를 삭제하는게 쉽다는 것은 SQL문 등을 이용하는 사람 기준에서 그렇다는 것이지 사실 DBMS에서 데이터를 삭제하는 것도 상당한 자원을 소모하는 일이다. 특히 다량의 데이터를 삭제하는 것은 데이터베이스의 성능에 영향을 미칠 수도 있다.



그러면 어떻게 해야하는가?

데이터 필드에 'isDelete' 등의 값을 추가하여 데이터를 삭제했을 때, 진짜 DB에서 삭제하지 말고 DB 내부에서 이 데이터는 '삭제된 데이터이다'라는 꼬리표를 붙여주면 된다. 이렇게되면 외부에서는 데이터가 삭제된 것처럼 보일수 있지만 유사시 언제든 데이터를 복구할 수 있으며 실제로 삭제되지 않았으니 참조 관계도 여전히 유지된다. DBMS 성능에서도 데이터를 삭제하는 것보다 필드값 하나를 바꾸는건 상대적으로 자원을 덜 소모하기 때문에 모든 면에서 이득이 된다.

profile
프론트엔드 개발자를 준비하고 있습니다.

1개의 댓글

comment-user-thumbnail
2023년 7월 19일

덕분에 좋은 정보 얻어갑니다, 감사합니다.

답글 달기