2011-12-15 20 views
9

Tworzę system blogów mongodb/nodejs (podobny do wordpress).Przechowuj pliki na dysku lub MongoDB

Mam aktualnie obrazy są zapisywane na dysku i wskaźnik jest umieszczony w Mongo. Zastanawiam się, ponieważ mam wszystkie sesje przechowywane w MongoDB, aby umożliwić łatwe równoważenie obciążenia między serwerami, przechowywanie rzeczywistych plików w Mongo również byłoby dobrym pomysłem na łatwe konfiguracje wielu serwerów i/lub wzrost wydajności.

Jeśli wszystko jest przechowywane w DB, można po prostu tarło więcej serwerów internetowych i/lub replikacji Mongo skalować poziomo

opinie?

Odpowiedz

10

MongoDB jest dobrym rozwiązaniem do przechowywania plików (mówię o GridFS), specjalnie dla przypadku użycia opisałeś powyżej. Gdy przechowujesz pliki w MongoDB (GridFS, nie dokumenty), otrzymujesz całą możliwość replikacji i shardingu za darmo, co jest niesamowite.

Jeśli masz na tarło nowy serwer i masz już pliki do MongoDB, wszystko co musisz zrobić, to włączyć replikację (w ten sposób skalować poziomo). Jestem pewien, że to może zaoszczędzić ci wielu bólów głowy.

Zasoby:

Is GridFS fast and reliable enough for production?
http://www.mongodb.org/display/DOCS/GridFS
http://www.coffeepowered.net/2010/02/17/serving-files-out-of-gridfs/

2

Przechowywanie obrazu jako dokumentu w mongodb byłoby złym pomysłem, ponieważ zasoby, które mogły zostać użyte do wysłania dużej ilości danych informacyjnych, byłyby wykorzystywane do wysyłania plików.

Zapoznaj się z GridFS przechowywania plików mongoDb, który może rozwiązać problem z przechowywaniem obrazów i zapewnia skalowalność poziomą.

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

4

Oprócz GridFS, użytkownik może być rozważa wdrożenie w chmurze. W takim przypadku można rozważyć przechowywanie plików w pamięci masowej w chmurze (na przykład platforma Blob Storage Windows Azure). Trzymając się Windows Azure dla tego przykładu (ponieważ to jest to, z czym pracuję), odwołujesz się do pliku za pomocą jego identyfikatora URI konta magazynu. Na przykład:

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

Ponieważ chcesz być przechowywanie samej bazy danych MongoDB we własnym blob (i montowane jako objętość na dysku Twojego Linux lub Windows VM), można następnie wybrać do przechowywania plików albo w tym samym konto pamięci masowej lub zupełnie inne konto pamięci masowej (przy każdym koncie przechowywania zapewniającym 100TB 200 TB pamięci).

Powiązane problemy