mongodb sharding을 하나의 beefier 머신에서 100 개의 샤드로 구현하는 것이 합리적입니다. 데이터베이스에 더 높은 동시 기록을 작성하기 위해서입니다. 각 monogod.exe 프로세스에 글로벌 잠금이 있습니까? 그것이 가능하다면, 그 aproach는 더 높은 쓰기 동시성을 줄 것인가?하나의 머신에서 MongoDB Sharding
답변
컴퓨터에서 여러 mongod를 실행하는 것은 좋지 않습니다. mongod 프로세스 모두는 사용 가능한 모든 메모리를 사용하려고 시도 할 것이고 다른 mongod의 메모리 매핑 된 페이지는 메모리에서 강제로 제거됩니다. 이것은 대부분의 경우에 엄청난 양의 교환을 창출 할 것입니다. 에서 설명 된 바와 같이
는 글로벌 데이터베이스 잠금은 일반적으로 문제가되지 않습니다 : 오직 컴퓨터 당 하나의 mongod를 사용 http://blog.pythonisito.com/2011/12/mongodbs-write-lock.html
(그러나 그것은뿐만 아니라 mongos 또는 설정 서버를 추가 괜찮)은 몇 가지 간단한 테스트를 위해 않는 한, .
환호, Derick
나는 동일한 서버에 여러 mongod를 실행하면 대기 시간 연결에 복제 속도를 증가하는 것이었다 발견 된 경우에만 사용 사례.
Derick이 강조했듯이 쓰기 잠금은 mongodb를 실행할 때 실제로 문제가되지 않습니다. 테스트가 극적으로 성능을 decrase 것이다 (그렇지 않으면 페이지에 너무 많은 데이터를 포함하지 않는 경우 예 당신이 (충분하기 위해 서버 SEMS 당 4 개 인스턴스) 기계 당 여러 인스턴스와 몽고 스케일링을 증명할 수 :
귀하의 질문에 대답하려면 , 난 이미 그것을 테스트했습니다)
그러나 인스턴스는 여전히 리소스에 대한 경쟁이 될 것입니다. 데이터베이스 잠금 문제를 리소스 잠금 문제로 전환하면됩니다.
전적으로 동의하지 않습니다. 우리는 설치시 상자 당 8 개의 파편을 굴립니다. 복제를 위해 두 개의 다른 시스템이있는 두 개의 헤드 노드로 구성됩니다. 총 6 상자. 이것들은 대략 120GB의 RAM, 32 개의 코어 및 2TB의 비싸 박스입니다. 1 상자 당 8 개의 샤드가 있으면 (역사적인 목적으로 8로 설정하는 방식으로 더 높일 수 있음) 우리는 CPU를 효율적으로 활용할 수 있습니다. RAM 자체가 정렬됩니다. 통계를보고 너무 많은 페이징을하지 않고 SSD 드라이브 (우리가 가지고있는)로 디스크 드라이브에 흘려 보내면 너무 나쁘지는 않습니다.
RAM은 어떻게 자체적으로 정렬됩니까? 또한 높은 쓰기 처리량이나 다른 용도로 많은 파편을 사용하기로 결정 했습니까? – iCode
우리는 Mongo Map Reduce (MR)를 사용했으며 모든 데이터를 처리하려면 CPU 성능이 필요합니다. 원래의 샤딩은 코어 당 샤드로 설정되었습니다. 이것은 우리에게 최대 CPU를 주었다. 그 이후 박스는 업그레이드되어 이제 4 코어 당 조각이 나옵니다. 메모리에 관해서는 RAM에서 인덱스를 유지하는 연습입니다. 데이터가 적합하지 않으므로 걱정하지 마십시오. 우리는 RAM을 기준으로 인덱스 크기를 모니터링하고 수용 할 수 있도록 업그레이드했습니다. 우리는 필요하지 않은 색인도 삭제했습니다. –
예, 사실 50 억 밀리미터 크기의 쓰기가 많은 데이터베이스에서 그렇게 할 수 있습니다. 몽고드 당 모든 색인이 RAM에 맞는지 확인하고 성장과 유지 관리의 여지가 있는지 확인하십시오.
그러나 대상의 QPS가 무엇인지에 따라 이러한 종류의 공유에는 더 많은 마력이 필요한 반면, 단일 기계의 샤딩은 그렇지 않으며 대부분의 경우 당신은 물품을 버릴 수 있습니다. 싼 하드웨어.
성능 테스트 (ageinst IO, 네트워크, PQS 등)에 대한 일련의 테스트를 수행하고 신중하게 기준을 설정하고 SSD 드라이브를 고려해야하며 편향된 것으로 들릴 수도 있지만 Linux XFS 스토리지도 고려해야 할 사항입니다 .
- 1. Mongodb Sharding 백업/복원
- 2. Enzo SQL 샤드 라이브러리와 MongoDB Sharding
- 3. Solandra Sharding : 내부자의 생각
- 4. 하나의 머신에서 샤드 드 DB 실행하기
- 5. 하나의 머신에서 여러 MySQL 서버 실행
- 6. 많은 mongoDB 하나의 쿼리?
- 7. Memcached and Sharding
- 8. Redis on Heroku Sharding
- 9. 하나의 레일 앱에 PostgreSQL이있는 MongoDB
- 10. MongoDB - 하나의 콜렉션 인덱스 사용하기
- 11. 하나의 레코드로만 MongoDB 데이터베이스가 확장되었습니다.
- 12. MongoDB 인스턴스 (Windows)
- 13. redis sharding, pipeline, round-trips
- 14. 샤딩 (Sharding)에서 인서트 배치
- 15. 하나의 머신에서 여러 개의 OpenDS 인스턴스를 호스팅 할 수 있습니까?
- 16. 하나의 설정으로 동일한 머신에서 ehcache의 여러 인스턴스를 실행
- 17. MongoDB 인덱스/RAM 관계
- 18. Mongodb 스키마 설계 적합한 하나의 제안
- 19. MongoDB - 데이터를 하나의 컬렉션에서 다른 컬렉션으로 전송
- 20. MongoDB 디자인 [하나의 콜렉션 및 유사 문서]
- 21. mongoDB - 하나의 명령으로 오프라인으로 수동 복제하기
- 22. 하나의 운영체제에서 다른 운영체제로 이동하는 MongoDB 데이터베이스
- 23. Redis 복제 및 Redis Sharding (클러스터) 차이
- 24. 전자 상거래 사이트 Azure sharding 계획
- 25. NHibernate Sharding 프로젝트를 만드는 방법은 무엇입니까?
- 26. 64 비트 머신에서 파일을 처리하지만 32 비트 머신에서 개발하기
- 27. 가상 머신에서 valgrind 실행
- 28. 리눅스 머신에서 JDK 업데이트하기
- 29. 생산에서 MongoDB 샤딩 오류
- 30. 동일한 머신에서 여러 장고와 PHP 프로젝트를 제공합니까?
파편이 100 개 이상인 경우가 너무 많습니다.하지만 살찌는 서버에서 몇 조각으로 성능을 향상 시키면 놀라지 않을 것입니다. 일반적으로 그러 하듯이, 별도의 덜 까다로운 서버에 샤드를 놓는 것이 어떻습니까? 어떤 종류의 삽입/업데이트 속도를 기대합니까? –
주된 이유는 내가 할 필요가있는 POC에 대한 가용성과 내가 사용할 수있는 서버에 대한 샤드 환경을 시뮬레이트 할 수 있는지 궁금합니다. 나는 8 코어의 서버와 32GB의 RAM을 가진다고 가정합니다.나는 1000 개의 동시 쓰기와 10,000 개의 동시 읽기를 원하며, 각각의 읽기 또는 쓰기 요청은 데이터베이스에 의해 서비스되기 위해 0.5 초 이상 걸리지 않을 것입니다. 이것은 MongoDB와 합리적입니까? 각 읽기의 조회 결과 크기와 기록 할 데이터의 양은 크지 않으며 이는 대부분 db에 대한 많은 동시 읽기 또는 쓰기 요청에 대한 서비스입니다. – iCode
여기 통찰력을 주셔서 감사합니다. 나는 심지어 이해가 되니? – iCode