/ / Съхраняване на изображения - SQL DB срещу Azure Blob съхранение - sql, azure, azure-sql-database, azure-storage, azure-storage-blobs

Съхранение на изображения - SQL DB vs Azure Blob съхранение - sql, azure, azure-sql база данни, azure-storage, azure-storage-blobs

В момента пиша ново заявление и определени субекти в заявката имат изображения (използвани за показване на уебсайта).

Искам да бъде домакин на молбата ми по-късно и аз се опитвам да разбера дали би било по-добре да използваме Azure Blob съхранение, за да съхранява всички изображения или просто да ги съхранява в DB?

Какво е по-добро представяне при зареждане на изображенията на уебсайта?

  • SQL: Контролер -> DB -> VIEW
  • Azure Blob: Контролер -> Webcall към Azure DB -> VIEW

Може ли някой да обясни ползите от решението за мен, така че да мога да взема решение?

Отговори:

12 за отговор № 1

Как проектирате схемата за съхранение на базата данни е субективно, но има обективен неща, които трябва да вземете под внимание във вашия сценарий. Ще се обърна към тях и ще ви оставя "кой да избера" ...

Azure Storage blobs са предназначени за насипни "блокови" данни (като документи, изображения и т.н.). Нещо като SQL база данни е предназначено за метаданни (неща, които търсите / индексирате / заявявате).

Всичко може да се направи чрез база данни SQL и виесамо трябва да се притеснявате за SQL заявки (и това звучи така, че вече сте запознати). SQL Server (и SQL базата данни) винаги са имали възможността да съхраняват двоично съдържание чрез неговия тип BLOB.

Докато ти мога съхранявайте изображенията си в базата данни SQL, ще намеритече размерът на вашата база данни се увеличава значително, срещу просто запаметяване на метаданни за търсене. И докато услугата SQL Database ви позволява да мащабирате вашето хранилище, ще намерите по-голям мащаб в хранилището с петна (до 500 TB) на по-ниска цена от услугата SQL Database. разходите за съхранение (свързани дискове), еквивалентни на петна, заедно с разходите за VM.

Съхраняващите петна, сами по себе си, не осигуряватquery language - ще трябва да знаете името на контейнера и / или blob. Затова, за оптимално търсене, Вие ще искате база данни с вашите метаданни (например SQL база данни).

Ако съхранявате изображенията си в петна и ги споменавате чрез URI в базата си данни, ще можете да отправяте запитвания към базата данни, да намирате URI на изображението и след това да ги четете от съответното хранилище.

Също така имайте предвид: С петна ще можете да предоставите директен URI достъп до, да речем, браузър или приложение (дори ако петното е маркирано като частно), което ви позволява да заобикаляте нивото на приложението, когато доставяте двоично Blobs също могат да бъдат кеширани в CDN, което не можете да правите с SQL Database.

Което избирате в крайна сметка зависи от вас; Просто предоставих обективни причини да използвам всяка от тях.


4 за отговор № 2

Много по-евтино в BLOB.

Вие също вероятно ще се получи по-бързопрехвърляне като BLOB. Сега първоначалното търсене може да е малко по-бързо с SQL, но за голямо изображение мисля, че BLOB ще спечели. SQL просто не е оптимизиран за големи неща и BLOB е.

И вие поддържате SQL свободен да обслужвате кратки неща.