뉴스피드 과제를 준비하면서 회원탈퇴 로직에 대한 처리를 팀원과 고민했다.
'탈퇴한 사용자의 아이디는 재사용할 수 없고, 복구할 수 없다'를 해결하기위해 생각한 방법은
1. 테이블에서 해당 유저 row를 직접 삭제하고, 따로 삭제된 유저만을 모아놓는 테이블을 하나 더 만든다.
2. 테이블에서 해당 유저에 status값을 줘서, 그 값만 변경한다.
두가지였다.
전자는 HardDelete, 후자는 SoftDelete라고 한다. 우리조는 후자를 선택했다.
후자를 선택한 이유(장점) :
1. 사용자, 검색 기록과 같이 서비스 개선을 위해 데이터를 남겨두면 활용방향이 많다.
2. 혹시나 데이터를 다시 복구해야하는 상황이 발생할 수 있다.
3. update 쿼리가 delete 쿼리보다 몇 ms 더 빠르다.
4. 데이터는 곧 돈이다. 정보화 시대에서 데이터는 굉장히 중요하다.
논리삭제를 선택해서 생기는 단점 :
1. 테이블 크기가 커진다(컬럼 하나 추가).
2. 매번 삭제여부를 고려해야한다. (삭제여부를 고려해 쿼리나 로직을 작성해야한다)