23

這是一個相當主題的問題,blob vs vs vs SQL,儘管我讀到目前爲止,但仍無法找到一些適當的推理什麼時候使用。Azure存儲入門:Blobs vs Tables vs SQL Azure

我們有一個多租戶SaaS的網絡應用程序,我們將要遷移到Azure上。我們使用SQL Server 2008數據庫。我們存儲屬於文檔的文檔和日誌信息。有點像保管箱一樣。

的論壇上指出,你最好使用Azure的表時,你正在考慮「大」的對象。我們通常爲每個用戶存儲數百個文檔,其中文檔的大小從5kb到30mb不等,其中絕大多數將在1MB左右?

是否有一些基本規則的時候去斑點,表時,SQL?我已經瞭解到,我不應該將文檔存儲在SQL中,因爲它太昂貴了。但是,它什麼時候將文檔存儲在Blob中是「有益的」,何時我會更好地使用表格?是否有某種公式一樣的:

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

+1

看看我的兩個答案類似的問題: 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

賀雅,非常感謝(在發佈我的問題之前,我發現其中有1人)。它有很多幫助,但仍然給我帶來了一個最終的問題:我應該爲經常檢索並且平均大小爲1MB-5MB的文檔尋找表格嗎?應用程序「全是關於文檔」,因此它們會經常被檢索。但是,我認爲你對交易的解釋可能適用。元數據將被更頻繁地檢索。所以,你會建議把在SQL Azure中的元數據,並存儲在表的文件? – bas

+0

更新的問題與你的輸入位 – bas

回答

18

我想伊格雷克已經解決了你的SQL Azure問題。雖然你似乎仍然有關於表格與斑點的問題。

在使用表存儲將是惱人的情況。 ATS中的每個屬性/列最多可以爲64KB,因此您必須將文檔分割到多個屬性中,然後重新組合它們。每個實體也有4MB的限制,這是一個問題。 Blob存儲沒有這些限制。

如果您的小實體具有許多需要單獨存儲和查詢的屬性,我傾向於使用Azure表存儲。因此,它適用於存儲對象或具有大量元數據的小文檔。

Blob存儲工作沒有一噸的元數據的事情做得更好。這對於文件系統上的文件可能工作得很好。

8

我將存儲文件本身在Azure的Blob存儲(不表存儲)。除了將文檔存儲在每兆(或更少取決於卷)收費一分錢的SQL Azure數據庫中相當昂貴的事實之外,SQL數據庫通常不適用於文檔。 SQL是一個關係數據庫,它提供了查詢,連接等功能的好處。在SQL數據庫中存儲大型文檔或圖像通常沒有任何好處,特別是當存儲的存儲系統非常便宜並且價格低廉時/訪問。

現在,如果您需要搜索文檔本身,我會使用Lucene.NET之類的功能來爲基於文檔的存儲庫提供搜索功能。

HTH

+0

我只想補充一點,對於元數據,如果需要運行鍼對各種各樣列的聚合查詢或查詢SQL可能是你最好的選擇。在所有其他情況Azure的表可能是最好的 – knightpfhor

+0

可以定義一套地面規則時去斑點和何時去表?我得到了1個一步現在,我不想文檔存儲在SQL,因爲它太貴了。 Thx。一些決策斑點/表的基本規則將受到高度讚賞。 – bas

+0

沒有基本規則。但我認爲Blob存儲是一個可擴展的文件系統。我通常是在文件系統存儲在傳統的內部部署的應用程序的數據,我會用BLOB存儲在Azure上。 SQL Azure和Table存儲之間的選擇大多是基於需要的規模。表存儲很難使用。比傳統的SQL更難使用。因此,只有在SQL Azure無法處理您的數據量或規模時才使用它(TableStorage)。 – Igorek