Как повысить производительность update () и save () в MongoDB?

Я ищу советы о том, как улучшить производительность базы данных в следующей ситуации.

В качестве образца Сегодня я написал довольно простое приложение, которое использует API потоковой передачи Twitter для поиска определенных ключевых слов, а затем сохраняю результаты в MongoDB. Приложение написано на Node.js.

Я храню 2 коллекции. Один хранит ключевое слово и массив идентификаторов твитов, которые ссылаются на каждый найденный твит, в котором упоминается это ключевое слово. Они добавляются в базу данных с помощью .update () с {upsert: true}, так что новые идентификаторы добавляются к массиву 'ids'.

Образец документа из этой коллекции выглядит следующим образом:

{ "_id": ObjectId ("4e00645ef58a7ad3fc9fd9f9"), «идентификаторы»: [«идентификатор1», «идентификатор2», «идентификатор3»], "ключевое слово": "# шоколад" }

Код обновления:

 keywords.update({keyword: key_word},{$push:{ids: id}},{upsert:true}, function(err){})

Вторая коллекция выглядит так и добавляется просто с помощью .save ()

 {
     "twt_id": "id1",
     "tweet": { //big chunk of json that doesn't need to be shown }
 }

У меня это работает на моем Macbook прямо сейчас, и это продолжается около 2 часов. Я храню много данных, вероятно, несколько сотен документов в минуту. Прямо сейчас количество объектов в Mongodb составляет 120 тыс. +.

Я замечаю, что использование ЦП для процесса базы данных достигает 84% и постоянно постепенно увеличивается с тех пор, как я начал последний тестовый прогон.

Я читал об установке индексов, но поскольку я добавляю документы, а не выполняю запросы к ним, я не уверен, что индексы помогут. Мне пришла в голову побочная мысль, что update () может выполнять поиск, поскольку я использую $ push, и что индекс может помочь с этим.

На что я должен обратить внимание, чтобы MongoDB не съедал все больше количество процессора?

8
задан Geuis 21 June 2011 в 10:43
поделиться