MongoDB как поставщик статических файлов? - PullRequest
8 голосов
/ 20 февраля 2011

MongoDB - хороший кандидат на обслуживание статических файлов (файлов, видео) как cdn.Я искал надежный способ хранения больших объемов данных (> + To), заменяя S3 и управляя функциями кэша.Опыты.

Спасибо.

Ответы [ 2 ]

11 голосов
/ 20 февраля 2011

Я полагаю, что ответ на этот вопрос нет , потому что, когда вы используете CDN для хранения статических файлов, вы освобождаете свой сервер от запросов статических данных. Но когда вы выбираете между файловой системой и mongodb, я полагаю, что mongodb будет работать быстрее, поскольку, если на сервере достаточно оперативной памяти, mongo загрузит все данные в память.

Также я нашел несколько ссылок, которые помогут вам сделать свой выбор: www.markus-gattol.name , groups.google.com

Из документации:

Когда использовать GridFS

много файлов. GridFS имеет тенденцию обрабатывать большие числа (многие тысячи) файлов лучше многих файлов системы.

Пользователь загружал файлы. Когда пользователи загружают файлы, у вас, как правило, много файлы, и хотите, чтобы они реплицировались и резервное копирование GridFS - идеальное место хранить их, как тогда вы можете управлять они так же, как вы управляете данные. Вы также можете запросить пользователя, дата загрузки и т.д ... прямо в хранилище файлов, без слоя Косвенная

Файлы, которые часто меняются. Если у вас есть определенные файлы, которые сильно меняются - имеет смысл хранить их в GridFS так что вы можете изменить их в одном месте и все клиенты получат обновления. Также может быть лучше, чем хранить в исходное дерево, так что вам не нужно разверните приложение для обновления файлов.

Когда не использовать GridFS

Несколько небольших статических файлов. Если у вас есть несколько небольших файлов для веб-сайт (JS, CSS, изображения) его, вероятно, проще просто использовать файловую систему.

Обратите внимание, что если вам нужно обновить двоичный объект атомарно, и объект находится под размером документа предел для вашей версии MongoDB (16MB для 1.8), тогда вы можете рассмотреть возможность хранения объекта вручную в одном документе. Это может быть выполнено с использованием bindata BSON тип. Проверьте документы вашего водителя на Подробнее об использовании этого типа.

2 голосов
/ 20 февраля 2011

Обычно ответом будет «да», вы можете использовать mongodb для этого, но mongodb не имеет интерфейса http для обслуживания файлов, как apache / random-webserver.Если вам нужно добавить дополнительную функцию, такую ​​как проверка подлинности приложения для этих файлов, это может иметь смысл, например,.

Вы можете создать инфраструктуру вокруг mongodb, где вы реплицируете изменения и пишете интерфейс http вобслуживать файлы (например, nginx-gridfs или любой другой http-компонент gridfs).Но вам нужно будет собрать / интегрировать их, протестировать и развернуть все это.Использование файловой системы со стандартным веб-сервером для предоставления файлов очень хорошо протестировано и задокументировано;многие системы используют rsync для эффективной репликации файлов на множество узлов.

Есть так много вещей, которые делает cdn, что вам придется заново реализовать его, возможно, не имеет смысла решать все это самостоятельно, но это действительно другой вопрос.

...