Я оцениваю MongoDB. У меня есть небольшое подмножество документов размером 20 ГБ. Каждый из них, по сути, представляет собой журнал запросов на социальную игру вместе с некоторым захваченным состоянием игры, в которую пользователь играл в тот момент.
Я думал, что попробую найти читеров игры. Поэтому я написал функцию, которая работает на стороне сервера. Он вызывает find () для индексированной коллекции и сортирует в соответствии с существующим индексом. Используя курсор, он просматривает все документы в индексированном порядке. Индекс: {user_id, time}. Поэтому я просматриваю историю каждого пользователя, проверяя, увеличиваются ли определенные значения (деньги / здоровье / и т. Д.) Быстрее, чем это возможно в игре. Скрипт возвращает первое найденное нарушение. Не собирает нарушений.
ЕДИНСТВЕННАЯ вещь, которую этот скрипт выполняет на клиенте, это определение функции и вызовы mymongodb.eval(myscript)
для экземпляра mongod в другом окне.
Коробка, на которой работает mongod, работает нормально. Тот, с которого запускается скрипт, начинает терять память и менять местами. Несколько часов спустя: 8 ГБ ОЗУ и 6 ГБ подкачки используются на клиентском компьютере, который не сделал ничего, кроме запуска сценария в другом окне и ожидания возвращаемого значения.
Является ли клиент Монго действительно таким ненормальным? Я сделал что-то не так или сделал неверное предположение о монго / монгод?