docomo Developer supportの@akatsukahaです
下記の通りAWSからS3のパフォーマンス向上について発表がありました.
下記のサイトでも記載されていますが,簡潔に何がどうなったのか記載します.
S3の書き込み/読み込みの性能が向上
S3の書き込み/読み取りの性能は下記の通りに変更
- PUT/POST/DELETE:3,500リクエスト/秒/プレフィックス
- GET:5,500リクエスト/秒/プレフィックス
ポイントはプレフィックス毎というところです.
これまでは,プレフィックスごとにデータを分散することでS3への書き込み/読み込み性能を向上させることが可能となっていました.要するにS3に保存されているデータはプレフィックスごとに分散されて保存されているので,プレフィックスを意識しデータを保存することで書き込み/読み込みの性能を改善出来るということです.基本的にはこの方針は変わらず,単純に今回はプレフィックスごとの書き込み/読み込み性能が改善したという内容です.
プレフィックスを意識したデータ構造とは?
下記の通りexamplebucket
というS3バケットがあり,下記のようなデータが入っている場合は,プレフィックスは0001
の1個なので,GETですと,5,500リクエスト/秒の読み取り性能が期待できます.
samplebucket/0001/photo1.jpg
samplebucket/0001/photo2.jpg
samplebucket/0001/photo3.jpg
samplebucket/0001/photo4.jpg
samplebucket/0001/photo5.jpg
samplebucket/0001/photo6.jpg
下記の通りexamplebucket
というS3バケットがあり,下記のようなデータが入っている場合は,プレフィックスは0001
と0002
と0003
の3個で,GETですと,それぞれ5,500リクエスト/秒の読み取り性能が期待でき,データのアクセスが均等の場合は,16,500リクエスト/秒の読み取り性能が期待できます.
samplebucket/0001/photo1.jpg
samplebucket/0001/photo2.jpg
samplebucket/0002/photo3.jpg
samplebucket/0002/photo4.jpg
samplebucket/0003/photo5.jpg
samplebucket/0003/photo6.jpg
今回の変更で単純にプレフィックスごとの読み取り,書き込み性能が向上していますが,よりスループットを上げたい場合は,これまで通り,プレフィックスを意識した構造を検討する必要があります.