オブジェクト・ストレージ
OCIで提供されるストレージは以下のものがある。
- LocalNVMe
- ブロック・ボリューム
- ファイル・ストレージ
- オブジェクト・ストレージ
- アーカイブ・ストレージ
オブジェクト・ストレージ
- インターネット規模の高性能ストレージプラットフォーム。
- 信頼性と費用効果の高いデータ耐久性を提供。
- 非構造化データ(分析データや画像、動画など)に最適。
- データはオブジェクトとして管理される。
- リージョナルなサービス。特定のインスタンスに関連付くものではない。
- 3つの異なるストレージ層を提供。
- VCN内リソースからサービスゲートウェイを使用しプライベートにアクセス可能。
- 高度な機能(リージョン間のコピー、認証のリクエスト、ライフサイクルルール、大きいファイルのマルチアップロードなどを提供。)
- 保持ルールの提供。
使用例
- コンテンツ・リポジトリ
画像や動画、一般的ファイルなど。長期に安価で保存する。一般的な使い方。 - 非構造化・半構造化データ
DBに登録する前のデータなど(構造化データはリレーショナルDBに登録することが多い) - ビッグ・データ、Spark、Hadoop、データ分析
データの分析用のデータ。 - アーカイブ、バックアップ
頻繁には使わないが、長期保存したい場合。
特徴
- 強固な一貫性と耐久性
データの整合性を監視。一つのリージョンの複数の場所にコピーを保存し整合性を確認。 - コストパフォーマンスの良さ
用途に合わせてストレージ層があり、使用量に応じて課金が発生。 - パフォーマンス
転送が高速など - 使いやすさ
コンソール経由やAPI、SDKなど利用してアクセス可能。 - カスタム・メタデータ
オブジェクトに対してキーバリューのペアを付与可能。 - セキュリティー
データは暗号化して保持。
リソース
- オブジェクト
各オブジェクトはオブジェクト自体とメタ・データで構成。 - バケット
各オブジェクトはバケットに格納。(オブジェクトを入れる入れ物)
バケット名はリージョンのテナント内で一意である必要がある。 - 名前空間
バケットを識別する一意な名前。
バケットはフラットなものだが、名前空間を利用することで疑似的な階層構造にすることができる。
オブジェクトストレージの階層
- Standard(標準)
高速・即時・頻繁なアクセス用。
データの最新コピーなど。
瞬時に検索することも可能。
ダウングレード不可。 - Infrequent(頻度の低いアクセス)
標準よりコストが低い
最小保存期間31日(最低でも31日以内に削除したり更新したりしても、最低でも31日分の料金はかかる) - Archive(アーカイブ)
めったにアクセス・更新されないデータ。
最小保存期間90日
オブジェクトのダウンロード前に標準ストレージにリストア(書き換え)が必要。
リストアに1時間必要。
ダウンロードはデフォルトでリストアしてから24時間可能
アップグレード不可。
自動階層化
アクセス頻度がわからない場合やアクセス頻度が変化する場合に向いている。
更新頻度が最低保存要件を超えると下のアクセス層に移動(最低保存要件より速いと上に)。
自動階層化により、ストレージが変更された後に最低保存要件を満たさなかった場合に料金は発生しない。
オブジェクトライフサイクル管理(バケットにルールを付ける(n日後にストレージ層を移動、削除など))とは併用不可。
アクセスと認証の管理
コンソールやAPIなどからアクセスすると認証が手間である。簡単にアクセスする仕組み。
- 認証済みリクエスト
固有のURLを発行しアクセス。
URLには有効期限を設定(いつでも削除することも可能) - パブリック・バケット
バケットをパブリックとして作成。
パブリックに変更しても認証済みリクエストに影響なし。
レプリケーション
別リージョンにコピーを作成する。リージョン障害からの保護。
送り先のリージョンにバケットを作成しておく必要あり。
オブジェクトごとに設定(一括では不可)
アーカイブストレージでは利用不可。
バージョニング
オブジェクトストレージではバージョニング(バージョン管理)が可能。
バケットレベルで定義可能。
ストレージコストが増えるのでコストは増加する。
いつでも有効・一時停止が可能。
他の機能との連携
- 暗号化される。
- ライフサイクルマネージメント利用可能。
- 選択したバージョンのコピーが可能。
- レプリケーションではバージョンはコピーされない。
- 保持ルールはバージョニング使用時に利用できない。
保持ルール
バケットに対して保持ルールを適用するとデータを不変に(読み取りのみ)にすることができる。(期限付きまたは無期限)
保持ルールのロック機能(管理者であっても保持ルールを一定期間削除できなくなる)
バケットの再暗号化、コピーには影響なし。
保持ルールがある場合、ライフサイクル管理から削除されなくなる。
レプリケーションでは保持ルールはコピー不可。
保持ルールが適用されている場合はバージョニングが動作しない。
ロギング
OCIのロギング機能がロギングを行う。
オブジェクトストレージからread/weiteイベントをロギングサービスに送信する。(フォーマットはオープンソースのFluentd形式)
OCIのロギング・アナリティクスと連携可能。
バケットごとにロギングを有効化できる。
オブジェクトのコピー
オブジェクトを同じまたは異なるリージョンの別のバケットにコピー。
非同期操作。
アーカイブ・ストレージからは直接コピーできないので一度取り出しが必要。
送り先のバケットは作成しておく必要あり。(コピー時に指定する)
マルチパートアップロード
大きいファイルの転送を普通に行うのでは時間がかかる。→ 分割して並行でアップロードすることで高速化。
(インターネットのパケット通信と似ている?)
転送できるオブジェクトの最大サイズは10Tib(約10TB)。100Tib超えた場合マルチパートアップロードを推奨。
オブジェクトパートサイズは10MiB~50MiB。分割数は最大10,000パート。
コンソールからもできるが、定期的に行う場合にはAPIの使用またはCLIから利用可能。