Хранить файлы на диске или MongoDB - PullRequest
9 голосов
/ 15 декабря 2011

Я создаю систему блогов mongodb / nodejs (похожую на wordpress).

В настоящее время у меня есть изображения, сохраняемые на диске, и указатель, помещенный в монго. Мне было интересно, поскольку все сеансы хранятся в MongoDB, чтобы обеспечить простую балансировку нагрузки на серверах, сохранение реальных файлов в Mongo также было бы разумной идеей для простых многосерверных установок и / или повышения производительности.

Если все хранится в БД, вы можете просто создать больше веб-серверов и / или репликаций монго для горизонтального масштабирования

Мнения

Ответы [ 3 ]

10 голосов
/ 15 декабря 2011

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

Если вам нужно порождать новый сервер и у вас есть файлы уже в MongoDB, все, что вам нужно сделать, это включить репликацию (таким образом, масштабировать горизонтально). Я уверен, что это может избавить вас от многих головных болей.

Ресурсы:

Достаточно ли быстр и надежен GridFS для производства?
http://www.mongodb.org/display/DOCS/GridFS
http://www.coffeepowered.net/2010/02/17/serving-files-out-of-gridfs/

4 голосов
/ 15 декабря 2011

Помимо GridFS, вы можете подумать об облачном развертывании. В этом случае вы можете подумать о хранении файлов в облачном хранилище (например, в Windows Azure есть хранилище BLOB-объектов). Придерживаясь Windows Azure для этого примера (поскольку именно с этим я работаю), вы будете ссылаться на файл по его URI учетной записи хранения. Например:

https://mystorageacct.blob.core.windows.net/mycontainer/myvideo.wmv

Поскольку вы будете хранить саму базу данных MongoDB в своем собственном BLOB-объекте (и монтировать ее в качестве тома диска на виртуальной машине Linux или Windows), вы можете выбрать сохранение файлов в той же учетной записи хранения или в совершенно другом хранилище. учетная запись (каждая учетная запись хранения обеспечивает 100 ТБ 200 ТБ хранилища).

2 голосов
/ 15 декабря 2011

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

Взгляните на хранилище файлов mongoDb GridFS, которое может решить вашу проблему хранения изображений, а также обеспечения горизонтальной масштабируемости.

http://www.mongodb.org/display/DOCS/GridFS http://www.mongodb.org/display/DOCS/GridFS+Specification

...