문서 메뉴
문서 홈
/
MongoDB 매뉴얼
/

개발 체크리스트

이 페이지의 내용

  • 데이터 내구성
  • 스키마 설계
  • 복제
  • 샤딩
  • 드라이버

다음 체크리스트는 자체 관리 배포서버를 위한 작업 체크리스트 와 함께 프로덕션 MongoDB 배포에서 문제를 방지하는 데 도움이 되는 권장 사항을 제공합니다.

  • 당신의 복제본 세트가 최소한 세 개의 데이터를 보유한 투표 멤버를 포함하고 있고, 쓰기 작업에서 w: majority 쓰기 고려 (write concern)를 사용해야 합니다. 복제본 세트 전체의 데이터 내구성을 위해서는 3개의 데이터 보유 투표 멤버가 필요합니다.

  • 모든 인스턴스가 저널링을사용하도록 합니다.

MongoDB의 데이터에는 동적 스키마 가 있습니다. 컬렉션문서 구조를 강제하지 않습니다. 이는 반복적인 개발과 다형성을 용이하게 합니다. 그럼에도 불구하고 컬렉션에는 매우 동질적인 구조의 문서가 보관되는 경우가 많습니다. 자세한 내용은 데이터 모델링 개념 을 참조하세요.

  • 필요한 컬렉션 집합과 쿼리를 지원하는 데 필요한 인덱스를 결정합니다. _id 인덱스를 제외한 모든 인덱스는 명시적으로 생성해야 합니다. MongoDB는 _id 이외의 인덱스를 자동으로 생성하지 않습니다.

  • 스키마 디자인이 배포 유형을 지원하는지 확인: 수평적 확장을 위해 샤딩된 클러스터를 사용하려는 경우 강력한 샤드 키를 포함하도록 스키마를 설계합니다. 나중에 샤드 키를 변경할 수 있지만 확장성 및 성능 문제를 방지하기 위해 샤드 키 선택을 신중하게 고려하는 것이 중요합니다.

  • 스키마 설계가 제한 없이 길이가 증가하는 인덱스 배열에 의존하지 않도록 합니다. 일반적으로 이러한 인덱싱된 배열의 요소가 1000개 미만일 때 최상의 성능을 얻을 수 있습니다.

  • 스키마를 설계할 때 문서 크기 제한을 고려합니다. BSON 문서 크기 제한은 문서당 16 MB입니다. 더 큰 문서가 필요한 경우 GridFS를 사용합니다.

  • 투표가 성공적으로 진행될 수 있도록 투표 멤버 수를 홀수로 설정합니다. 투표 멤버는 최대 7개를 보유할 수 있습니다. 투표 멤버의 수가 짝수이고 비용과 같은 제약 조건으로 인해 다른 세컨더리를 투표 멤버로 추가하는 것이 금지된 경우 중재자를 추가하여 홀수 투표 수를 보장할 수 있습니다. 멤버가 3개인 복제본 세트(P-S-A)에 중재자를 사용할 때 고려해야 할 추가 사항은 복제본 세트 중재자를 참조하십시오.

  • 모니터링 도구를 사용하고 적절한 쓰기 고려 (write concern)를 지정하여 세컨더리를 최신 상태로 유지하세요.

  • 전체 읽기 처리량을 확장하기 위해 세컨더리 읽기를 사용하지 마세요. 참조: 더 많은 복제본 노드를 사용하여 를 확장할 수 있나요? 읽기 스케일링에 대한 개요를 참조하세요. 세컨더리 읽기에 대한 자세한 내용은 읽기 설정을 참조하세요.

  • 샤드 키가 샤드에 부하를 고르게 분산시키는지 확인하세요. 자세한 내용은 샤드 키를 참조하세요.

  • 샤드 수에 따라 크기를 조정해야 하는 워크로드에 대상 지정 작업을 사용합니다.

  • Secondaries no longer return orphaned data unless using read concern "available" (which is the default read concern for reads against secondaries when not associated with causally consistent sessions).
    All members of the shard replica set maintain chunk metadata, allowing them to filter out orphans when not using "available". As such, non-targeted or broadcast queries that are not using "available" can be safely run on any member and will not return orphaned data.
    The "available" read concern can return orphaned documents from secondary members since it does not check for updated chunk metadata. However, if the return of orphaned documents is immaterial to an application, the "available" read concern provides the lowest latency reads possible among the various read concerns.
  • 해시되지 않은 새로운 샤딩된 컬렉션에 대규모 데이터 세트를 삽입할 때 청크를 사전 분할하고 수동으로 밸런싱합니다. 사전 분할 및 수동 밸런싱을 통해 삽입 부하를 샤드 간에 분산하여 초기 부하의 성능을 향상할 수 있습니다.

  • 연결 풀링을 활용합니다. 대부분의 MongoDB 드라이버는 연결 풀링을 지원합니다. 일반적인 동시 데이터베이스 요청 수의 110-115%부터 시작하여 사용 사례에 맞게 연결 풀 크기를 조정합니다.

  • 애플리케이션이 복제본 세트 투표 중에 일시적인 쓰기 및 읽기 오류를 처리하는지 확인하세요.

  • 애플리케이션이 실패한 요청을 처리하고 해당되는 경우 다시 시도하는지 확인합니다. 드라이버는 실패한 요청을 자동으로 다시 시도하지 않습니다.

  • 데이터베이스 요청 재시도에 지수 백오프 로직을 사용합니다.

  • 데이터베이스 작업의 실행 시간을 제한해야 하는 경우 읽기에는 cursor.maxTimeMS()을 사용하고 쓰기에는 wtimeout을 사용하세요.

돌아가기

운영 체크리스트

다음

성능