작성
·
449
0
안녕하세요 제로초님!
같이 프로젝트를 진행한 동기가 말하기를
"서비스에 join 작업이 많은 데이터의 반복적인 요청이 많을때에는 lazy loading 이슈가 있을 수 있기 때문에 mongoDB를 사용하는게 좋다" 고 하는데... 이게 무슨 말인지 잘 모르겠습니다.
mysql에서 join한 데이터를 반복적으로 조회하는게 lazy loading 이슈가 있을 수 있다는 건 이해가 되지만, mogoDB도 mongoose의 populate를 사용하기 때문에 똑같이 lazy loading 이슈가 있을 수 있는거 아닌가요?
답변 1
0
lazy loading 이슈라는게 무슨 이슈를 말씀하시는건가요? lazy loading은 기법이지 그 자체로 이슈는 아닙니다. lazy loading 기법 시 데이터의 중복 이슈가 많다는 것을 말씀하신 건가요?
몽구스 파퓰레이트도 orm 레이지로딩이랑 비슷한 것이라 똑같다고 생각됩니다. 데이터 중복도 잘만 하면 피할 수 있습니다. graphql의 data-loader같은 라이브러리가 그런 역할을 합니다.
그 말이 맞으려면 몽고디비 하나의 다큐먼트 안에 관련 데이터를 모두 갖고 있어야 합니다. 이런 경우 몽고디비가 더 빠를 수는 있겠으나, 데이터 수정, 삭제가 어려워서 상황에 따라서는 더 불리할 수 있습니다. 하나의 다큐먼트 안에 관련 데이터를 모두 갖고 있지 않다면 sql과 똑같은 join 작업을 거쳐야 해서 몽고디비가 이점이 없습니다.
mongoose를 사용하면서 데이터 타입을 정형화 할 수 있고, join도 할 수 있다면 제로초님 말씀대로 이점이 없어 보이는데 기업에서 mongoDB를 사용하려는 이유는 확장성에서의 장점이 크게 작용하기 때문에 사용하는걸까요?
mongoDB가 방대한 데이터에 유리하다는 것 외에는 사용하는 이유를 잘 모르겠습니다 ㅠㅠ
대부분의 서비스는 sql이 정답입니다. 대부분은 데이터가 관계를 형성하고 있어서 그렇습니다. 저도 공부는 했지만 실무에서 몽고디비를 그렇게 활용해본 적은 없습니다.
제가 설명이 부족했습니다. lazy loading이라고 표현한 것은 단순히 데이터를 받아오는데 오래걸린다는 뜻이었습니다. 이렇게 사용하는 단어가 아니었다니 죄송합니다.
그리고 데이터 중복 문제보다는
'join 작업이 많이 필요한 데이터 요청일 경우에 join하는 과정에서 오래걸릴 수 있기 때문에 join을 사용하지 않는 mongoDB를 사용하는게 좋다'
라는 말이 맞는 말인지 다시 한번 질문드립니다!