오픈소스로 알아보는 Soft Delete

오픈소스로 알아보는 Soft Delete
Photo by Evie S. / Unsplash

들어가며

이번 시간에는 azure-sdk-for-python의 PR을 통해 soft-delete 기법을 알아보겠습니다. 😄

어떤 점이 궁금했나요?

1
PR discussion 중

위 PR은 기존 코드에서 test를 위해 비활성화했던 soft-delete 기능을 다시 활성화하며, test code들을 수정한 내용입니다. 해당 PR을 읽어보던 중soft delete키워드가 문득 궁금해져 찾아보게 되었습니다.

Soft Delete란?

Soft Delete는 데이터베이스에서 자주 사용하는 용어로, 데이터를 삭제하지 않고, 삭제된 것처럼 표시하는 기법을 말합니다. 즉, 데이터를 삭제하지 않고, 삭제된 것처럼 표시하는 것이죠. 이를 통해 데이터를 복구할 수 있습니다. 반대되는 개념으로 Hard Delete 가 존재하죠.

실제로 Hard Delete는 SQL의 DELETE 쿼리를 사용하여 데이터를 삭제한다면, Soft Delete는 UPDATE 쿼리를 사용하여 is_deleted 컬럼을 True로 변경하는 방식으로 데이터를 삭제합니다.

그렇다면 Soft Delete가 왜 필요할까요?

Soft Delete의 가장 큰 장점은 복구가 가능하다는 것 입니다. 우리가 데이터를 실수로 삭제 하거나, 정책 상으로 일정 기간 동안 데이터가 복구 가능 해야 하는 경우가 있습니다. 이런 경우에 Soft Delete를 활용하면 손 쉽게 데이터를 복구 할 수 있습니다. 또한 데이터를 바탕으로 통계를 내야하는 경우에도 Soft Delete를 유용하게 활용할 수 있습니다.

Soft Delete의 단점은 없을까요?

soft delete는 데이터를 삭제하지 않기 때문에, 데이터베이스의 용량을 차지 하고 있게 됩니다. 또한 soft delete를 사용하면 데이터를 조회할 때, is_deleted 컬럼을 항상 체크해야 하기 때문에 조회 속도가 느려질 수 있다는 단점도 있습니다.

이외에도 해당 블로그 글에서 soft delete의 단점 을 다음과 같이 소개하고 있습니다.

  1. 모든 코드에서 delete_at 조건을 체크하고 있어야 한다.
  2. 외래키의 기능이 상실된다.
  3. 종속성을 체크하며 데이터의 정리가 어려워진다.
  4. 현실적으로 서비스 상에서 삭제 취소, 즉 복구가 잘 일어나지 않는다.

따라서 저자는 delete_at 컬럼을 사용하는 것 대신에, 삭제된 데이터들을 보관하는 deleted_record를 만들어서 관리하는 것을 추천하고 있습니다. 혹시 자세한 내용이 궁금하시다면 링크에서 확인해보세요!

여담

2
PR discussion 중

해당 PR의 리뷰 내용 중에time.sleep()대신await asyncio.sleep()을 사용하라는 의견이 있는데, 다음 시간에는두 함수의 동작 방식의 차이에 대해서 자세히 알아보도록 하겠습니다. 감사합니다. 😄

Read more

[논문 리뷰] Learning Retrieval Augmentation for Personalized Dialogue Generation

[논문 리뷰] Learning Retrieval Augmentation for Personalized Dialogue Generation

이번 시간에는 Personalized dialogue generation을 RAG와 결합하여 시도한 "Learning Retrieval Augmentation for Personalized Dialogue Generation" 논문을 살펴봅니다. 특히 최근에 개인화된 AI가 주목 받고 있는데요, AI가 사용자의 페르소나, 정보, 성격 등을 반영한다면 더욱 풍성하고 도움이 되는 답변을 생성할 수 있습니다. 이를 Personalized dialogue generation이라고 하는데요. 연구팀은 어떻게 해당 문제를

By Yongwoo Song
[독서] 나는 왜 생각이 많을까?

[독서] 나는 왜 생각이 많을까?

✒️발상을 바꿔야 한다. 앞으로는 '불안해하지 말아야지'가 아니라 '불안과 더불어 살아가야지'라고 생각하자.나는 왜 생각이 많을까? | 홋타 슈고 | 서사원- 교보ebook머릿속의 스위치를 끄고 싶을 때 보는 뇌과학 이야기, 심플한 사고법은 아무나 가질 수 없다! 그러나 누구나 해 볼 수 있다! 짧게 생각하고 빠르게 행동하기 위한 필독서!

By Yongwoo Song
[독서] 자기 경영 노트 - 피터 드러커

[독서] 자기 경영 노트 - 피터 드러커

✒️성과를 올리는 모든 사람들은 목표를 달성하기 위한 실행 능력을 갖추고 있다. 이 실행 능력은 기업에서 일하든, 정부기관에서 일하든, 병원의 관리자이든, 대학의 학장이든 똑같다.피터 드러커 자기경영노트 | 피터 드러커 | 한국경제신문- 교보ebook어떻게 ‘성과를 내는 경영 리더’가 되는가 지식작업자를 위한 변화와 혁신의 5가지 법칙! 이 책의 주제는 성과를 내는 능력을 향상시키기 위한

By Yongwoo Song