SMAIVNN
article thumbnail
[Nest.JS] TypeORM 삽입 최적화
Web 2024. 4. 27. 00:52

TypeORM을 활용하며 데이터를 삽입할 때 주로.save()를 사용하곤 합니다.하지만 성능 최적화를 위해서 .insert()와 .update()를 적극 활용하면 좋은데요. 단순하게 계산하면 2배 이상 차이나는 이 메서드들에 대해 알아보려고 합니다. .save()의 동작.save()는 아래와 같이 동작을 합니다.아직 존재하지 않는 경우 엔티티를 삽입한다.엔티티가 존재하는 경우 기존 엔티티를 업데이트 하려고 시도한다.그럼 이미 존재하는지에 대한 확인은 어떻게 할까요?우선 SELECT 쿼리를 통해 엔티티 객체에 정의된 Primary Key (기본 키)를 사용하여 데이터베이스 내 해당 엔터티의 존재 여부를 확인합니다.만약 없다면 TypeORM은 이를 새로운 엔티티로 간주하고 삽입 작업을 수행합니다. 만약 엔티..

article thumbnail
[Nest.JS] TypeORM의 soft-delete와 회원 탈퇴 정책
Web 2024. 4. 17. 23:31

프로젝트 시작 전, 기존 몽고DB로 생성되었던 boilerPlate 코드를 TypeORM과 RDB로 변경하는 작업을 진행하고 있습니다. 또한 추가적으로 기본적인 Auth 관련 코드를 작성중입니다. 오늘은 서비스에서 회원 탈퇴시 고려할만한 사항들과 구현에 대해서 알아보고자 합니다. 회원 탈퇴 정책회원 탈퇴는 우선 '개인정보 보호법'을 준수하는게 우선입니다. 하지만 이 글에서는 개인정보 보호법과 관련 내용은 다루지 않고 서비스 운영에서 회원의 탈퇴시 고려할 상황에 관해 알아보겠습니다.자원 보유 검토사용자가 서비스에서 갖고있는 포인트 / 주문 내역 등 여러가지 자원에 대해서 인지하고 있는지, 이에 대한 삭제를 인지하고 있는지 등을 검토해야합니다.  서비스 측에서도 이러한 자원이 필수..

article thumbnail
프로젝트 시작은 항상 쉽지 않음
Project 2024. 4. 12. 01:59

9월 서비스를 목표로 하는 프로젝트를 시작하게 되었습니다. 새로운 서비스를 만들어보는건 항상 설레는 일이긴합니다. 그런데 막상 프로젝트를 시작하면 머리가 지끈지끈 합니다. 프로젝트의 구조를 설계하는 셋업 단계에서 특히 더더욱 그런것 같습니다 ㅠㅠ 구조 설계 단계가 끝났고 이제 1차 스프린트를 시작하기에 앞서.. 시작하기도 전에 했던 여러가지 고민들과 결론에 대해서 말해보고자 합니다. 무슨 데이터베이스를 선택할까? 이번 프로젝트에서는 데이터베이스 선택부터 너무 힘들었습니다. 저는 주로 도큐먼트db인 MongoDB를 써왔고, 이번 프로젝트에서는 RDB를 써볼까하는 생각을 하였습니다. 혼자 하는 프로젝트이기도 하고 공부도 할 겸 TypeORM + PostgreSQL을 사용할 계획이였습니다. 하지만, 막상 하나..