6

我正在編寫一個新的應用程序,並且應用程序中的某些實體具有圖像(僅用於在網站上顯示)。存儲圖像 - SQL DB與Azure Blob存儲

我想稍後在Azure上託管我的應用程序,並試圖弄清楚使用Azure Blob存儲來存儲所有圖像還是將它們存儲在數據庫中會更好?

在網站上加載圖像時性能更好的是什麼?

  • SQL:控制器 - >數據庫 - >查看
  • Azure的斑點:控制器 - > Webcall天青DB - >查看

可能有人請解釋這兩種解決方案的好處我,讓我可以做出我的想法?

+0

我不太瞭解Azure的託管,數據庫中的圖像可能是一個有趣的話題。保持引用完整性將它們存儲在數據庫中是很好的,但是用它們來擴展數據庫大小也不是很好。一個想法,你打算使用天藍數據庫嗎?如果是這樣,我的假設是存儲將更便宜的託管他們在Azure Blob存儲,而不是支付更大的數據庫資源,但這純粹是一個假設...... – Matt

+0

感謝馬特,好點。是的,也會使用Azure DB以及blob是def便宜... :) – Nik

+0

那麼我想它歸結爲如果性能是可以接受的,我很抱歉,但我無法衡量,因爲我不使用天青。歡呼聲 – Matt

回答

9

你如何設計你的數據庫存儲方案是主觀的,但有目標在你的方案中要考慮的事情。我將解決這些問題,並將「應該選擇哪一個」留給您...

Azure存儲blob是爲大塊「塊」數據(如文檔,圖像等)設計的。像SQL數據庫是爲元數據(你搜索/索引/查詢)設計的。一切都可以通過SQL數據庫來完成,你只需要擔心SQL查詢(這聽起來像你已經熟悉的東西)。 SQL Server(和SQL數據庫)一直有能力通過BLOB類型存儲二進制內容。

雖然你可以存儲您的圖像在SQL數據庫中,你會發現你的數據庫大小增加相當多,而只是存儲可查詢元數據。雖然SQL數據庫服務允許您擴展您的存儲空間,但您會發現在較之SQL數據庫服務成本更低的情況下,您可以在BLOB存儲(最高500TB)中找到更大規模的存儲空間。如果您在虛擬機中運行SQL Server,那麼您仍將具有與blob相當的存儲成本(連接磁盤)以及VM成本。

存儲斑點,本身並沒有提供查詢語言 - 你需要知道的容器和/或BLOB名稱。因此,爲了優化搜索,您需要一個包含元數據的可查詢數據庫(例如SQL數據庫)。

如果存儲在斑點您的圖像,並通過URI在數據庫中引用它們,你就可以對查詢數據庫,找出圖像的URI,然後適當地從Blob存儲讀取。

另請注意:使用blob,您將能夠直接提供對瀏覽器或應用程序的圖像URI訪問權限(即使該blob被標記爲私有),從而允許您繞過應用程序層向最終用戶提供二進制(圖像)內容時。 Blob也可以緩存在CDN中,這是SQL數據庫無法做到的。

你選擇哪一個最終取決於你;我只是提供了使用它們的客觀原因。

+0

非常感謝您的詳細解釋!我會給BLOB一個去! :) – Nik

+0

@ user2118781它是怎麼回事?它工作正常嗎?我也決定同樣的事情。我正在開發移動應用程序。 –

+0

我去BLOB存儲來存儲我的圖像等,它完美的作品!不會這樣做! – Nik

3

在BLOB中便宜得多。

您也可能將獲得更快的轉換爲BLOB。現在,使用SQL進行初始查找可能會快一點,但對於我認爲BLOB會贏的大型映像而言,可能會更快。 SQL對於大的東西並沒有經過優化,而BLOB是。

你可以保持SQL免費提供短的東西。

+0

非常感謝您的詳細解釋!我會給BLOB一個去! :) – Nik