MongoDB 성능 - 여러 데이터베이스 보유
우리의 애플리케이션은 db에 5개의 컬렉션이 필요합니다.애플리케이션에 클라이언트를 추가할 때 고객별로 별도의 db를 유지하고 싶습니다.예를 들어, 고객이 500명인 경우 500dbs와 2500개의 컬렉션(각 db에는 5개의 컬렉션이 있음)이 있습니다.이렇게 하면 각 고객 데이터를 분리할 수 있습니다.제가 걱정하는 것은 성능 문제로 이어질까 하는 것입니다.
우리의 애플리케이션은 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
'codememo' 카테고리의 다른 글
| 유효성 검사 오류:잘못된 번들입니다....의 번들에 허용되지 않는 파일 'Frameworks'가 포함되어 있습니다. (0) | 2023.05.08 |
|---|---|
| Express 4.0: req.files를 사용하여 파일 업로드가 정의되지 않았습니다. (0) | 2023.05.08 |
| Eclipse에서 UTF-8 인코딩을 지원하는 방법 (0) | 2023.05.08 |
| Postgre의 "database_name 사용" 명령SQL (0) | 2023.05.08 |
| Azure 테이블 대 Azure의 MongoDB (0) | 2023.05.08 |