nodeJS, mongoDB, express, eJS - мнения о кешировании памяти - PullRequest
0 голосов
/ 08 марта 2012

Я создаю свой первый сайт, используя эту платформу, я переделываю сайт, который я сделал на PHP + mySQL, и хочу узнать кое-что о производительности ... На моем сайте у меня есть два вида контента:

  • Сообщения блога (для 2 разделов сайта) - они имеют тенденцию к сумме за один день до тысяч записей и, чаще всего, обновляются
  • Статические (своего рода) данные: этоэто информация, которую я храню в базе данных, например данные раздела сайта (заголовок, метатеги, URL-адрес изображения заголовка, фиксированный html-контент, имена файлов javascript и css для включения в этот раздел), который редко обновляется и очень мал по размеру.

Пока я изучал основы на nodeJS, я начал думать о том, как повысить производительность веб-сайта таким образом, который я не смог сделать с PHP.Итак, что я делаю:

Когда я запускаю приложение, все статическое содержимое загружается в память, у меня есть «модельный» объект для каждого содержимого, которое хранит данные в массиве, имеетметод для обновления этих данных, т.е. когда администратор обновляет что-то, я вызываю refresh (), чтобы получить новые данные из базы данных в этот массив.Таким образом, для каждой загрузки страницы, вместо запросов к базе данных, приложение запрашивает объект в памяти напрямую.

Что я хотел бы знать, так это то, должно ли быть какое-либо увеличение производительности, работа с объектами напрямуюв памяти или если постоянные запросы к базе данных будут работать так же хорошо или даже лучше.

Любая документация, подтверждающая ваш ответ, будет высоко оценена.

Спасибо

Ответы [ 2 ]

2 голосов
/ 08 марта 2012

С точки зрения общей производительности базы данных MongoDB сохранит ваш рабочий набор в памяти - это его основной метод работы.

Так что, пока нет конфликта памяти, из-за которого данные будут выгружены, и он не слишком велик для размещения в вашей физической ОЗУ, запросы к базе данных должны быть чрезвычайно быстрыми (в течение миллисекунды). диапазон, как только вы установили свой набор данных на начальном этапе).

Конечно, если база данных находится на другом хосте, у вас есть время ожидания сети и тому подобное, но теоретически вы можете рассматривать их как одинаковые до тех пор, пока у вас не будет повода для сомнений.

1 голос
/ 08 марта 2012

Я не думаю, что будет какая-то разница в производительности. Во-первых, эти статические данные, вероятно, не так велики (до 100 записей?), И запрос к БД для них не имеет большого значения. Второе (что более важно) заключается в том, что большинство движков БД (включая mongoDB) имеют встроенные системы кэширования (хотя я не уверен, как они работают в деталях). В-третьих, удержание результатов запроса в памяти плохо масштабируется (для больших сайтов), если вы не используете механизм хранения, такой как Redis . И это мое мнение, хотя я не эксперт.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...