Как понимать слова «вроде как»? Вы не уверены в том, что говорите?
Лично у меня всё работает. Ну да, монго выжрала все 16гб памяти, но ничего не падает, если кому-то нужна память, она выделяется за счёт той памяти, что заняла монго. Во всяком случае, так это выглядит по ощущениям. Свопинга нет. Размер файлов баз данных монги на диске — 260 гигабайт.
Интерфейс похож на www.pivotaltracker.com/ Вообще согласен, большинство таск-трекеров имеют сложный интерфейс, который отбивает желание с ними работать.
Вот сделал простенький тест. У меня щас в монго базе 5.5 миллионов записей.
Вот код скрипта — ищется 10000 записей, удовлетворяющих условию: в URL должен быть фрагмент «10». В начале делается выборка с $where условием, далее выборка записей с проверкой в клиенте. Вторая выборка работает быстрее.
Скрипт: dumpz.org/115976/
Результаты (в секундах):
1) 1.94
2) 1.31
На поле url не наложен индекс, думаю, если б он там был, то вариант с логикой внутри mongo оказался бы быстрее.
Почему это быстро, не пойму. Берутся, данные, извлекаются, далее с ними что-то делается: в первом случае это делается в процессе mongodb на javascript, во втором случае это делается на клиенте, который, возможно, делает это быстрее. Под клиентом я имею в виду программу, которая через драйвер работает с mongodb, возможно, на этом же компьюетере, так что трафик тут не в счёт.
> В-третьих, никто в mysql никто не пытается запросить всё и фильтровать на клиенте.
Так я и говорю, что то что вы описали, это похоже на «запросить всё и фильтровать на клиенте», просто фильтруется внутри mongodb процесса. Принципиальной разницы не вижу.
Естественно, что для обработки в клиенте не нужно запрашивать *все* записи, итерируемся по всем записями, пока не наберём нужное кол-во записей, далее процесс итерации обрываем.
> Вот так можно найти всех пользователей с именем joe или Joe:
> db.users.find( { «name»: /joe/i } );
Нет, эта команда делает нечто другое. Она ищет записи, у которых в поле name встречается фрагмент «joe», так что «Joe Porn» и «ABCjoE» также будут найдены.
Вы слишком категорично мыслите, мне кажется. Я думаю проверка по pep8 в первую очередь нужна начинающим пользователям, чтобы у них вошло в привычку писать корректный код. Только проверка нужна динамическая, чтобы по мере написания кода сразу были видны огрехи в оформлении.
Человек просто не осилил, как поставить все нужные библиотеки и хочет, чтобы вы за него решили его проблему. Потом он ещё попросит, чтобы pycharm его собачку выгуливал и мусор выносил.
Всё же хочу заметить, что во всех этих примерах употреблена форма «что-либо явствует ИЗ ПРИЧИНЫ», а у вас в заголовке часть «ИЗ ПРИЧИНЫ» была опущена и вообще эта часть не подразумевалась, вот это и режет глаз.
Лично у меня всё работает. Ну да, монго выжрала все 16гб памяти, но ничего не падает, если кому-то нужна память, она выделяется за счёт той памяти, что заняла монго. Во всяком случае, так это выглядит по ощущениям. Свопинга нет. Размер файлов баз данных монги на диске — 260 гигабайт.
Вот код скрипта — ищется 10000 записей, удовлетворяющих условию: в URL должен быть фрагмент «10». В начале делается выборка с $where условием, далее выборка записей с проверкой в клиенте. Вторая выборка работает быстрее.
Скрипт: dumpz.org/115976/
Результаты (в секундах):
1) 1.94
2) 1.31
На поле url не наложен индекс, думаю, если б он там был, то вариант с логикой внутри mongo оказался бы быстрее.
> В-третьих, никто в mysql никто не пытается запросить всё и фильтровать на клиенте.
Так я и говорю, что то что вы описали, это похоже на «запросить всё и фильтровать на клиенте», просто фильтруется внутри mongodb процесса. Принципиальной разницы не вижу.
Естественно, что для обработки в клиенте не нужно запрашивать *все* записи, итерируемся по всем записями, пока не наберём нужное кол-во записей, далее процесс итерации обрываем.
> db.users.find( { «name»: /joe/i } );
Нет, эта команда делает нечто другое. Она ищет записи, у которых в поле name встречается фрагмент «joe», так что «Joe Porn» и «ABCjoE» также будут найдены.