Производительность многократного выполнения одного и того же JavaScript на MongoDb? - PullRequest
2 голосов
/ 29 июня 2011

Я смотрю на использование некоторого JavaScript в запросе MongoDb. У меня есть пара вариантов:

  • db.system.js.save функция в БД, затем выполнить ее
  • db.myCollection.find с предложением $where и отправляйте JS каждый раз
  • exec_js в MongoEngine (который, я думаю, использует один из вышеперечисленных)

Я планирую использовать JavaScript в регулярно используемом запросе, который выполняется как часть запроса к сайту или API (т.е. не пакетные административные задания), поэтому важно, чтобы запрос выполнялся с разумной скоростью.

Я смотрю на 30-строчную функцию.

Javascript интерпретируется каждый раз свежо? Будет ли спектакль в порядке? Это разумная основа для построения запросов?

Ответы [ 2 ]

1 голос
/ 29 июня 2011

Является ли Javascript каждый раз свежим?

В значительной степени.MongoDB имеет только один «экземпляр javascript» на каждый запущенный экземпляр MongoDB.Вы заметите это, если попытаетесь запустить два разных Map / Reduces одновременно.

Будет ли производительность в порядке?

Очевидно, здесь есть разные определения «ОК».Предложение $where не может использовать индексы.Вы можете объединить это предложение с другим индексированным запросом.В любом случае каждый объект должен быть перенесен из BSON во время выполнения Javascript, а затем включен во время выполнения.

Процесс определенно не тот, который вы бы назвали "перформантом".Конечно, по этой мере Map / Reduce также не очень эффективен, и люди используют его в производственных системах.

Это разумная основа для построения запросов?

Настоящим препятствием здесь является не количество строк в коде, а количество возможных документов, которые этот код будет интерпретировать.Несмотря на то, что это «серверный» javascript, сервер все равно должен выполнить кучу работы.(в одном потоке, в интерпретируемой среде)

Если вы можете проверить его и правильно определить его область, это вполне может сработать.Только не жди чудес.

0 голосов
/ 29 июня 2011

Какой у вас смысл?Напишите JS-скрипт и регулярно вызывайте его через cron.В чем должна быть проблема?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...