2012-04-05 1 views
1

PHP 몽고 드라이버를 사용하면 데이터베이스에서 코드를 실행할 수 있습니다. sharded 환경에서도 작동합니까? eval()을 사용하는 코드를 평가할 때 sharded 환경에서는 작동하지 않는다는 것을 알고 있습니다.MongoDB :: execute는 mongos eval()을 내부적으로 사용합니까?

$db->execute(
    new MongoCode('SomeFunc(o)', array(
     'o' => array('name' => 'test') 
    )) 
); 

답변

0

간단히 : 아니오.

길게 대답 : MongoCode은 Mongo 셸을 통해 입력 한 것과 거의 같은 방법으로 JavaScript 코드를 MongoDB로 전송하는 데 사용됩니다. 따라서 제공된 코드를 실행하는 것은 MongoDB의 책임입니다. PHP 엔진 내부에서는 실행되지 않습니다.

업데이트 : 짧은 답변을 변경하는 부분적인 환경에 대한 질문에서 그 부분을 놓쳤습니다. ;)

+0

Sharded 환경에서 코드를 어떻게 실행할 수 있습니까? –

+0

두 가지 옵션이 있습니다. 하나의 컴퓨터에 데이터를 가져 와서 거기에서 물건을 계산할 수 있습니다 (멀리 할 수있는 경우/권장). 또는 mapReduce 또는 이와 유사한 것을 사용할 수 있습니다. MongoDB의 MR은 단일 스레드이며 (또는 마지막으로 확인한) 단일 스레드이며 실제로 maooDB와 함께 사용할 수있는 Hadoop과 경쟁 할 수 없습니다. 그러나 MR을 사용하기 전에 두 번 생각하면 개발 시간이 많이 걸리고 일반 처리에 비해 느립니다. 이는 엄청난 양의 데이터에만 유용합니다. 내 조언은 첫 번째 옵션으로 시작하고 단일 프로세스가 더 이상 충분하지 않을 때만 MR을 사용하는 것입니다. – johndodo

+0

이미 node.js.에서 첫 번째 제안 사항을 구현했습니다. 문제는 엄청난 양의 데이터로 인해 속도가 느리다는 것입니다. 그래서 내 생각은 노드에서 mongo로 코드를 저장 프로 시저로 옮겨서 내 미들웨어에서 호출하는 것이 었습니다. –