9_11. 세션 마무리
mongoDB
2023.04.03.
9_11. 세션 마무리
- 인덱스
- 자식문서 내장(Nesting)
- populate
이 모든걸 처음부터 완벽하게 하려고할 필요 없다.
특히 인덱스는.
인덱스 없어도 모든 API들 동일하게 작동한다.
다만, 데이터가 많이 쌓였을 때, 탐색 속도를 개선해줄 뿐이다.
데이터가 별로 없는 초반엔 인덱스가 있으나 없으나 큰 차이없다.
노하우가 쌓이면 스키마 설계할 때, 이건 index 걸어야겠다가 보일 것이다.
그런건 처음부터 걸면되고, 확실하지않으면 일단 빨리 개발한 다음에 서비스 운영하고 compass의 Explain Plan을 보면서 느린 쿼리들을 잡아주면된다.
그렇게할 때, 고려해야될 사항들이 위 4가지인 것이다.
9_11_1. index 걸때 고려사항들
- CUD vs. R
- index를 걸면걸수록 CUD가 느려진다. CUD할 때 index 추가, 수정이 들어가니깐.
- 따라서 해당 콜렉션이 CUD 비중이 압도적으로 높다면, (로그같은거.. 쌓아뒀다가 나중에 벌크하게 읽어들여서 대시보드에 가공해서 보여준다던지..)
그런 경우엔 굳이 index를 걸 필요가 없다. (이런 경우 Nesting도 마찬가지임, 굳이 Nesting해줄 필요 없음)
- memory
- Query
- Selectivity
- 인덱싱된 걸로 결과물을 뽑아냈는데 별로 안줄어들었으면, Selectivity가 낮은거.
그런 경우엔 인덱싱을 건 효과가 별로 없다. - 총 데이터 300개 -> 인덱스건걸로 검색하니 8개나옴 // 이런거가 Selectivity가 좋다할 수 있음 (상대적인거지만)
- 총 데이터 300개인데 인덱스건걸로 검색하니 200개나왔다면, 인덱스 건 효과도 별로없고.. 이런게 Selectivity가 낮은거.
- 인덱싱된 걸로 결과물을 뽑아냈는데 별로 안줄어들었으면, Selectivity가 낮은거.
여튼 처음부터 이런거에 너무 집착하지말자.