Community

질문주신 의도에 알맞는 답변인진 모르겠지만, 개인적인 생각을 공유드려요. 비즈니스에서 직접적으로 soft delete를 요구하지 않는다면, 대부분의 경우 데이터의 상태변화를 자동으로 관리해주는 프

질문주신 의도에 알맞는 답변인진 모르겠지만, 개인적인 생각을 공유드려요. 비즈니스에서 직접적으로 soft delete를 요구하지 않는다면, 대부분의 경우 데이터의 상태변화를 자동으로 관리해주는 프레임워크나 라이브러리에게 역할을 맡길 수 있으므로 마음 놓고 hard delete를 사용할 수 있습니다. 가령 Hibernate의 경우 Envers(https://hibernate.org/orm/envers/)의 도움을 받을 수 있습니다. 데이터의 상태를 관리하는 별도의 테이블이 생성되고, 별도로 생성된 테이블을 통해 데이터의 생성, 수정, 삭제를 처음부터 끝까지 기록하기 때문에 실제 데이터 테이블에서는 데이터 복원 걱정없이 hard delete를 할 수 있습니다. 질문주신 내용 "soft delete를 하게되면 where조건으로 한번 더 데이터를 확인해야하는데 비효율적이지 않나요?" 의 답변으로 "대부분의 ORM 프레임워크에서 자동으로 필터 조회 및 soft delete필터를 지원하기 때문에 신경쓰지 않아도 된다." 는 의견도 있습니다. 그러나 결국 실제 쿼리는 삭제시 delete가 아닌 alter, 조회시 where 포함 등이 날아가기 때문에 저는 계속 헷갈리더라구요. 거기에 하나의 데이터에 대해 soft delete와 hard delete가 공존하게 되면 인지부조화도... 대부분의 경우 soft delete는 hide라는 상태값으로 대체해서 표현할 수 있었습니다. soft delete를 hide로 대체하게 되면 "데이터를 복구한다" 대신 "숨겨진 데이터를 조회한다"가 되고, "where 조건으로 한번 더 데이터를 확인한다" 대신 "where 조건으로 숨겨진 데이터를 확인한다"가 됩니다. 명칭만 바꿨을 뿐인데 훨씬 자연스럽게 읽게 되지요. 비즈니스와 팀마다 데이터 관리방법이 다르고, soft delete 말고도 여러가지 파훼법이 있다는 이야기를 전달드리고 싶었습니다.

알림

알림이 없습니다