2013-09-24 13 views
5

W aplikacji, która zostanie wdrożona na heroku ...Dlaczego nie przechowywać plików w bazie danych?

Muszę zezwolić użytkownikom na przesyłanie miniaturek.

Oczywiście aplikacja wdrożona w heroku nie ma stałego lokalnego magazynu plików.

Typową rzeczą do zrobienia w tym miejscu, wydaje się być przechowywanie plików w Amazon S3, lub prawdopodobnie w innym chmurze przechowywanym na serwerze AWS.

Ale co, jeśli po prostu przykleję obrazy do kolumny z kropelkami po Gres?

Jakie są wady takiego postępowania? Zaletami są, nie muszą płacić za inne pamięci masowej, nie mają do czynienia z dodatkowym systemem zewnętrznym z większymi możliwościami błędów i przestojów. Ale muszą istnieć dobre powody, dla których nikt nie robi tego, co to jest?

Odpowiedz

4

Baza danych i S3 to dwa różne mechanizmy przechowywania. Czym się różnią?

O S3

Amazon S3 jest wysoce wyspecjalizowany system przechowywania plików. Minimalizuje to, co można zrobić w podstawowych operacjach odczytu/zapisu/usuwania plików i optymalizuje buforowanie w celu wyświetlenia danych z całego przechowywanego pliku.

O PostgreSQL

PostgreSQL jest relacyjna baza danych SQL z ogromnej elastyczności przechowywania i indeksowania danych dla różnych operacji. Możesz bardzo dobrze wtłaczać dane obrazu binarnego do wiersza w PostgreSQL.

Porównując koszt/skalowalność

Dlaczego wybrałbyś S3 nad PostgreSQL? Koszt i skalowalność. Postgres to drogi, wysoko wykwalifikowany specjalista. Na Heroku prowadzenie bazy danych Postgres może kosztować setki lub tysiące dolarów miesięcznie w zależności od ilości danych i skali ruchu.

Amazon S3 to niedrogie i wysoce skalowalne rozwiązanie, które idealnie pasuje do Twoich potrzeb (napisz obraz, wyświetl obraz w kontekście strony internetowej).

TL; DR: Amazon S3 jest wysoce zoptymalizowany pod kątem plików takich jak obrazy, wysoce skalowalny i stosunkowo niedrogi.

+0

Jakieś przemyślenia na temat ważnych danych, które nie powinny być widoczne publicznie? – abimelex

Powiązane problemy