オブジェクトストレージの仕組み ― S3はなぜ「無限に」データを保存できるのか


3つのストレージタイプの比較 ブロック 固定サイズのブロック単位 Block 0 Block 1 Block 2 Block 3 Block 4 Block 5 HDD / SSD 高速・低レイテンシ メタデータなし ファイル 階層型ディレクトリ構造 / (root) docs/ img/ a.txt b.txt cat.jpg NAS / NFS 共有しやすい 深い階層で遅くなる オブジェクト フラットなキー空間 my-bucket key: docs/a.txt + metadata + data key: img/cat.jpg + metadata + data S3 / GCS / Blob 無限スケール 99.999999999% 耐久性 DB・VM向き ファイル共有向き 大量データ・分析向き
ブロック・ファイル・オブジェクトストレージの特徴比較
ひよこ ひよこ

オブジェクトストレージってよく聞くけど、普通のストレージと何が違うの?

ペンギン先生 ペンギン先生

ストレージには大きく3種類あるよ。ブロックストレージはデータを固定サイズのブロックに分割して保存するもので、HDDSSDがこれにあたる。ファイルストレージはフォルダの階層構造でファイルを整理するNASみたいなもの。そしてオブジェクトストレージはフラットな名前空間オブジェクト(データ+メタデータ)を保存する仕組みなんだ。

ひよこ ひよこ

フラットな名前空間って、フォルダがないってこと?

ペンギン先生 ペンギン先生

そう!オブジェクトストレージにはフォルダという概念がなくて、すべてのデータは『バケット』と『キー』で管理されるんだ。例えば S3 なら、バケット名が my-bucket でキーが photos/2026/cat.jpg みたいになる。スラッシュはただの文字列の一部で、本当のディレクトリ階層じゃないよ。

ひよこ ひよこ

えっ、じゃあフォルダに見えてるのは見た目だけなの?

ペンギン先生 ペンギン先生

その通り。S3コンソールフォルダっぽく見えるのはキーのプレフィックスで擬似的に表示してるだけなんだ。この設計のおかげで、ファイル数が何兆個になっても検索速度が落ちない。ファイルストレージだとディレクトリネストが深くなると遅くなるけど、オブジェクトストレージはキーでダイレクトにアクセスできるよ。

ひよこ ひよこ

なるほど!各オブジェクトにはメタデータがつくって言ってたけど、どういうものなの?

ペンギン先生 ペンギン先生

メタデータはデータに関する付属情報だよ。ファイルの種類(Content-Type)、作成日時、カスタムタグなんかを自由に付けられる。例えば画像に撮影者名や分類タグをメタデータとして付けておけば、あとから検索やフィルタリングに使えるんだ。これがデータレイクの基盤として人気がある理由の一つだね。

ひよこ ひよこ

S3って『イレブンナイン』の耐久性があるって聞いたけど、99.999999999%ってどういうこと?

ペンギン先生 ペンギン先生

1000万個のオブジェクトを保存しても、1万年に1個失われるかどうかという耐久性だよ。これを実現しているのがイレイジャーコーディングという技術なんだ。データを断片に分割して冗長性を持たせ、複数のデータセンターに分散保存する。例えばデータを6つの断片に分けて4つあれば復元できる方式なら、同時に2箇所壊れてもデータは無事なんだよ。

ひよこ ひよこ

すごい!でも全部同じ場所に保存したらお金かかりそう…。

ペンギン先生 ペンギン先生

そこで活躍するのがストレージクラスだよ。S3だとStandard(頻繁にアクセス)、Intelligent-Tiering(自動で最適化)、Standard-IA(低頻度アクセス)、Glacier(アーカイブ)などがある。例えばログファイルは30日経ったらIAに移し、90日経ったらGlacierに移すライフサイクルポリシーを設定すれば、コストを大幅に削減できるんだ。

ひよこ ひよこ

賢い!外部の人にファイルを共有したいときはどうするの?

ペンギン先生 ペンギン先生

署名付きURL(Presigned URL)が便利だよ。S3のオブジェクトは通常非公開だけど、有効期限付きの特別なURLを発行できるんだ。そのURLを知っている人だけが一定時間ダウンロードやアップロードできる。アプリのファイルダウンロード機能やフォームからの画像アップロードによく使われるよ。

ひよこ ひよこ

AWSのS3以外にもオブジェクトストレージってあるの?

ペンギン先生 ペンギン先生

たくさんあるよ!Google Cloud Storage、Azure Blob Storageはもちろん、S3互換APIを実装したオープンソースMinIOCephもある。S3のAPIが事実上の業界標準になっていて、MinIOを使えば自前のサーバーでS3互換のストレージを構築できるんだ。マルチクラウドやオンプレ環境でもS3と同じコードが使えるのが強みだね。

ひよこ ひよこ

オブジェクトストレージって何でも保存できるなら、データベースの代わりにもなるの?

ペンギン先生 ペンギン先生

データベースの『代わり』というより『土台』として使われることが多いよ。データレイクアーキテクチャでは、生データをすべてS3に保存して、Athena や Spark でSQL分析するのが定番パターンなんだ。最近はParquetやIcebergといったオープンフォーマットを組み合わせることで、データウェアハウスに近い性能を出せるようになった。『ストレージとコンピュートの分離』という設計思想の中心にいるのがオブジェクトストレージだよ。