programing

MongoDB: 컬렉션에 있는 수십억 개의 문서

bestprogram 2023. 5. 27. 12:02

MongoDB: 컬렉션에 있는 수십억 개의 문서

컬렉션에 66억 개의 빅램을 로드해야 하는데 가장 좋은 방법에 대한 정보를 찾을 수 없습니다.

그렇게 많은 문서를 단일 기본 키 인덱스에 로드하는 것은 시간이 오래 걸리겠지만, 내가 아는 한 mongo는 파티션 분할과 동등한 것을 지원하지 않습니까?

샤딩이 도움이 될까요?여러 컬렉션에 걸쳐 데이터 세트를 분할하여 애플리케이션에 논리를 구축해야 합니까?

최적의 대량 삽입이 무엇인지 말하기는 어렵습니다. 이것은 부분적으로 삽입하는 물체의 크기와 측정할 수 없는 다른 요소에 달려 있습니다.몇 가지 범위를 사용해 보고 최고의 성능을 제공하는 것을 확인할 수 있습니다.일부 사용자는 mongoimport를 사용하는 것을 좋아하는데, 이는 상당히 빠르지만 가져오기 데이터는 json 또는 csv여야 합니다.데이터가 BSON 형식이면 분명히 mongodrestore가 있습니다.

Mongo는 수십억 개의 문서를 쉽게 처리할 수 있으며 한 컬렉션에 수십억 개의 문서를 포함할 수 있지만 최대 문서 크기는 16MB입니다.MongoDB에는 수십억 개의 문서를 가진 많은 사람들이 있으며 MongoDB Google 사용자 그룹에 대한 많은 논의가 있습니다.다음은 마음이 바뀌어서 여러 컬렉션을 원하는 경우 읽고 싶은 많은 컬렉션을 사용하는 방법에 대한 문서입니다.컬렉션이 많을수록 인덱스도 많아지는데, 이는 아마도 원하는 것이 아닐 것입니다.

여기 Craigslist가 MongoDB와 그의 블로그 포스트에 수십억 의 문서를 삽입하는 것에 대한 프레젠테이션이 있습니다.

샤딩이 귀사에 적합한 솔루션인 것처럼 보이지만 일반적으로 여러 서버에 걸쳐 확장하는 데 사용되며, 많은 사람들이 쓰기를 확장하기를 원하거나 작업 세트(데이터 및 인덱스)를 RAM에 보관할 수 없기 때문에 이 작업을 수행합니다.단일 서버에서 시작한 다음 데이터가 증가하거나 추가적인 이중화 및 복원력이 필요할 때 하드 또는 복제본 세트로 이동하는 것이 매우 합리적입니다.

그러나 쓰기가 많은 단일 몽노드의 잠금 한계를 피하기 위해 여러 몽노드를 사용하는 다른 사용자도 있습니다.분명하지만 여전히 말할 가치가 있지만 멀티몽고드 설정은 단일 서버보다 관리가 더 복잡합니다.여기서 IO 또는 CPU가 최대치를 초과하지 않고 작업 세트가 RAM보다 작으며 데이터의 균형을 유지하기 쉬우며(무작위로 분산됨), 단일 서버에서 샤딩을 사용하여) 향상된 성능을 확인할 수 있습니다.참고로 메모리 및 IO 경합 가능성이 있습니다.2.2가 차단 기능과 동시성을 향상시켰기 때문에 이러한 배포에 대한 이유가 훨씬 줄어들 것이라고 생각합니다.

샤딩으로의 이동을 적절하게 계획해야 합니다. 즉, 샤드 키를 선택하는 것에 대해 신중하게 생각해야 합니다.이 길로 가면 미리 쪼개서 밸런서를 끄는 것이 가장 좋습니다.균형을 유지하기 위해 데이터를 이동하는 것은 역효과를 낳습니다. 즉, 데이터를 분할하는 방법을 미리 결정해야 합니다.또한 일부 필드가 샤딩 또는 기본 키로 유용할 것이라는 생각으로 문서를 설계하는 것이 중요할 수 있습니다.

여기 좋은 연결고리가 있습니다.

MongoDB(하드 키에서 N개의 서버 간에 파티션을 분할함)에서 데이터를 완전히 샤드할 수 있습니다.사실, 그것은 그것의 핵심적인 장점 중 하나입니다.당신의 애플리케이션에서는 그렇게 할 필요가 없습니다.

대부분의 사용 사례에서 66억 개의 문서에 대해 이 작업을 수행할 것을 강력히 권장합니다.제 경험에 따르면 MongoDB는 하나의 큰 서버가 아닌 여러 개의 미드레인지 서버에서 더 나은 성능을 발휘합니다.

언급URL : https://stackoverflow.com/questions/11320907/mongodb-billions-of-documents-in-a-collection