すべてのプロダクト
Search
ドキュメントセンター

Object Storage Service:hierarchical namespaceを使用する

最終更新日:Feb 22, 2024

Object Storage Service (OSS) は、ディレクトリに基づいてマルチレベルの階層構造でオブジェクトを管理するための階層的な名前空間機能を提供します。 この機能を使用すると、単一のアトミック操作を実行して、ディレクトリまたはオブジェクトの名前を変更できます。 この方法では、名前に同じプレフィックスが含まれているすべてのオブジェクトをリストまたは処理する必要はありません。 従来、OSSはフラット名前空間を使用してオブジェクトをバケットに格納し、名前がスラッシュ (/) で終わるオブジェクトを使用してディレクトリをシミュレートしていました。 この方法と比較して、階層的な名前空間の機能は、ディレクトリ管理のパフォーマンスを大幅に向上させます。

メリット

  • ディレクトリのアトミック操作

    バケットが実際のディレクトリがサポートされていないフラットな名前空間を使用している場合、アプリケーションはディレクトリレベルでタスクを完了するために何百万ものオブジェクトを処理する必要があります。 対照的に、階層的な名前空間機能がバケットに対して有効になっている場合、アプリケーションは単一のアトミック操作で親ディレクトリを更新して、複数のディレクトリレベルのタスクを同時に完了することができます。

  • 最適化されたパフォーマンス

    フラットな名前空間と比較して、階層的な名前空間は、データが分析される前にデータを複製または変換する必要性を排除する。 これにより、ディレクトリ管理のパフォーマンスが向上します。 階層的な名前空間機能は、ビッグデータ分析フレームワークにとって特に重要です。 たとえば、HiveまたはSparkは、タスクの実行中に出力結果を一時ディレクトリに書き込み、タスクの完了後にディレクトリの名前を変更します。 フラット名前空間では、通常、ディレクトリの名前を変更するために消費される時間は、タスクを実行するために消費される時間よりも長くなります。

手順

  1. 階層名前空間を有効にします。

    バケットの階層名前空間機能は、バケットを作成する場合にのみ有効にできます。 階層的な名前空間機能は、バケットに対して有効になった後は無効にできません。 階層名前空間を有効にする方法の詳細については、「バケットの作成」をご参照ください。

  2. 階層的な名前空間機能が有効になっているバケットに対して、ディレクトリレベルの操作を実行します。

    次の表に、階層名前空間機能が有効になっているバケット内のディレクトリの作成、名前変更、または削除に使用できる方法を示します。

    実装方法

    説明

    OSS コンソール

    ユーザーフレンドリーで直感的なwebアプリケーション

    Java SDK

    シンプルで使いやすいSDKデモ

使用上の注意

  • サポートされるリージョン

    階層的な名前空間機能は、オーストラリア (シドニー) 、米国 (シリコンバレー) 、日本 (東京) 、インド (ムンバイ) 、英国 (ロンドン) 、マレーシア (クアラルンプール) の各リージョンでのみ使用できます。

  • ディレクトリの作成

    ディレクトリ名に連続したスラッシュ (/) を含めることはできません。

    ディレクトリにデータを書き込むことはできません。 ディレクトリのContent-Lengthは0にのみ設定できます。

    ディレクトリのContent-Typeは、application/x-directoryにのみ設定できます。

  • ディレクトリまたはオブジェクトの名前変更

    名前が変更されたディレクトリまたはオブジェクトの名前は、同じバケット内の既存のディレクトリまたはオブジェクトの名前と同じにすることはできません。

    名前が変更されたディレクトリまたはオブジェクトの名前に含まれる親ディレクトリが存在する必要があります。 たとえば、ディレクトリ名をdestfolder/examplefolder/testに変更した場合、親ディレクトリdestfolder/examplefolderがバケットに存在する必要があります。

  • ディレクトリの削除

    • 再帰的削除

      再帰的削除は、ディレクトリとディレクトリ内のすべてのオブジェクトおよびサブディレクトリを削除するために使用されます。 再帰的削除を使用するには、ディレクトリと、削除するディレクトリ内のすべてのオブジェクトおよびサブディレクトリに対するDeleteObjectアクセス許可が必要です。

      たとえば、再帰的削除を使用してdest/testfolderディレクトリとそのディレクトリ内のオブジェクトを削除する場合は、dest/testfolderおよびdest/testfolder/* に対するDeleteObject権限が必要です。

      重要

      再帰的削除メソッドを使用してディレクトリを削除するときに、ディレクトリにデータを書き込むための同時要求が送信されると、ディレクトリの削除に失敗する可能性があります。

    • 非再帰的削除

      非再帰的削除は、空のディレクトリを削除するために使用されます。 再帰的でない削除を使用するには、削除するディレクトリに対してDeleteObjectアクセス許可が必要です。

サポートされていない機能

次の表に、階層的な名前空間機能が有効になっているバケットでサポートされていない機能を示します。

カテゴリ

説明

バケットの特徴

  • クロスリージョンレプリケーション (CRR)

  • バージョン管理

  • バケット在庫

  • CORS (Cross-Origin Resource Sharing)

  • 静的 Web サイトホスティング

  • ライフサイクルルール

  • 保持ポリシー

  • 転送アクセラレーション

オブジェクトの特徴

  • 象徴的なリンク

  • 追加アップロード

  • アクセス制御リスト (ACL) とタグ付け

  • イメージ処理 (IMG)

  • アーカイブとコールドアーカイブオブジェクト

  • Callback

  • アーカイブオブジェクトとコールドアーカイブオブジェクトの復元に使用されるRestoreObject操作

  • オブジェクトが同じ名前の別のオブジェクトによって上書きされないようにするために使用されるx-oss-forbid-overwriteパラメーター。

  • クエリディレクトリに送信されるGetObjectリクエストのresponse-content-* パラメーター

  • LiveChannelに関連する操作

  • オブジェクトのバッチ削除に使用されるDeleteMultipleObjects操作

  • オブジェクトからコンテンツを選択するために使用されるSelectObject操作