設定儲存體組織策略

已完成

在您設計需要儲存資料的應用程式時,請務必考慮應用程式要如何跨儲存體帳戶、容器與 Blob 來組織資料。

儲存體帳戶

單一儲存體帳戶具有足夠的彈性,可組織您的 Blob。 不過,您應該視需要使用更多的儲存體帳戶,以邏輯方式分隔成本並且控制資料的存取權。

容器和 Blob

應用程式及其所儲存資料的本質,應該驅動您命名和組織容器與 Blob 的策略。

使用 Blob 作為儲存體配置 (包含資料庫) 一部分的應用程式,通常不需要高度依賴組織、命名或中繼資料來表示有關其資料的任何內容。 這類應用程式通常會使用像是 GUID 的識別碼作為 blob 名稱,並在資料庫記錄中參考這些識別碼。 應用程式會使用資料庫來判斷 Blob 的儲存位置,以及其所包含的資料類型。

其他應用程式會以更像是個人檔案系統的方式使用 Azure Blob 儲存體。 容器和 Blob 名稱表示意義和結構。 這些應用程式中的 Blob 名稱通常看起來像傳統檔案名稱。 它們可以包含副檔名,例如 .jpg,以指出其包含的資料類型。 這類應用程式會使用虛擬目錄來組織 Blob。 它們經常使用中繼資料標記來儲存 Blob 和容器的相關資訊。

在決定如何組織和儲存 blob 和容器時,有幾個重要的事項要考慮。

命名限制

容器與 Blob 名稱必須符合一組規則,包括長度限制與字元限制。 如需有關命名規則的更具體資訊,請參閱本課程模組結尾處的進階閱讀一節。

公用存取與以容器作為安全性界限

根據預設,所有 Blob 都需要驗證才能存取。 不過,您可以設定個別容器,以允許未經驗證即可公開下載其 Blob。 公開下載支援許多使用案例,例如裝載靜態網站資產,以及共用檔案。 這種方法的運作方式,因為下載 Blob 內容的運作方式與透過 Web 讀取任何其他資料的方式相同。 您只需指向瀏覽器或任何可在 Blob URL 提出 GET 要求的任何項目。

啟用公用存取對於延展性而言很重要。 直接從 Blob 儲存體下載的資料不會在伺服器端應用程式中產生任何流量。 規劃將個別容器用於您想要公開使用的資料,即使您未立即允許公用存取或使用資料庫來控制資料存取也一樣。

警告

知道其儲存體 URL 的任何人不需任何類型的驗證或稽核,就可在設定來公用存取的容器中下載 Blob。 絕對不要將 Blob 資料放在您不想公開共用的公用容器中。

除了公用存取,Azure 還有共用的存取簽章功能,可讓您在容器上有更細緻的權限控制。 精確的存取控制可以實現進一步改善可擴縮性的案例,因此,將容器當成安全性界限來思考很有幫助。

Blob 名稱前置詞 (虛擬目錄)

容器為 一般檔案。 它們不支援任何類型的巢狀或階層。 如果您提供 blob 階層名稱,看起來像檔案路徑 (例如 finance/budgets/2017/q1.xls),API 的清單作業便可以將結果篩選成特定的前置詞。 此方法可讓您瀏覽清單,就像是檔案和資料夾的階層式系統一樣。

某些工具和用戶端程式庫會使用此方法,將 Blob 儲存體視覺化並瀏覽,就像是檔案系統一樣。 每次資料夾導覽都會觸發個別呼叫以列出該資料夾中的 Blob。 此功能通常稱為 虛擬目錄

注意

如果您啟用帳戶的階層命名空間功能,目錄就不再會是虛擬。 相反地,它們會變成您可以直接操作的具體獨立物件。 目錄可以在不包含任何檔案的情況下存在。 此課程模組僅描述 啟用階層命名空間功能的帳戶。

Blob 類型

有三種不同的 Blob 可以用來儲存資料:

  • 區塊 Blob 是由不同大小的區塊所組成,這些區塊可以獨立及平行地上傳。 寫入至區塊 Blob 牽涉到將資料上傳至區塊,並認可至 Blob。
  • 附加 Blob 是特殊化的區塊 Blob,只支援附加新資料 (不支援更新或刪除現有資料)。 但針對此用途,它們非常有效率。 附加 Blob 非常適合用於儲存記錄或寫入串流資料等案例。
  • 分頁 Blob 支援涉及隨機存取讀取和寫入的案例。 分頁 Blob 可用來儲存 Azure 虛擬機器所使用的虛擬硬碟 (VHD) 檔案。 它們非常適合任何牽涉到隨機存取的案例。

區塊 Blob 對於未特別需要附加或分頁 Blob 的大部分案例而言是最好的選擇。 以區塊為基礎的結構支援快速上傳及下載,以及有效率地存取 Blob 的個別部分。 大部分的用戶端程式庫都會自動管理和認可區塊。 有些也會處理平行上傳和下載項目,以將效能最大化。

檢定您的知識

1.

假設您需要儲存客戶的個人資料和訂購資訊。 您需要查詢資料以回答問題,例如「我的前 100 位客戶有哪些?」及「指定的地理區域中目前有多少位客戶?」。 是非題:Blob 儲存體是否為適用於此資料的選擇?

2.

Blob 提供「非結構化」的資料存放區。 「非結構化」是什麼意思?