MongoDB — 문서 데이터베이스의 판단 · 문서 모델과 실행 계획 · 퀴즈
퀴즈: 문서 데이터베이스의 판단
문항 8개. 정답과 해설은 풀어 본 뒤에 보여 드립니다.
'문서 DB 는 스키마가 없다' 는 말의 가장 정확한 해석은?
- 정말로 어떤 제약도 걸 수 없다
- 성능을 위해 검증을 포기한 설계다
- 컬렉션마다 문서 모양이 반드시 달라야 한다
- 스키마가 사라진 것이 아니라 애플리케이션 쪽으로 자리를 옮긴 것이다
품목을 주문 문서 안에 끼워 넣을(embed) 것인지 참조로 둘 것인지, 판단 기준은?
- 함께 읽히는가, 그리고 밖에서 따로 바뀌는가
- 문서 크기가 16MB 를 넘는지만 보면 된다
- 항목 개수가 열 개를 넘는지 본다
- 정규화 이론을 따라 항상 참조로 나눈다
끼워 넣기(embed)를 골랐을 때 치르는 대가는?
- 그 값을 고칠 때 그것을 품은 문서를 전부 찾아 고쳐야 한다
- 조인이 없어졌는데도 조회가 느려진다
- 배열 안 필드에는 인덱스를 걸 수 없다
- 그 컬렉션에는 트랜잭션을 쓸 수 없게 된다
실행 계획에 COLLSCAN 이 보인다. 뜻은?
- 컬렉션이 손상됐다
- 조회 결과가 비어 있다
- 인덱스를 타지 않고 문서를 전부 훑었다
- 쓰기 잠금이 걸려 있다
인덱스가 잘 걸렸는지 판단하는 가장 직접적인 값은?
- 인덱스가 차지하는 디스크 크기
- 컬렉션에 들어 있는 전체 문서 수와 평균 크기
- 그 조회에 실제로 걸린 밀리초
- nReturned 와 totalDocsExamined 의 비율
'혹시 몰라서' 인덱스를 여러 개 만들어 두는 것의 대가는?
- 질의 계획 후보가 늘어 계획을 고르는 시간이 길어진다
- 문서를 넣을 때마다 모든 인덱스를 갱신해야 해서 쓰기가 느려지고 공간을 먹는다
- 메모리 사용량만 조금 늘 뿐 다른 영향은 없다
- 복제본으로 전달할 양이 늘어 복제가 지연된다
$set 대신 문서를 통째로 대입(replaceOne)했을 때 흔히 벌어지는 일은?
- 더 빠르게 갱신된다
- 인덱스가 무효화된다
- 적지 않은 필드가 사라진다
- _id 가 새로 생성된다
tags 가 배열일 때 태그별 합계를 구하려면 파이프라인에 무엇이 필요한가?
- $group 만으로 충분하다
- $unwind 로 배열을 펼친 뒤 $group
- $lookup 으로 조인한 뒤 $group
- $project 로 배열을 문자열로 바꾼 뒤 $group