왜 node.js 에는 mongoDB 인가?

·2021년 9월 27일
2
post-thumbnail

왜 대부분 node.js 강의들은 mongoDB를 같이 쓰는가? mySql은 안되나?

👋 머릿말

node.js 강의를 찾다 보면 대부분이 데이터 베이스 챕터로 mongoDB를 사용하고 있습니다. 이미 이전 수업을 통해 mongoDB를 입문해 보았기 때문에 견문을 좀 더 넓힐 겸sql 수업을 찾고 있었는데요, 이게 찾는 게 쉽지 않더라고요.

왜 많은 node.js 수업들이 mongoDB를 선택해 쓰고 있을까요? 알게 모르게 들었던 현장 이야기로는 mongoDB 보다 mySql이나 postgreSql을 사용하는 곳이 더 많았는데 말이죠. 왜 그럴까요?




🤔 sql은 node.js 에서 쓸 수 없나요?

그건 아닙니다. node.js 와 함께 sql 을 사용하는 수업이 없는 건 아니었거든요. 그리고 그 수업을 들은 결과, 궁금했던 점이 단숨에 해소 되었습니다. 정말 단순한 이유였습니다. 진입하기가 너무 어려웠거든요. 객체 지향에 익숙한 프런트 코린 이에겐 sql의 스키마 형식이 낯설기도 하고, 쿼리문 사용 방법에 대해서 공부도 필요하고요. 거기에 join 문까지 살짝 곁들이기 시작하면... 어휴 생각만 해도 눈앞이 캄캄합니다.




🤔 그럼 mongoDB는 왜 많이 쓰는 거죠?

그건 mongoDB 가 문서 지향 데이터 베이스 시스템을 지향하기 때문일 겁니다. mongoDB는 모든 쿼리문에 대해 BSON 형태를 반환합니다. BSONBinary-json으로 JSON 을 바이너리 형태로 인코딩 하는 것을 말합니다. 일반 JSON에 비해 BSON 은 문서 자체의 여백을 줄여 데이터 용량을 절약하고 로우 레벨(c언어)의 데이터 형태이기 때문에 인코딩 디코딩도 무척 빨라 성능에 큰 지장을 주지 않죠.

mongoDB는 이러한 BSON 데이터를 필요하다면 언제든지 JSON 형식으로 보여주기 때문에 database에 익숙하지 않은 저에겐 mongoDB 가 더 쉽게 느껴졌던 거 같습니다.

강의를 제작하시는 분 역시 초심자를 기준에 두고 강의를 만드셨을테니 데이터 베이스 챕터로 node.js에 함께 mongoDB 가 많이 채택되어 쓰인 것이겠죠. 이외에도 schemajoin 을 사용하지 않는 것 역시 sql을 제치고 선택 된 이유라 볼 수 있겠네요.




✏️ 결과적으로

물론 실제 앱을 만드는 데 있어서는 위의 이유가 sqlnosql 을 가르는 기준이 되는 건 절대 아닙니다. 단순히 데이터베이스를 처음 배우는 것이고 이를 node.js 와 함께 배운다는 전제 하에선 mySql 보다는 mongoDB 가 입문하기에 더 편하게 느껴졌다 라는 것뿐입니다.

현장에서는 각 데이터베이스 환경의 장단점을 보고 앱에 더 적합한 것을 적용시키는 것이 옳은 판단 기준이 되겠죠. 요즘엔 ORM 이나 ODM 도 있으니 쿼리문을 공부해야하는 입장에선 그 수고를 조금 덜 수 있겠네요. (물론 날 것으로 쿼리문을 쓰는 게 맵핑 보다 처리속도가 훨씬 더 빠르긴 합니다.)

어찌 되었든 익숙하지 않더라도 sql 은 결국 공부해야 하는 겁니다. 이미 많은 회사에서 sql 이 쓰이고 있으니까요. 앱은 만들어야 하는데 데이터베이스를 하나도 모른 체 작업할 수는 없는 거니까요. 인프런에서 얄코님의 mySql 입문 강의가 싸고 괜찮아 보이던데, 지금 듣고 있는 강의 챕터가 완료되면 저는 이걸로 좀 더 지식을 보완해보려구요.

그럼 이만.

참고자료
프론트엔드 개발자를 위한 데이터베이스
https://velog.io/@ryuwisdom0_o/%ED%94%84%EB%A1%A0%ED%8A%B8%EC%95%A4%EB%93%9C-%EA%B0%9C%EB%B0%9C%EC%9E%90%EB%A5%BC-%EC%9C%84%ED%95%9C-database
JSON vs BSON
https://www.mongodb.com/json-and-bson
https://m.blog.naver.com/sehyunfa/221654102140
mongoDB 연결하기
https://m.blog.naver.com/scw0531/220933688166
한 눈에 끝내는 node.js
https://edu.goorm.io/learn/lecture/557/%ED%95%9C-%EB%88%88%EC%97%90-%EB%81%9D%EB%82%B4%EB%8A%94-node-js/lesson/174384/mongodb%EB%9E%80

profile
새로운 것에 관심이 많고, 프로젝트 설계 및 최적화를 좋아합니다.

0개의 댓글