Я начал новый проект, используя node.js и mongodb, и почти через 2 дня я собрал около 600 тыс. Объектов в MongoDB.Я уже замечаю огромное (негативное) влияние на производительность и начинаю беспокоиться, стоит ли мне переходить на другую БД так долго, как я могу, или мне следует придерживаться Mongo и проводить некоторые (дополнительные) оптимизации.
В основном я сохраняю координаты так:
[x1] => 687
[y1] => 167
[x2] => 686
[y2] => 167
[c] => 0
[s] => 0
[m] => 1299430700312
[_id] => MongoId Object (
[$id] => 4d73bd2c82bb5926780001ec
)
Не более ... и мои запросы выглядят так:
{'$or': [ { x1: {'$gte' : 0, '$lt' : 1000 }, y1: {'$gte' : 0, '$lt' : 1000 } , { x2: {'$gte' : 0, '$lt' : 1000 }, y2: {'$gte' : 0, '$lt' : 1000 } } ] }
Я пытался установитьиндекс для каждого из полей: x1, y1, y1, y1, а также для: {x1:1,y1:1},{x2:1,y2:1}
.Кроме того, я также выбрал только необходимые поля, которые мне нужны ... но, тем не менее, выполнение запроса с результирующим набором ~ 40 тыс. Строк заканчивается во время выполнения 2-8 сек.Кстати, выполнение того же запроса в PHP прервалось с сообщением «Недостаточно памяти» (256 МБ ОЗУ).
Машина представляет собой процессор Intel® Core ™ TM i7 с тактовой частотой 920 @ 2,67 ГГц и 8 ГБ ОЗУ, она не самая пыльная в стойке;)
Я действительноиссякают идеи, и я вижу миллионы и миллионы строк, приходящих на следующие недели.Как вы, наверное, заметили, строки сравнительно небольшие.Будет ли MySQL с разделением работать лучше?Любая другая NoSQL DB?
И, пожалуйста, троллинг по поводу "2-8сек не медленный" - это уже становится проблемой.Когда пара некэшированных запросов одновременно попадает на компьютер, нагрузка возрастает до 4, а к ней обращается менее 10 пользователей.