23

To dość ciekawy temat, bloby kontra tabele vs SQL, i mimo wszystko, co czytałem do tej pory, wciąż nie mogę znaleźć odpowiedniego uzasadnienia, kiedy należy go używać.Pierwsze kroki z pamięcią masową Azure: Blobs vs Tabele vs SQL Azure

Mamy aplikację internetową SaaS dla wielu dzierżawców, którą zamierzamy przenieść na Azure. Używamy bazy danych SQL Server 2008. Przechowujemy dokumenty i informacje dziennika, które należą do dokumentów. Podobnie jak w Dropbox.

Na forach podano, że lepiej używać tabel Azure, gdy rozważa się "duże" obiekty. Zwykle przechowujemy setki dokumentów na użytkownika, gdzie rozmiar dokumentów waha się od 5kb do 30mb, gdzie ogromna większość będzie około 1MB?

Czy istnieją pewne podstawowe zasady, kiedy należy wybrać Bloby, Tabele, Sql? Dowiedziałem się już, że nie powinienem przechowywać moich dokumentów w SQL, ponieważ jest on zbyt drogi. Ale kiedy robi się "korzystne" przechowywanie dokumentów w Blobach i kiedy lepiej mi się przy stołach? Czy istnieje jakiś wzór jak:

if (objects * MB/object * objectrequested > y) then blobs, else tables

+1

Sprawdź moje dwie odpowiedzi na podobne pytania: http://stackoverflow.com/questions/4930368/when-should-i-use-sql-azure-and-when-should-i-use- table-storage/4930557 # 4930557 http://stackoverflow.com/questions/11540516/azure-mvc-web-app-architecture-how-to-split-data-between-sql-azure-and-azure/11541394 # 11541394 – Igorek

+0

Heya, wielkie dzięki (znalazłem 1 z nich, zanim napisałem moje pytanie). To bardzo pomaga, ale nadal pozostawia mi pytanie: czy powinienem przejść do tabel dla dokumentów, które są często pobierane i mają średni rozmiar 1 MB-5 MB? W aplikacji "chodzi przede wszystkim o dokumenty", więc będą one często pobierane.Ale myślę, że twoje wyjaśnienie transakcji może mieć zastosowanie. Dane meta będą pobierane dużo częściej. Czy sugerowałbyś umieszczenie metadanych w Sql Azure i przechowywanie dokumentów w tabelach? – bas

+0

zaktualizował pytanie nieco ze swoim wejściem – bas

Odpowiedz

18

Myślę, że Igorek zajął się swoimi obawami SQL Azure. Wygląda jednak na to, że nadal masz pytania dotyczące Tabeli kontra Blobów.

W twoim przypadku korzystanie z Przechowywania tabeli byłoby denerwujące. Każda właściwość/kolumna w ATS może mieć maksymalnie 64 KB, więc trzeba podzielić dokumenty na wiele właściwości, a następnie ponownie je połączyć. Istnieje również limit 4 MB na jednostkę, co stanowiłoby problem. Magazyn Blob nie ma żadnych z tych ograniczeń.

Zwykle korzystałbym z funkcji przechowywania tabel Azure, gdy masz małe obiekty z wieloma właściwościami, które należy oddzielnie przechowywać i sprawdzać. Więc działa dobrze dla przechowywanych obiektów lub małych dokumentów z dużą ilością metadanych.

Pamięć masowa typu blob działa lepiej w przypadku rzeczy bez mnóstwa metadanych. To jest dobre dla rzeczy, które mogą dobrze działać jako pliki w systemie plików.

8

chciałbym zapisać się do przechowywania dokumentów w Azure Blob (nie przechowywania tabela). Poza tym, że przechowywanie dokumentów w bazie danych SQL Azure kosztuje dość pensa za meg (lub mniej w zależności od objętości), baza danych SQL nie jest dobrym miejscem na dokumenty. SQL to relacyjna baza danych, która zapewnia korzyści w zakresie tworzenia zapytań, łączenia itp. Zwykle nie ma korzyści z przechowywania dużych dokumentów lub obrazów w bazie danych SQL, zwłaszcza gdy istnieje wysoce skalowalny centralny system pamięci masowej, który jest dość tani w przechowywaniu /dostęp.

Teraz, jeśli chcesz przeszukać same dokumenty, użyłbym czegoś takiego jak Lucene.NET, aby zapewnić możliwość wyszukiwania dla repozytorium opartego na dokumentach.

HTH

+0

Po prostu dodałbym to dla metadanych, jeśli potrzebujesz uruchamiaj zapytania agregacyjne lub zapytania w szerokiej gamie kolumn SQL prawdopodobnie najlepiej. We wszystkich innych przypadkach Tabele Azure są prawdopodobnie najlepsze. – knightpfhor

+0

Czy można zdefiniować zestaw reguł podstawowych, kiedy należy przejść do obiektów typu blob i kiedy należy przejść do tabel? Mam teraz krok dalej, nie chcę przechowywać dokumentów w SQL, ponieważ jest zbyt drogi. Thx za to. Niektóre podstawowe zasady dotyczące bloków/tabel decyzyjnych byłyby wysoko cenione. – bas

+0

Nie ma podstawowych zasad. Ale uważam, że pamięć Blob jest skalowalnym systemem plików. Dane, które zwykle przechowuję w systemie plików w tradycyjnej aplikacji lokalnej, używałbym pamięci Blob na Azure. Wybór między SQL Azure i przechowywaniem tabel opiera się głównie na konieczności skalowania. Przechowywanie tabel jest trudne w użyciu. Znacznie trudniejsze w użyciu niż tradycyjny SQL. Dlatego używaj go tylko (TableStorage), gdy SQL Azure nie może obsłużyć twojego wolumenu lub twojej skali. – Igorek