2012-01-09 8 views
4

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

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

  2. Извлечение изображения из GridFS занимает больше времени, чем облака, потому что я должен а) Запрос изображение, используя идентификатор б) считывать изображение в памяти с) использовать заголовок PHP для отображения изображения

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

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

ответ

4

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

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

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

Извлечение изображения из GridFS занимает больше времени, чем облака, потому что должны а) Запрос изображения с использованием идентификатора б) считывать изображение в памяти с) использовать заголовок PHP для отображения изображения

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

+0

«подается из ОЗУ». Я уже собираюсь иметь информацию, хранящуюся в ОЗУ, из обычных коллекций, не являющихся частью сетки. Сохранение дополнительной информации в ОЗУ может снизить производительность сервера. Скажите, что вы имеете дело с 1000 изображениями, есть только так много ОЗУ. По-прежнему представляется лучше хранить его на облачном сервере и кэшировать в браузере клиентов. Неужели я ошибаюсь? –

Смежные вопросы