codememo

MongoDB 성능 - 여러 데이터베이스 보유

tipmemo 2023. 5. 8. 22:15
반응형

MongoDB 성능 - 여러 데이터베이스 보유

우리의 애플리케이션은 db에 5개의 컬렉션이 필요합니다.애플리케이션에 클라이언트를 추가할 때 고객별로 별도의 db를 유지하고 싶습니다.예를 들어, 고객이 500명인 경우 500dbs와 2500개의 컬렉션(각 db에는 5개의 컬렉션이 있음)이 있습니다.이렇게 하면 각 고객 데이터를 분리할 수 있습니다.제가 걱정하는 것은 성능 문제로 이어질까 하는 것입니다.

업데이트: 또한 이 Google 그룹 토론을 따르십시오.

우리의 애플리케이션은 db에 5개의 컬렉션이 필요합니다.애플리케이션에 클라이언트를 추가할 때 고객별로 별도의 db를 유지하고 싶습니다.예를 들어, 고객이 500명인 경우 500dbs와 2500개의 컬렉션(각 db에는 5개의 컬렉션이 있음)이 있습니다.이렇게 하면 각 고객 데이터를 분리할 수 있습니다.

좋은 생각입니다.이를 통해 논리적으로 분리할 수 있을 뿐만 아니라 MongoDB의 데이터베이스 수준 보안을 사용하여 다른 고객의 데이터에 실수로 액세스하는 것을 방지할 수도 있습니다.

제가 걱정하는 것은 성능 문제로 이어질까 하는 것입니다.

아니요. 실제로 한 고객의 데이터베이스 수준 잠금 경합이 매우 심한 경우(시나리오에서 가능한 경우) 다른 고객의 성능에 영향을 미치지 않는 것처럼 도움이 될 것입니다(같은 I/O 대역폭에 대해 경쟁하고 있는 경우에도 여전히 영향을 줄 수 있지만 --directoryperdb 옵션을 사용하는 경우). 이러한 DB를 별도로 배치할 수 있습니다.물리적 장치의 등급을 지정합니다.

또한 샤딩을 사용하면 컬렉션을 분할할 필요가 없으므로 쉽게 확장할 수 있습니다. 데이터베이스를 여러 샤드에 걸쳐 라운드 로빈하여 로드를 별도의 클러스터(해당 레벨에 도달한 경우 및 그 시점)로 분산할 수 있습니다.

다른 답변의 주장과 달리, TTL 모니터 스레드는 문서를 삭제(및 무료 목록에 추가)하지 않는 한 문서를 RAM으로 가져오지 않습니다.이들은 문서를 직접 찾을 뿐만 아니라 문서가 만료되는지 여부를 알려주는 TTL 인덱스에서 작동합니다.

단일 데이터베이스에 대해 많은 컬렉션 솔루션을 사용하는 것이 좋습니다. 이 솔루션을 사용하면 로드를 분할하거나 보안을 제공할 수 없으며 애플리케이션 측에서 처리하기가 더 쉬워집니다.

언급URL : https://stackoverflow.com/questions/16916903/mongodb-performance-having-multiple-databases

반응형