용어 정리

RDB MongoDB
Database Database
Table Collection
Row Document
Column Field
Index Index
JOIN $lookup (제한적)

mongo DB 스키마

MongoDB는 컬럼 정의 없이 아무 문서나 넣을 수 있음. 스키마는 DB가 강제하지 않을 뿐, 어플리케이션 코드에 존재함.

Spring Data MongoDB를 쓰면 @Document 클래스가 사실상 스키마 역할을 하니까 이걸 기준으로 스키마를 생각하면 됨.

조인

mongoDB에서는 조인을 되도록이면 하지 않는다. 따라서 애초에 데이터를 저장할 때는 중복 저장을 감수하고 같이 조회되는 데이터는 합쳐진 상태로 같이 저장해서 읽기 성능을 얻는 구조이다.

문서 크기 제한

문서 하나가 16MB를 넘을 수 없음. 따라서 데이터 수가 늘어나는 배열같은 경우는 하나의 문서로 처리하지 말고, 별도 컬렉션으로 빼는 것이 현명함.

인덱스

RDB와 마찬가지로 풀스캔 시 느린건 똑같음.