mongoDB를 사용할 때 왜 populate를 사용하는걸까

치즈말랑이·2022년 7월 22일
1

이번 2차 프로젝트를 하면서 내가 속한 팀에서는 mongoose의 기능인 populate를 사용하지 않았다.
1차 프로젝트때 백엔드 코치님께 다음과 같은 얘기를 들었기 때문이다.

  • populate는 서버상에서 데이터를 join하는것이기때문에 느리다. (시간복잡도 n^2, 따로 작성하면 n)
  • mongoDB가 제공하는것이 아니라 mongoose가 제공하는 기능이다.

각 팀별로 배정된 코치님이 다르기때문에 다른 팀들은 전부 populate를 사용했고,
나는 내가 populate를 사용하지 않고 mongoose 코드를 두번 작성한것에 대한 정당성을 스스로 인정받기 위해 mongoDB를 찾아봤다.
그 결과, mongoDB의 공식문서를 보면 join과 같은 기능을 피하라고 되어 있는 것을 확인했다.
애초에 mongoDB가 나오게 된 배경이 관계를 없애려고 나온것이기 때문이다.

그래서 2차 프로젝트때도 populate, lookup등의 기능을 사용하지 않으려고 이런 증거자료들을 보여주며 같은 팀의 백엔드 팀원분을 설득했고,
populate를 사용하지 않았다. 코드도 훨씬 직관적이다.

그런데 다른 팀들을 보니 populate를 안쓴 팀이 없다.
왜 그런걸까?

mongoDB가 NoSql 이라는것은 누구나 다 아는것이고, 엘리스 백엔드 강의기간때도 코치님이 현업에서는 populate를 잘 사용하지 않는다고 말씀해주셨다. 흘러가는 말투로 말씀하셔서 귀기울이지 않으면 잊혀질만했지만.

난 수업때 그렇게 말씀하신것을 듣고 프로젝트때 프로젝트 백엔드 코치님께 여쭤보아 답을 얻은것이였다.

다른 사람들이 몰라서 populate를 사용하는건지, 어떤 의도를 가지고 사용하는건지는 모르겠다.
하지만 어떤 기능을 사용할 때, 내가 왜 이 기능을 사용해야 하고 이것을 선택했는지 생각해봐야 할 필요성을 더 강하게 느낀다.

ps. 마지막 참고자료에서는 아예 join기능을 사용하는것을 mistake라고 표현했다.

참고자료:

profile
공부일기

0개의 댓글