6

Piszę nową aplikację w tej chwili i niektóre podmioty w aplikacji mają obrazy (używane tylko do celów wyświetlania na stronie internetowej).Przechowywanie obrazów - SQL DB w porównaniu do przechowywania Azure Blob

Chcę hostować moją aplikację na lazur później i staram się dowiedzieć, czy lepiej byłoby użyć magazynu Azure Blob do przechowywania wszystkich obrazów lub po prostu przechowywać je w DB?

Jaka jest lepsza wydajność podczas ładowania obrazów na stronie?

  • SQL: Controller -> DB -> WIDOK
  • Azure Blob: Controller -> Webcall do Azure DB -> ZOBACZ

Może ktoś proszę wyjaśnić korzyści albo roztworem do mnie, abym mogę się zdecydować?

+0

Nie wiem zbyt wiele o Azure dla hostingu, obrazy w bazach danych mogą być interesującym tematem. Utrzymanie referencyjnej integralności przechowywanie ich w DB jest ładne, ale wzdęcie rozmiaru DB z nimi nie jest również świetne. Myślisz, czy zamierzasz używać również lazurowych baz danych? Jeśli tak, moim założeniem byłoby to, że przechowywanie byłoby tańsze hostowanie ich w pamięci masowej Azure Blob zamiast płacenia za większe zasoby DB, ale to jest wyłącznie założenie ... – Matt

+0

Dzięki Matt, dobre punkty. Tak też będzie korzystać z Azure DB - a blob jest o wiele tańszy ... :) – Nik

+0

cóż, domyślam się, że sprowadza się to do tego, że jeśli wydajność jest do przyjęcia i przepraszam, ale nie mogę tego zważyć, ponieważ nie używam lazuru . Pozdrawiam – Matt

Odpowiedz

9

Sposób projektowania schematu przechowywania bazy danych jest subiektywny, ale w scenariuszu należy wziąć pod uwagę następujące czynniki: Obiektyw. Zajmę się nimi i pozostawiam ci "co powinienem wybrać" ...

Bloby Azure Storage są przeznaczone do masowych "bloków" danych (takich jak dokumenty, obrazy itp.). Coś jak Baza danych SQL jest zaprojektowana dla metadanych (rzeczy, które wyszukujesz/indeksujesz/zapytania).

Wszystko można zrobić za pomocą bazy danych SQL, a użytkownik musiałby jedynie martwić się zapytaniami SQL (i wygląda na to, że jest to coś, co już jest wam znane). Serwer SQL (i baza danych SQL) zawsze miał możliwość przechowywania treści binarnych za pośrednictwem typu BLOB.

Podczas gdy można przechowywać obrazy w bazie danych SQL, można zauważyć, że rozmiar bazy danych znacznie się zwiększa, a tylko przechowywanie metadanych, które można przetworzyć. I podczas gdy usługa SQL Database pozwala na skalowanie pamięci masowej, znajdziesz większą skalę w pamięci typu blob (do 500TB) przy niższym koszcie niż usługa bazy danych SQL. Jeśli uruchomisz program SQL Server w maszynie wirtualnej, nadal będziesz miał koszt pamięci masowej (dyski dołączone) równoważny z obiektami typu blob wraz z kosztami maszyny wirtualnej.

Same obiekty pamięci masowej nie udostępniają języka zapytań - należy znać nazwę kontenera i/lub kropli. Tak więc, aby uzyskać optymalne wyszukiwanie, będziesz potrzebował bazy danych z zapytaniami z metadanymi (np. Baza danych SQL).

Jeśli przechowujesz swoje obrazy w obiektach typu blob i odsyłasz je za pomocą identyfikatora URI do bazy danych, będziesz mógł przesłać zapytanie do bazy danych, znaleźć identyfikator URI obrazu, a następnie odpowiednio odczytać z magazynu blob.

Uwaga: w przypadku bloków BLOB możesz zapewnić bezpośredni dostęp do URI obrazu, np. Do przeglądarki lub aplikacji (nawet jeśli kropelka jest oznaczona jako prywatna), co pozwala następnie ominąć warstwę aplikacji dostarczając zawartość binarną (obrazkową) do użytkownika końcowego. Bloby mogą być również buforowane w CDN, czego nie można zrobić z bazą danych SQL.

Który wybierzesz zależy ostatecznie od Ciebie; Po prostu podałem obiektywne powody używania każdego z nich.

+0

Dziękuję bardzo za szczegółowe wyjaśnienie! Dam BLOBom szansę! :) – Nik

+0

@ user2118781 Jak poszło? Czy to działa dobrze? Ja też decyduję o tym samym. Pracuję nad aplikacją mobilną. –

+0

Poszedłem do przechowywania BLOB, aby przechowywać moje obrazy, itp. I działa idealnie! Nie zrobiłbym tego inaczej! – Nik

3

Znacznie taniej w BLOB.

Prawdopodobnie będziesz także dostawać szybszy transfer jako BLOB. Teraz początkowe wyszukiwanie może być trochę szybsze w przypadku SQL, ale w przypadku dużego obrazu, który wydaje mi się, że BLOB wygrałby. SQL nie jest zoptymalizowany pod kątem dużych rzeczy, a BLOB jest.

I zachowujesz SQL za darmo, aby podać krótkie rzeczy.

+0

Dziękuję bardzo za szczegółowe wyjaśnienie! Dam BLOBom szansę! :) – Nik

Powiązane problemy