Я ищу советы о том, как повысить производительность базы данных в следующей ситуации.
В качестве примера приложения я написал сегодня довольно простое приложение, которое использует API потоковой передачи Twitter для поиска по определенным ключевым словам.Затем я сохраняю результаты в MongoDB.Приложение написано с Node.js.
Я храню 2 коллекции.Один хранит ключевое слово и массив идентификаторов твитов, которые ссылаются на каждый найденный твит с упоминанием этого ключевого слова.Они добавляются в базу данных с помощью .update () с {upsert: true}, так что новые идентификаторы добавляются в массив 'ids'.
Пример документа из этой коллекции выглядит следующим образом:
{"_id": ObjectId ("4e00645ef58a7ad3fc9fd9f9"), "ids": ["id1", "id2", "id3"], "keyword": "#chocolate"}
Обновить код:
keywords.update({keyword: key_word},{$push:{ids: id}},{upsert:true}, function(err){})
2-я коллекция выглядит следующим образом и добавляется просто с помощью .save ()
{
"twt_id": "id1",
"tweet": { //big chunk of json that doesn't need to be shown }
}
Я запустил это на своем Macbook прямо сейчас, и он собираетсяоколо 2 часов.Я храню много данных, вероятно, несколько сотен документов в минуту.В настоящее время число объектов в Mongodb составляет 120 000+.
Что я замечаю, так это то, что загрузка ЦП для процесса базы данных достигает 84% и постепенно увеличивается с момента запуска последней версии.тестовый прогон.
Я читал о настройке индексов, но так как я добавляю документы, а не выполняю запросы к ним, я не уверен, помогут ли индексы.Мне пришла в голову мысль, что update () может выполнять поиск, так как я использую $ push, и что индекс может помочь с этим.
Что я должен смотреть, чтобы не съесть MongoDBпостоянно увеличивающееся количество процессоров?