S3はオブジェクトストレージですが、裏側の実際の管理はどうなっていますか? オブジェクトキーがあるということはNoSQLで管理テーブルを持ち、ブロックストレージのようなものでレプリケーションし分散ストレージみたいになってる? |
| |
|
かなり近いイメージです。S3の内部実装は公開されていませんが、公開論文やAWSの発表から推測すると、概ね「巨大な分散メタデータDB + 分散オブジェクト保存基盤」という構造です。 大まかなイメージS3はざっくり分けると:
の2層構造です。 1. メタデータ層(オブジェクトキー管理)ここが実質「NoSQLっぽい世界」です。 例えば: みたいな情報に対して、
などを管理しています。 つまり: という巨大KVSに近い。 S3は昔、特定Prefixにアクセス集中すると性能問題がありましたが、現在は内部パーティショニングがかなり高度化されています。これは典型的な分散KVSの課題です。 2. 実データ保存層実ファイル本体は、さらに別の分散ストレージに保存されます。 ここは:
で構成される。 イメージとしては: に近いです。 ブロックストレージなの?内部的にはかなり「ブロックストレージ的」です。 ただしS3利用者からは:
しか見えない。 実際の内部では、オブジェクトを複数チャンクへ分割して管理している可能性が高いです。 巨大オブジェクトを1ファイル丸ごと1台保存すると:
からです。 レプリケーション?昔ながらの単純3重コピーだけではなく、現在はErasure Coding(消失符号)をかなり使っていると言われています。 例えば: みたいに分散。 これで:
を実現。 S3の「11ナイン耐久性」は、こういう大規模分散冗長化の成果です。 なぜNoSQLっぽいのかS3は典型的なRDB向きではないです。 理由:
だから: を高速に引ける分散KVS設計が自然。 AWS内部では専用システムを使っているはずですが、概念的には:
に近い思想です。 PUT/GET時の流れ(簡略)PUTGETS3が「ただのNAS」と全然違うところ普通のNAS:
S3:
つまりS3は「巨大インターネット規模KVS付き分散ストレージ」に近いです。 なのでユーザの感覚としては「ファイル置き場」ですが、内部思想はかなり分散DB寄りです。 |
| |
|

この記事へのコメント