2010-12-10 4 views
16

나는 현재 우리의 쓰기 무거운 응용 프로그램에 대한 MongoDB를 평가하고 ...MongoDB를이 - 무거운 쓰기 응용 프로그램

현재 MongoDB를도 쓰기 동작을위한 단일 스레드를 사용하고 멀티 CPU 서버를 활용하는 것은 쓰기를 수행 할 때마다 글로벌 잠금을 사용 ... 더 나은 쓰기 성능을 얻기 위해 다중 CPU 서버에서 다중 CPU를 이용할 수 있습니까? 전역 쓰기 잠금에 대한 해결 방법은 무엇입니까?

+1

check http://stackoverflow.com/questions/2954957/mongodb-vs-couchdb-speed-optimization. –

답변

15

그래서 지금 쉬운 해결책은 조각입니다.

예, 일반적으로 샤딩은 여러 서버에서 수행됩니다. 그러나 하나의 상자에서 조각을내는 것은 완전히 가능합니다. 샤드를 다른 포트에 설치하고 다른 폴더를 제공하기 만하면됩니다. Here's a sample configuration는 1 상자에 2 개입니다.

MongoDB 팀은 이것이 일종의 서브 파인 것으로 알고 있으며, 나는 그들에게 더 나은 방법을 찾고 있다는 것을 알고 있습니다.

분명히 한 상자에 여러 조각을 가져 와서 쓰기 스레드를 늘리면 디스크 IO를 조심해야합니다. 내 경험상, 나는 하나의 쓰레드로 디스크를 가득 채울 수 있었다. 삽입/업데이트가 상대적으로 간단하다면 추가 쓰레드가 아무 것도하지 않는다는 것을 알 수 있습니다. (Map-Reduces는 여기에서 제외됩니다. 샤딩이 확실히 도움이됩니다.)

+0

감사합니다 ... 시도해 보겠습니다 ... 우리는 대규모 분석을해야하며 이것은 강력한 서버에서 실제로 도움이 될 수 있습니다 .. 그러한 구성의 부정적인 영향을 알고 있습니까? – StackUnderflow

+0

부정적인 영향 : 단일 노드에서 클러스터를 설정하는 추가 복잡성 및 물론 단일 실패 지점. 분명히, 나는 당신의 요구를 충족시키는 지 먼저 확인하기 위해 그러한 솔루션을 테스트 할 것이고, 하나의 노드를 실행하여 처리량이 어떤지보기 위해 시작하는 것이 공정하다고 생각한다. –

+0

당신을 포화 시키려하고있는 인서트/초. 디스크 I/O? 나는 하나의 쓰레드로 순차적 쓰기 채도 근처의 어느 곳으로도 갈 수 없다. – EhevuTov

16

아니요, 다중 CPU 코어를 활용하려면 샤딩을 사용하는 것이 좋습니다. FAQ

샤딩에 명시된 바와 동시에 다양한 하류 에게 작업의 수를 수행 샤드 서버 (즉 mongos가를 처리하는) 여러 mongod 인스턴스 위에 수집 분배시킴으로써 동시성을 향상 mongod instances.

각 mongod 인스턴스는 샤드 클러스터의 다른 인스턴스와 독립적이며 MongoDB 판독기 - 기록기 잠금을 사용합니다. 하나의 mongod 인스턴스에 대한 작업은 다른 작업에 대한 작업을 차단하지 않습니다. 한 사용자가 mongodb-user 메일 링리스트에 몇 가지 중요한 실험 후

에 명시된 바와 같이 하나의 상자에

샤딩, 그 문제가, 내가 발견 한 두 개 이상의 CPU를 사용할 수없는 하나의 MongoDB의 파편 데몬 . 24 CPU 상자에서 약 8 개의 샤드가 나올 때까지 성능이 향상되고 다른 한계가 시작됩니다.

+1

이 답변을 주셔서 감사합니다. 따라서 우리의 데이터베이스 서버는 2 개의 쿼드 코어 CPU를 갖게됩니다. – Philipp

관련 문제