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

이룸님의 프로필 이미지

작성한 질문수

[리뉴얼] Node.js 교과서 - 기본부터 프로젝트 실습까지

몽고디비 설치하기

프로젝트 때 이런 이유로 mongoDB를 사용하였는데 알맞게 사용한게 맞을까요?

21.07.03 23:58 작성

·

433

0

안녕하세요 제로초님! 

같이 프로젝트를 진행한 동기가 말하기를

"서비스에 join 작업이 많은 데이터의 반복적인 요청이 많을때에는 lazy loading 이슈가 있을 수 있기 때문에 mongoDB를 사용하는게 좋다" 고 하는데... 이게 무슨 말인지 잘 모르겠습니다.

mysql에서 join한 데이터를 반복적으로 조회하는게 lazy loading 이슈가 있을 수 있다는 건 이해가 되지만, mogoDB도 mongoose의 populate를 사용하기 때문에 똑같이 lazy loading 이슈가 있을 수 있는거 아닌가요? 

답변 1

0

제로초(조현영)님의 프로필 이미지
제로초(조현영)
지식공유자

2021. 07. 04. 09:48

lazy loading 이슈라는게 무슨 이슈를 말씀하시는건가요? lazy loading은 기법이지 그 자체로 이슈는 아닙니다. lazy loading 기법 시 데이터의 중복 이슈가 많다는 것을 말씀하신 건가요?

몽구스 파퓰레이트도 orm 레이지로딩이랑 비슷한 것이라 똑같다고 생각됩니다. 데이터 중복도 잘만 하면 피할 수 있습니다. graphql의 data-loader같은 라이브러리가 그런 역할을 합니다.

이룸님의 프로필 이미지
이룸
질문자

2021. 07. 04. 14:00

제가 설명이 부족했습니다. lazy loading이라고 표현한 것은 단순히 데이터를 받아오는데 오래걸린다는 뜻이었습니다. 이렇게 사용하는 단어가 아니었다니 죄송합니다.

그리고 데이터 중복 문제보다는

'join 작업이 많이 필요한 데이터 요청일 경우에 join하는 과정에서 오래걸릴 수 있기 때문에 join을 사용하지 않는 mongoDB를 사용하는게 좋다'

라는 말이 맞는 말인지 다시 한번 질문드립니다!

제로초(조현영)님의 프로필 이미지
제로초(조현영)
지식공유자

2021. 07. 04. 14:15

그 말이 맞으려면 몽고디비 하나의 다큐먼트 안에 관련 데이터를 모두 갖고 있어야 합니다. 이런 경우 몽고디비가 더 빠를 수는 있겠으나, 데이터 수정, 삭제가 어려워서 상황에 따라서는 더 불리할 수 있습니다. 하나의 다큐먼트 안에 관련 데이터를 모두 갖고 있지 않다면 sql과 똑같은 join 작업을 거쳐야 해서 몽고디비가 이점이 없습니다.

이룸님의 프로필 이미지
이룸
질문자

2021. 07. 04. 17:10

mongoose를 사용하면서 데이터 타입을 정형화 할 수 있고, join도 할 수 있다면 제로초님 말씀대로 이점이 없어 보이는데 기업에서 mongoDB를 사용하려는 이유는 확장성에서의 장점이 크게 작용하기 때문에 사용하는걸까요? 

mongoDB가 방대한 데이터에 유리하다는 것 외에는 사용하는 이유를 잘 모르겠습니다 ㅠㅠ

제로초(조현영)님의 프로필 이미지
제로초(조현영)
지식공유자

2021. 07. 05. 11:28

대부분의 서비스는 sql이 정답입니다. 대부분은 데이터가 관계를 형성하고 있어서 그렇습니다. 저도 공부는 했지만 실무에서 몽고디비를 그렇게 활용해본 적은 없습니다.

이룸님의 프로필 이미지
이룸
질문자

2021. 07. 05. 11:44

현업에서는 sql 비중이 많이 높은가보네요 ㅎㅎ 더 공부해보면서 몽고디비가 꼭 필요한 순간이 느껴지길 기다려봐야겠습니다! 

제로초님 친절하게 답변 주셔서 감사합니다!!

이룸님의 프로필 이미지

작성한 질문수

질문하기