2013-05-28 16 views
8

Rozwijamy aplikację internetową za pomocą mongodb i scala. Chcemy przechowywać Obrazy przesłane przez użytkowników. Mamy dwie opcje:co jest najlepszym sposobem przechowywania zdjęć?

  1. Przechowywanie obrazu bezpośrednio w bazie danych mongodb przy użyciu GridFS.

  2. Przechowywanie obrazów w folderze na serwerze.I przechowywać tylko ścieżkę tego obrazu w bazie danych.

Która metoda jest najlepsza, aby czas wymagany do pobrania obrazu był mniejszy?

+1

To pytanie wielokrotnie kręciło się po drzewie, szybkie wyszukiwanie na tej stronie zapewni lepsze odpowiedzi niż te poniżej. np .: http://stackoverflow.com/questions/13457784/storage-for-millions-of-images i http://stackoverflow.com/questions/15030532/mongodb-as-file-storage – Sammaye

Odpowiedz

7

Zwykle chcesz oddzielić statycznych obrazów z serwera aplikacji z kilku powodów:

  • Nie chcą wykorzystać czas przepustowości/pamięci/procesora służąc obrazów na żywo serwera aplikacji: chcesz z zastrzeżeniem, że dla aplikacji
  • to ułatwia skalowanie obrazu porcji, używając coś jak Amazon S3, dużego klastra serwera plików i/lub buforowania CDN
  • Typowe bazy danych nie są dobrze zoptymalizowane do przechowywania obrazów

Biorąc pod uwagę wszystkie powyższe, sugerowałbym zachowanie oddzielnych zdjęć i przechowywanie tylko ścieżki (lub identyfikatora wyszukiwania) obrazu w bazie danych.

+10

Hmm nie bierzesz rozważania MongoDB w kontekście tutaj, po prostu uderzaj całkiem domyślną odpowiedź, tak jakbyś używał obiektów BLOB w MySQL. – Sammaye

2

Wybierz drugą opcję

2.Storing Images in folder on server.And store only path of that image in database. 

W tym celu można użyć Gem mongoid-paperclip

To jest niesamowite klejnot i proste do wykonania.

Powiązane problemy