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

신영민님의 프로필 이미지
신영민

작성한 질문수

대용량 채팅 TPS 처리를 위한 웹소켓 통신 만들며 학습하기

들어주셔서 감사합니다. 편하게 질문주세요.

채팅 메시지 DB로 저장 하기.

해결된 질문

작성

·

329

1

안녕하세요.

강의 잘 들었습니다.

마지막에 메시지를 저장 하는 얘기를 하셨는데..

보통 메신저 서비스에서는 어떤 방식의 DB를 사용하는지

궁금합니다.

 

흔히 Oracle이나 MariaDB 같은 방식의 관계형 DB를 사용하는게 흔한지 아니면 Mongo같은 비관계형 방식의 DB를 많이 사용하는지 혹시 답변이 가능하시다면 답변 부탁 드립니다.

 

그리고 그걸 선택한 이유가 무엇인지.

 

감사합니다.

답변 1

1

July님의 프로필 이미지
July
지식공유자

사실 DB를 선택하는 부분에 대해서는 큰 정답은 없습니다.

일반적으로 유저들이 직접적으로 전송을 하여 데이터를 생성하는 경우와 같이 이런 서비스 측면에서는 보통 RDB를 사용합니다.

대표적으로 MySQL이 있죠

 

이러한 이유는 굳이 관계를 설정하지 않는다고 해도, 데이터 관리나 서비스 내에서 추가적인 기능에 대해서 데이터를 불러오는 것이 더 쉽기 때문입니다.

 

MongoDB같은 NoSQL같은 경우에는 쿼리상에서 사용해야 하는 부분이나, 이렇게 지속적으로 무한히 증가하는 데이터에 대해서 관리를 하기가 어려워요

- 관리를 하기가 어렵다는 부분이 다른 컬렉션에서 이런 채팅 데이터를 참조하는 경우를 말을 합니다.

- 일반적으로 MongoDB에서는 Lookup, MySQL에서는 Join을 의미합니다.

 

MongoDB측에서는 다른 컬렉션에 대해서 참조를 하는 쿼리가 굉장히 리소스를 많이 잡아먹고 느린 쿼리로써 동작이 됩니다.

 

그래서 만약 제가 구현을 한다면 RDB를 사용 할 꺼 같습니다.

하지만 이는 개발자마다 생각이 다른 부분이라서 정답은 없을 꺼 같아요.

- PostgreSQL 같은 DB도 있으니 알아보시면 좋을꺼 같습니다.

추가로 비용적인 측면도 고려를 해야 하는 부분도 있겠죠,
PostgreSQL > mongoDB > mysql

순서로 비용이 비싸며, 이는 메모리로 동작을 하냐, 추가적으로 고가용성을 보장하냐 등으로 차이가 나게 됩니다.

신영민님의 프로필 이미지
신영민
질문자

답변 감사합니다...

 

 

 

 

신영민님의 프로필 이미지
신영민

작성한 질문수

질문하기