Skalowalne przechowywanie obrazów

Obecnie projektuję architekturę aplikacji internetowej, która powinna również zapewniać pewien rodzaj przechowywania obrazów. Użytkownicy będą mogli przesyłać zdjęcia jako jedną z kluczowych funkcji usługi. Również przeglądanie tych obrazów będzie jednym z głównych zastosowań (za pośrednictwem Internetu).

Nie wiem jednak, jak zrealizować taki skalowalny komponent do przechowywania obrazów w mojej aplikacji. Myślałem już o różnych rozwiązaniach, ale z powodu brakujących doświadczeń czekam na wasze sugestie. Oprócz obrazów, meta dane muszą być zachwycone. Oto moje pierwsze myśli:

Użyj (rozproszonego) systemu plików, takiego jak HDFS i przygotuj dedykowane serwery WWW jako „klientów systemu plików”, aby zapisać przesłane obrazy i żądania usługi. Metadane obrazu są zapisywane w dodatkowej bazie danych, w tym informacje o ścieżce do pliku dla każdego obrazu.

Używaj systemu zorientowanego na BigTable, takiego jak HBase, na HDFS i zapisuj razem obrazy i metadane. Ponownie serwery WWW łączą przesyłane i żądane obrazy.

Użyj całkowicie bezproblemowej bazy danych, takiej jak CouchDB, do przechowywania zarówno obrazów, jak i metadanych. Ponadto użyj samej bazy danych do przesyłania i usuwania przy użyciu opartego na HTTP interfejsu RESTful API. (Dodatkowe pytanie: CouchDB zapisuje obiekty blob przez Base64. Czy może jednak zwrócić dane w postaci obrazu / JPEG itp.)?

questionAnswers(11)

yourAnswerToTheQuestion