💡 MongoDB가 무엇인지는 MonogoDB 정리글 참고
RDB vs MongoDB(NoSQL)
DB 아키텍처를 보면 1:N 관계가 많다
예를들어 MeetUP과 memeber_id관계를 보면, 한 밋업(모임)에 여러명의 참가자(MemberId)가 있을 수 있기 때문에 1: N의 관계이다
RDB로 구현할 경우
MongoDB같은 NoSQL을 사용할 경우
List<String>
으로 정의하여 Depth 있게(계층적으로) Document를 구현했다.public class MeetUp {
@Id
@Field("_id")
private ObjectId id;
@Field("category")
private String category;
(... 일부 생략)
@Field("member_id")
private List<String> memberId;
@Field("pending_id")
private List<String> pendingId;
@Field("is_open_yn")
private Boolean isOpenYn;
@Field("is_recruiting")
private Boolean isRecruiting;
@Field("leader_id")
private String leaderId;
}
Elastic Search vs MongoDB
구분 | MongoDB | Elastic Search |
---|---|---|
검색 | Field기준으로 Find 해야함 | 역색인 구조로 검색이 빠름 (특히 Full-Text Scan) |
저장 | MongoDB는 범용 데이터베이스 용도로 개발되었기 때문에 Document 형식으로 Schema-less 하게 저장 가능 | ES에서 segment는 불변이기 때문에, 문서가 업데이트 될 때 마치 새 문서가 인덱싱되듯 새 segment에 쓰이게 되기 때문에 Write가 느림 |
장점 | 상대적으로 Write가 빠르다 | 상대적으로 Read가 빠르다, 검색기능이 다양하다 |
RDB vs MongoDB