RDBMS
- user 테이블, board테이블이 있을 때
- board테이블은 user테이블의 내용을 중복으로 가지지 않고 id값만 가져옴
- 중복 X
- user테이블이 변경되어도 board 테이블을 변경할 필요가 없음
MongoDB
- 중복 O
- 데이터 일관성을 유지하기 어려움 (수정이 어려움)
- 데이터를 insert 할 때는 성능이 떨어짐
- 데이터를 찾을 때 한 번에 select가 가능하므로 성능이 좋음
→ 한 번 insert 하면 여러 명이 조회하기에 좋음
MongoDB를 사용하는 이유
- 채팅은 매우 빈번하게 발생하는 작은 데이터이므로, 성능과 확장성이 뛰어난 NoSQL을 선택하는 것이 좋다
- 그 중에서 MongoDB는 문서 지향적인 데이터 모델을 제공하여 채팅 내용을 JSON 형태로 저장할 수 있다.
- 물론 채팅 내역이 많아짐에 따라 collection의 크기가 커져서 일고 쓰기에 많은 시간이 소요될 수 있다.
- MongoDB에서 제공하는 sharding 기능을 사용하여 대용량 데이터를 분산하여 저장한다.
웹소켓을 사용하는 이유
HTTP 폴링