全部產品
Search
文件中心

Object Storage Service:使用階層命名空間

更新時間:Nov 26, 2024

OSS階層命名空間功能,將對象(Object)組織到多級目錄層級結構中,使得重新命名目錄或檔案成為單個原子操作,無需列舉和處理共用目錄名稱首碼的所有對象。與原Bucket內部扁平命名空間中使用正斜線+檔案名稱的方式類比檔案夾相比,階層命名空間功能極大地提高了目錄管理操作的效能。

功能優勢

  • 原子目錄操作

    在OSS扁平命名空間沒有真實目錄的情況下,應用程式可能需要處理數百萬個單獨的對象才能完成目錄級任務。 相比之下,階層命名空間可通過更新單個父目錄批量處理多個任務。

  • 效能最佳化

    與OSS扁平命名空間相比,階層命名空間不需要在分析資料前,對資料進行複製或轉換,因此極大地提高了目錄管理操作的效能。階層命名空間對於巨量資料分析架構尤為重要,例如Hive、Spark等工具在作業過程中通常將輸出結果寫入臨時路徑,然後在作業結束時需要對該位置進行重新命名。 如果沒有階層命名空間,該情境下重新命名操作通常比分析過程本身更耗時。

操作步驟

  1. 開啟階層命名空間。

    僅允許在建立Bucket時開啟階層命名空間功能,且開啟後不支援關閉。開啟階層命名空間的具體操作,請參見建立儲存空間

  2. 在階層命名空間的Bucket中執行目錄層級的相關操作。

    您可以通過以下兩種方式在開啟了階層命名空間的Bucket中建立目錄、並進行目錄的重新命名或刪除操作。

    操作方式

    說明

    控制台

    Web應用程式,直觀易用

    Java SDK

    簡單易用的SDK demo

注意事項

  • 支援地區

    目前僅支援在美國(矽谷)、日本(東京)、英國(倫敦)、馬來西亞(吉隆坡)地區開啟階層命名空間。

  • 建立目錄

    設定的目錄絕對路徑(DirectoryName)中不能出現連續的正斜線(/)。

    目錄不支援傳入資料,目錄的Content-Length固定為0。

    目錄的Content-Type固定為application/x-directory,無法修改。

  • 重新命名目錄或檔案

    重新命名後的目錄或檔案不能與同一個Bucket下已存在的目錄或者檔案重名。

    重新命名後的目錄或檔案,其父級目錄必須存在。例如目錄重新命名為destfolder/examplefolder/test,則Bucket中必須存在destfolder/examplefolder

  • 刪除目錄

    • 遞迴刪除

      遞迴刪除用於刪除目錄下的檔案和子目錄。使用遞迴刪除方式刪除目錄時,您必須擁有目錄以及該目錄下所有檔案和子目錄的DeleteObject許可權。

      例如要遞迴刪除dest目錄下的子目錄testfolder及其包含的所有檔案,您必須擁有dest/testfolderdest/testfolder/*DeleteObject許可權。

      重要

      使用遞迴刪除方式刪除目錄時,如果同時存在向目錄的並發寫請求,則可能導致目錄刪除失敗。

    • 非遞迴刪除

      非遞迴刪除用於刪除空目錄。使用非遞迴方式刪除目錄時,您必須擁有目錄的DeleteObject許可權。

不支援的功能

在開啟了階層命名空間的Bucket中,不支援使用以下功能:

分類

說明

Bucket層級的功能

  • 跨地區複製

  • 版本控制

  • 儲存空間清單

  • 跨域資源共用

  • 靜態網站託管

  • 生命週期

  • 合規保留原則

  • 傳輸加速

Object層級的功能

  • 軟連結

  • 追加上傳

  • 目錄不支援讀寫權限(ACL)和標籤(Tagging)

  • 圖片處理

  • 儲存類型為歸檔或冷歸檔

  • 回調(Callback)

  • 解凍歸檔或冷歸檔檔案(RestoreObject

  • 禁止覆蓋同名檔案參數(x-oss-forbid-overwrite

  • 通過GetObject擷取目錄時不支援設定response-content-*

  • LiveChannel相關操作

  • 大量刪除(DeleteMultipleObjects

  • 選取檔案(SelectObject