Q. MongoDB 와 MySQL 을 병행해서 사용하면 효율이 어떨까요?

바이칸 2019. 02. 21. 조회수 137


안녕하세요 조현영님,

Node.js 교과서 책 너무 잘 봤습니다^^

정말 쓰시기 힘들었을텐데 너무 고생하셨어요.

저는 아하와 비슷한 Q&A 서비스를 운영하고 있는데요 현재 모든 서비스의 DB 는 MySQL 베이스로 구현되어있습니다.

그런데 이 데이터들을 사용자 정보, 좋아요 등의 관계가 꼭 필요한 부분을 남기고 질문과 답변 등, 쌓아놓아도 될만한 데이터들을

NoSQL 계열인 몽고로 이전하면 어떨까 싶은데...

서비스에서 MySQL 에서 인덱싱 되어있는 Key 값을 가지고 와서 MongoDB 에 저장되어있는 Record 를 불러오면 효율성이 많이 떨어지는지?

아니면 실제로 현장에서는 그렇게 사용하고 있는지 정말 궁금합니다.

조현영 님이 답변을 등록했습니다.

조현영
Node.js 교과서 저자 3/3/2019

안녕하세요. 책을 읽어주셔서 감사합니다.

실제 서비스에서 MySQL과 같은 SQL류와 몽고디비와 같은 NoSQL류를 동시에 사용하는 경우가 많습니다. NoSQL인 Redis같은 디비랑도 많이 사용하니까요.

하지만 보통은 용도를 분리해서 사용합니다. 관계가 필요한 부분(JOIN 등의 기능 때문에)은 SQL로 하고, 로그같은 것을 남길 때는 몽고를 쓰고 그런 식이죠. 캐싱은 Redis로 하고요.

그런데 MySQL에서 키를 찾은 후 다시 몽고에 쿼리를 날리는 경우는 이야기가 좀 달라집니다. 일단 디비 두 개에 동시에 부하가 가는 것도 있지만, 네트워크 요청을 한 번 더(웹->MySQL->웹->MongoDB->웹, 대부분은 웹서버랑 디비 서버랑 다 분리되어 있으니까요) 하기 때문에 상당히 느려질 것으로 보입니다. 네트워크 요청이 웹 서버가 처리하는 과정에서 제일 속도가 느립니다. 네트워크 요청이 늘어나면 서비스 속도에 지장이 갈 수 있으니 적용 전에 한 번 테스트를 해보시는 것이 좋습니다.