2012-07-20 2 views
2

Mongo 지원 Map/Query를 줄이지 만 Hadoop의 관점에서지도가 줄어들지는 않습니다 (병렬로 실행 중). 대규모 Mongo 데이터베이스에서 쿼리를 실행하는 가장 좋은 방법은 무엇입니까? 다른 장소로 내 보내야합니까?Mongo에서 Big Data 쿼리를 수행하는 가장 좋은 방법은 무엇입니까?

+0

얼마나 방대합니까? – MrKurt

+0

데이터의 크기는 얼마나됩니까? 실행할 쿼리 종류의 예가 있습니까? Map/Reduce가 유일한 옵션은 아닙니다 ... MongoDB는 여러 개의 [Indexes] (http://www.mongodb.org/display/DOCS/Indexes)와 [Query operators] (http://www.mongodb.org)를 지원합니다./display/DOCS/Advanced + Queries), 2.2에 나오는 [Aggregation Framework] (http://docs.mongodb.org/manual/applications/aggregation/)이 있습니다. – Stennie

답변

1

정확히 당신이해야 할 일에 따라, 옵션 (몽고 내에서 최대한)는 다음과 같습니다

1) 몽고의 감소 /지도를 계속 사용하지만, m/R 목적으로 일부 세컨더리을 불. 이는지도 축소를 병렬 처리하는 다소 쉬운 방법 중 하나입니다. 한계가 있지만 "out : inline"옵션 만 사용할 수 있으므로 결과는 ~ 16MB 이하 여야합니다. 이것은 아직 샤 르드하지 않은 경우에만 실제로 가능합니다.

2) aggregation framework 2.2 (2.2.0-rc0이 나오면 MongoHQ에서 꽤 안정적이라는 것을 알았습니다.)를보십시오. 이것은 db 레벨에서 더 잘 최적화되어 janky javascript 엔진에서 빠져 나오지 않으며 10gen이 추가 한 흥미로운 기능 중 하나입니다. 또한 sharded 환경에서 작동합니다.

위의 경우, 모든 입력 데이터, 중간 단계 및 결과를 저장하기에 충분한 RAM (또는 실제로는 빠른 디스크)을 갖고 싶습니다. 그렇지 않으면 입출력 속도에 얽매이고 CPU를 많이 사용하지 않게됩니다.

Mongo 외부로 나가려면 Mongo Hadoop 어댑터를 사용해보십시오. Hadoop은 map/reduce를하는 훨씬 더 좋은 방법이며, 이렇게하면 Mongo 데이터를 입력으로 사용할 수 있습니다. 이것은 조작 상으로 복잡 할 수 있지만, 이는 높은 노력이나 약함을 의미합니다.

관련 문제