このページでは、階層型名前空間の概要、主な機能、一般的なユースケース、メリットと考慮すべき制限事項について説明します。
概要
階層型名前空間は、Cloud Storage が提供する機能であり、オブジェクトをフォルダに整理できます。階層型名前空間を使用すると、データを論理ファイル システム構造に保存できます。ファイル システム構造でデータを整理すると、パフォーマンスが向上し、整合性が確保され、データ集約型ワークロードとファイル指向ワークロードの管理が簡素化されます。
フォルダ管理オペレーションは、フォルダの作成、削除、一覧表示、名前変更など、信頼性を確保し管理機能を提供します。オブジェクトを階層化して整理することにより、データの編成が簡素化され、データ マネジメントのタスクが合理化されます。階層型名前空間が有効になっているバケットのフォルダには、オブジェクト、他のフォルダ、またはそれらの両方を格納できます。
階層型名前空間を使用するかどうかは、バケットの作成時に選択する必要があります。バケットの作成後にバケットの階層型名前空間の設定を変更することはできません。バケットで階層型名前空間を有効にする方法については、階層型名前空間を有効にしてバケットを作成、管理するをご覧ください。
次の図は、階層型名前空間が有効になっているバケットの例を示しています。オブジェクトは、フォルダの階層構造で整理されています。
主な機能
階層型名前空間には、次の機能があります。
初期の秒間クエリ数(QPS)の増加: 階層型名前空間が有効になっているバケットでは、階層型名前空間が有効になっていないバケットと比較して、オブジェクトの読み取りと書き込みの初期 QPS 上限が最大 8 倍になります。初期 QPS が高いと、データ集約型ワークロードのスケーリングが容易になり、スループットが向上します。階層型名前空間が有効になっているバケットでフォルダを使用する際のパフォーマンスの最適化方法については、フォルダ管理をご覧ください。
フォルダ: フォルダはオブジェクトや他のフォルダのコンテナとして機能し、フォルダの作成、削除、取得などのオペレーションをサポートします。
フォルダの名前を変更する: フォルダの名前変更オペレーションを使用すると、オブジェクトを削除することなく、フォルダとその配下にあるフォルダのパスの名称をアトミックに変更できます。この方法は、特に複数のオブジェクトを含む大きなフォルダの場合に、効率的であり時間を節約できます。
フォルダを一覧表示する: フォルダの一覧表示オペレーションでは、バケット内または特定のフォルダの配下にあるすべてのフォルダを一覧表示します。これにより、バケット内に保存されているデータの構造を管理して理解できます。
バケットで階層型名前空間を有効にするタイミング
ファイル システムのような階層とセマンティクスを想定するアプリを使用する場合は、階層型名前空間を有効にすることを検討してください。階層型名前空間は、分析、AI、ML ワークロードなどのデータ集約型のタスクに対して有効です。階層型名前空間の使用を検討すべき一般的なシナリオを次に示します。
Hadoop ベースの処理: Hadoop と Spark のワークロードでは、従来、ファイル システムのようなストレージ構造と、ファイルとフォルダの時刻ベースの命名が想定されてきました。階層型名前空間は Cloud Storage コネクタと統合されており、スループットの向上とフォルダ名のアトミックな変更が可能になり、多くのデータ処理パイプラインでデータの完全性と整合性が向上します。
ファイル指向のワークロード処理: バッチ分析処理、金融サービス、ハイ パフォーマンス コンピューティングなどのワークロードは、フォルダとファイルの階層に基づいてパーティションに編成されます。階層型名前空間は、フォルダ管理専用の API を使用してこれらの環境を管理するのに有効です。また、階層型名前空間を使用すると、他のフォルダやオブジェクトを含むフォルダの管理を簡素化できます。1 つの API コマンドで、フォルダとそのすべてのコンテンツの名前をすばやく変更できるため、貴重な時間とリソースを節約できます。
AI と ML の処理: TensorFlow、Pandas、PyTorch などの AI ツールと ML ツールは、ファイル システムのようなアクセスとセマンティクスを想定しています。階層型名前空間は、特に Cloud Storage FUSE と組み合わせることで、スループットの向上と効率的なデータアクセスを実現します。その結果、階層型名前空間により、ML モデルの反復処理のパフォーマンスと信頼性が向上します。
バケットで階層型名前空間を有効にする前に、階層型名前空間の制限事項を考慮する必要があります。階層型名前空間の制限事項については、制限事項をご覧ください。
階層型名前空間のメリット
バケットで階層型名前空間を有効にすると、次のことができます。
最適な整理を実現: データを階層的なフォルダ構造に整理して、ファイルやデータセットの管理と検索を容易にします。
ファイル システムのようなエコシステムを確立する: 階層型名前空間では、フォルダ、フォルダの名前変更、フォルダの一覧表示などのファイル システムのような機能が導入されます。これらの機能は、Hadoop エコシステムや AI / ML ワークロードなどのファイル指向のアプリケーションに対して有効です。
パフォーマンスの向上: データ集約型のワークロードをスケーリングしてスループットを向上させることで、アプリケーションの全体的なパフォーマンスを改善できます。
プラットフォーム サポート
階層型名前空間を持つバケットは、次の Cloud Storage プラットフォーム機能をサポートしています。
すべての Cloud Storage オブジェクト API と、広く使用されている Cloud Storage 機能。サポートされていない機能の詳細については、制限事項をご覧ください。
Storage Transfer Service を使用して、標準バケットから階層型名前空間を持つバケットにデータを転送します。
次のサービスとのインテグレーション:
Cloud Storage コネクタ。Hadoop ワークロード用に Dataproc によって管理されます。詳細については、Hadoop ワークロードに階層型名前空間対応のバケットを使用するをご覧ください。
クライアントを使用してファイル システムのようなバケット アクセスを行うための Cloud Storage FUSE。
Cloud Storage のオペレーションと機能との互換性
階層型名前空間が有効になっているバケットは、他の Cloud Storage オペレーションと次のように相互作用します。
オブジェクト オペレーション
階層型名前空間が有効になっているバケットは、次の方法でオブジェクト オペレーションを処理します。
- 必要な権限がある限り、
Upload
、Rewrite
、Compose
などのオペレーションでは、不足している親フォルダが自動的に作成されます。そのため、オブジェクトをアップロードする前にフォルダを事前に作成する必要はありません。 - フォルダはオブジェクト オペレーション中に自動的に作成できますが、削除するには
DeleteFolder
オペレーションを使用して明示的に行う必要があります。 delimiter
パラメータでListObjects
オペレーションを使用すると、バケットは各子フォルダをprefix.
として返します。ただし、空のフォルダはデフォルトで除外されます。通常のファイル システムのリストと同様に空のフォルダを含めるには、includeFoldersAsPrefixes
パラメータを設定する必要があります。階層型名前空間が有効になっているバケット内のオブジェクトを一覧表示する際のパフォーマンス最適化方法については、オブジェクトの一覧表示をご覧ください。
マネージド フォルダのオペレーション
階層型名前空間が有効になっているバケットは、マネージド フォルダのオペレーションを次のように処理します。
- 階層型名前空間が有効になっているバケットでは、マネージド フォルダを介してきめ細かいアクセス制御を行うことができます。フォルダ内のアクセスを管理するには、フォルダと同じ名前のマネージド フォルダを作成し、IAM ポリシーを適用する必要があります。マネージド フォルダは、対応するフォルダがなければ存在できません。
- マネージド フォルダを作成すると、同じ名前のフォルダなど、不足している親フォルダが自動的に作成されます。
- フォルダを削除すると、関連付けられたマネージド フォルダも自動的に削除されます。
- フォルダの名前を変更すると、関連するマネージド フォルダの名前も自動的に変更されます。
- 階層型名前空間を持つバケットは、マネージド フォルダ名の規則とフォルダ名の規則に従う必要があります。フォルダ名は最大 50 レベルまでネストできますが、マネージド フォルダ名は最大 15 レベルまでしかネストできません。マネージド フォルダ名の最大サイズは、フォルダ名の最大サイズによって制限されます。UTF-8 エンコードの場合、最大サイズは 512 バイトです。
バケット オペレーション
階層型名前空間が有効になっているバケットを削除する方法は、他のバケットと同じです。階層型名前空間が有効になっているバケットに空のフォルダのみが含まれ、オブジェクトやマネージド フォルダが含まれていない場合は、バケットを削除できます。
オブジェクトのライフサイクル管理
オブジェクトのライフサイクル管理を使用すると、経過時間や接頭辞などの条件に基づいてオブジェクトに対するアクションを自動化できます。ただし、RenameFolder
オペレーションにより、階層型名前空間が有効になっているバケットとフラットな名前空間を使用するバケットで、オブジェクトのライフサイクル管理ルールの動作が異なる場合があります。
フラットな名前空間を使用するバケットのオブジェクトのライフサイクル管理ルール: 名前変更オペレーションでは、すべてのオブジェクトを宛先の場所にコピーし、元のオブジェクトを元の場所から削除することで、ツールを使用してすべてのオブジェクトの名前を変更します。その結果、宛先の場所に新しい作成時間の新しいオブジェクトが作成されます。宛先の場所に経過時間に基づいたオブジェクトのライフサイクル管理ルールが適用されている場合、作成時間がリセットされるため、新しいオブジェクトにはすぐに適用されません。
階層型名前空間が有効になっているバケットのオブジェクトのライフサイクル管理ルール: フォルダの名前変更はフォルダレベルで行われるため、オブジェクトごとに名前を変更する必要はありません。その結果、オブジェクトの作成時間が保持されます。つまり、名前が変更されたオブジェクトが経過時間の条件を満たしている場合、経過時間に基づいたオブジェクトのライフサイクル管理ルールがすぐに適用されます。
料金
料金については、Cloud Storage の料金をご覧ください。
制限事項
階層型名前空間には次の制限事項があります。
階層型名前空間を使用するかどうかは、バケットの作成時に選択する必要があります。バケットの作成後にバケットの階層型名前空間の設定を変更することはできません。
階層型名前空間を有効にするには、バケットで均一なバケットレベルのアクセスも有効にする必要があります。
階層型名前空間を使用するバケットでは、次の Cloud Storage 機能がサポートされていません。
- Autoclass
- オブジェクトのバージョニング
- オブジェクト保持ロック
- バケットロック
次のステップ
使ってみる
Google Cloud を初めて使用する場合は、アカウントを作成して、実際のシナリオでの Cloud Storage のパフォーマンスを評価してください。新規のお客様には、ワークロードの実行、テスト、デプロイができる無料クレジット $300 分を差し上げます。
Cloud Storage を無料で試す