Estoy buscando consejos sobre cómo mejorar el rendimiento de la base de datos en la siguiente situación.¿Cómo mejorar el rendimiento de la actualización() y guardar() en MongoDB?
Como una aplicación de muestra, escribí una aplicación bastante simple hoy que usa la API de transmisión de Twitter para buscar ciertas palabras clave, y luego estoy almacenando los resultados en MongoDB. La aplicación está escrita con Node.js.
Estoy almacenando 2 colecciones. Uno almacena la palabra clave y una matriz de identificadores de tweets que hacen referencia a cada tweet que se encuentra mencionando esa palabra clave. Estos se están agregando a la base de datos usando .update() con {upsert: true} para que los nuevos identificadores se anexen a la matriz 'ids'.
Un documento de muestra de esta colección es el siguiente:
{ "_id": OBJECTID ("4e00645ef58a7ad3fc9fd9f9"), "ID": [ "ID1", "ID2", "ID3"], "palabra clave": "#chocolate" código }
actualización:
keywords.update({keyword: key_word},{$push:{ids: id}},{upsert:true}, function(err){})
La segunda colección se parece a esto y se añaden simplemente usando .save()
{
"twt_id": "id1",
"tweet": { //big chunk of json that doesn't need to be shown }
}
Tengo este funcionamiento en mi Macbook en este momento y ha estado funcionando durante aproximadamente 2 horas. Estoy almacenando un lote de datos, probablemente varios cientos de documentos por minuto. En este momento, la cantidad de objetos en Mongodb es de 120k +.
Lo que noto es que el uso de la CPU para el proceso de la base de datos llega hasta el 84% y ha estado subiendo constantemente desde que comencé la última prueba.
Estaba leyendo sobre la configuración de índices, pero como estoy agregando documentos y no ejecutando consultas contra ellos, no estoy seguro de si los índices ayudarán. Un lado pensado que se me ocurrió es que update() podría estar haciendo una búsqueda ya que estoy usando $ push y que un índice podría ayudar con eso.
¿Qué debería estar buscando para evitar que MongoDB consuma cantidades cada vez mayores de CPU?
un MacBook con un disco lento es poco probable que la mejor opción para la realización de los puntos de referencia y hablando de problems..even rendimiento con el hardware más nuevo MacBook –
@Blackmoon El aceptada la respuesta sugiere lo contrario. – hplbsh