Хранение изображений в MongoDB GridFS - PullRequest
4 голосов
/ 09 января 2012

Я спорю о хранении изображений в Mongo GridFS или в облачной файловой системе. Я склоняюсь к облаку по нескольким причинам. Используемый язык - PHP на сервере Nginx.

  1. Хранение изображений в GridFS увеличивает размер базы данных. Поэтому большая часть базы данных должна быть в памяти, и я буду тратить больше времени / денег на управление серверами, когда речь идет о таких вещах, как шардинг.

  2. Получение изображения из GridFS занимает больше времени, чем в облаке, потому что мне нужно а) запросить изображение с помощью идентификатора б) прочитать изображение в память c) используйте php-заголовок для отображения изображения

Облако было бы лучше, потому что это URL-адрес изображения непосредственно в облаке.

Звучат ли эти причины обоснованными или я должен идти в другом направлении со своим мышлением?

1 Ответ

4 голосов
/ 09 января 2012

Это не совсем так.

Хранение изображений в GridFS увеличивает размер базы данных. Поэтому больше базы данных должно быть в памяти, и я буду тратить больше времени / денег на управление серверами, когда дело доходит до таких вещей, как Sharding.

Mongodb gridfs разбивает огромные файлы на куски, и только они будут загружаться и обслуживаться (каждым куском), когда это будет запрошено. Да, определенно это займет больше памяти, чем файловая система. Это все компромиссы при использовании хранилищ данных в памяти.

Получение изображения из GridFS занимает больше времени, чем в облаке, потому что я должны а) запросить изображение с помощью идентификатора б) прочитать изображение в память в) используйте php-заголовок для отображения изображения

Как я уже говорил в моем предыдущем пункте, он будет загружен в память в первый раз. таким образом, у вас не будет большой проблемы с производительностью, потому что это будет выигрыш, поскольку он подается из ОЗУ вместо диска. Но если вы все еще не удовлетворены, я бы порекомендовал кэшировать изображения в nginx. поэтому он не придет в Монго после первого.

...