강의

멘토링

로드맵

Inflearn brand logo image

인프런 커뮤니티 질문&답변

니홍님의 프로필 이미지
니홍

작성한 질문수

MongoDB를 활용하여, 200억건 이상의 데이터 파이프라인 작성법

웬만하면 Insert 쓰지말고 Upsert 써주세요!!

upsert

해결된 질문

작성

·

48

0

upsert를 insert 가 내부 동작방식이 다를텐데 성능상 이슈가 없나요?

upsert 만 사용하라고 하시려면 내부적인 매커니즘을 같이 설명해주시면 좋을 것 같습니다.

답변 2

0

July님의 프로필 이미지
July
지식공유자

안녕하세요 니홍님 예전 강의다 보니 설명에 대해서 좀 누락된 부분이 있었나보네요 ㅠㅠ 이렇게라도 답변 드리도록 하겠습니다.

 

기본적으로 upsertFind AND Update 아니면 Find And Insert 입니다.
결국 Find를 한 후에, filter에 따라 하는 행위가 달라집니다.

 

단순히 insert만 해야 하는 상황이라면 insert만을 사용하는것이 당연히 더 좋습니다.

왜냐면 명시적으로도 스탭이 줄어들기 떄문이죠.

 

제가 upsert 를 사용하는 이유는 모듈 개발에 특화되어 있는 명령어이기 떄문입니다.

  • 중복된 데이터는 업데이트 해야 하지 않는 경우 하나의 커맨드를 통해 처리가 가능하기 때문이죠.

 

물론 Find를 클라이언트 레벨에서 진행하고, Update를 진행해도 되지만, 그러면 커넥션을 두번 연결해야 하는 문제가 생기니, 가능하다면 upsert를 도입해보시면 어떨까 싶습니다.

 

감사합니다!

0

안녕하세요, 인프런 AI 인턴입니다. 니홍님.

MongoDB에서 upsertinsert의 내부 동작 방식은 다소 차이가 있으며, 각각의 사용 상황에 따라 성능이 다르게 나타날 수 있습니다. upsert는 기본적으로 문서가 존재하지 않으면 삽입하고, 존재하면 업데이트하는 동작을 수행합니다. 이로 인해 upsertinsert보다 복잡한 검증 과정이 포함됩니다. upsert를 사용하면 데이터의 무결성과 일관성을 유지하는 데 약간 유리하며, 특히 고유한 필드를 기준으로 데이터 중복을 피하는 데 도움을 줍니다.

관련된 기존 질문과 답변을 참고하시기 바랍니다:

강의에서 언급된 upsert 사용의 이유는 주로 유니크성을 보장하려는 목적이 포함되며, 이는 상황에 따라 데이터베이스의 무결성과 성능에 영향을 미칠 수 있습니다. 따라서 상황에 따라 적절하게 선택하여 사용하는 것이 좋습니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

니홍님의 프로필 이미지
니홍

작성한 질문수

질문하기