he comenzado un nuevo proyecto usando Node.js y MongoDB y después de casi 2 días que reunió a unas 600 mil objetos en MongoDB. Ya estoy notando un gran impacto (negativo) en el rendimiento y estoy empezando a preocuparme si debería moverme a otro DB tanto como pueda, o si debería quedarme con Mongo y hacer algunas (más) optimizaciones.MongoDB funciona mal en 600k objetos, DB alternativo? optimizaciones?
coordenadas Básicamente Estoy almacenando así:
[x1] => 687
[y1] => 167
[x2] => 686
[y2] => 167
[c] => 0
[s] => 0
[m] => 1299430700312
[_id] => MongoId Object (
[$id] => 4d73bd2c82bb5926780001ec
)
No más ... y mis consultas aspecto:
{'$or': [ { x1: {'$gte' : 0, '$lt' : 1000 }, y1: {'$gte' : 0, '$lt' : 1000 } , { x2: {'$gte' : 0, '$lt' : 1000 }, y2: {'$gte' : 0, '$lt' : 1000 } } ] }
He tratado de establecer el índice para cada una de las campos: x1, y1, y1, y1 así como para: {x1:1,y1:1},{x2:1,y2:1}
. Además, también he buscado solo los campos obligatorios que necesito ... pero aún así, realizar una consulta con un conjunto de resultados de ~ 40k filas termina en un tiempo de ejecución de 2-8 segundos. Por cierto: realizar la misma consulta en PHP murió con un mensaje de falta de memoria (256 MB de RAM).
La máquina es una CPU Intel (R) Core (TM) i7 920 @ 2.67GHz con 8 GB de RAM, no es el más polvo en el estante;)
Realmente estoy quedando sin ideas y veo millones y millones de filas durante las próximas semanas. Como probablemente habrás notado, las filas son relativamente pequeñas. ¿Sería mejor MySQL con particiones? ¿Alguna otra base de datos NoSQL?
Y por favor al curricán de "2-8secs no es lento" - se está convirtiendo en un problema ya. Cuando un par de solicitudes no almacenadas caen en la máquina al mismo tiempo, la carga aumenta hasta 4 y menos de 10 usuarios accediendo a ella.
¿Qué índices tiene configurados? Intente ejecutar su consulta en el intérprete de comandos y adjunte .explain() al final, que debe mostrarle el plan de consulta y los índices que están siendo aciertos. –
No estoy del todo seguro de lo que está tratando de lograr con esta consulta, pero podría tener más suerte usando índices geoespaciales. http://www.mongodb.org/display/DOCS/Geospatial+Indexing –
Suponiendo que esas coordenadas son, como se ve, las esquinas de los rectángulos, debe usar los índices geoespaciales de MongoDB: http://www.mongodb.org/ display/DOCS/Geospatial + Indexing –