2018年7月17日に、最大のパフォーマンスを達成するためにすべてのS3オブジェクトキーの最初の文字をランダム化する必要がないことを説明するAWSの公式発表がありました:https : //aws.amazon.com/about-aws/whats-new / 2018/07 / amazon-s3-announces-increased-request-rate-performance /
Amazon S3がリクエストレートパフォーマンスの向上を発表
投稿日:2018年7月17日
Amazon S3はパフォーマンスを向上させ、データを追加するために少なくとも毎秒3,500リクエスト、データを取得するために毎秒5,500リクエストをサポートし、追加料金なしで処理時間を大幅に節約できます。各S3プレフィックスはこれらのリクエストレートをサポートできるため、パフォーマンスを大幅に向上させることが簡単になります。
現在Amazon S3で実行されているアプリケーションは、変更なしでこのパフォーマンスの向上を享受します。S3で新しいアプリケーションを構築するお客様は、このパフォーマンスを達成するためにアプリケーションをカスタマイズする必要はありません。Amazon S3の並列リクエストのサポートにより、アプリケーションをカスタマイズせずに、コンピューティングクラスターの要因によってS3パフォーマンスを拡張できます。パフォーマンスはプレフィックスごとにスケーリングされるため、必要なスループットを達成するために必要な数のプレフィックスを同時に使用できます。プレフィックスの数に制限はありません。
このS3要求レートのパフォーマンスの向上により、オブジェクトプレフィックスをランダム化してパフォーマンスを高速化するための以前のガイダンスが削除されます。つまり、パフォーマンスに影響を与えることなく、S3オブジェクトの命名で論理的またはシーケンシャルな命名パターンを使用できるようになりました。この改善は、すべてのAWSリージョンで利用可能になりました。詳細については、Amazon S3開発者ガイドをご覧ください。
それは素晴らしいことですが、混乱を招くことにもなります。それは言う各S3の接頭辞は、それが簡単なパフォーマンスを大幅に向上させるために作り、これらの要求レートをサポートすることができます
ただし、GET Bucket (List Objects)
バケットのコンテンツをリストするとき、プレフィックスとデリミタはAPIの単なる引数であるため、「プレフィックスごと」にオブジェクトの取得パフォーマンスについて話すのはどうしたら理にかなっています。への呼び出しはすべて、GET Bucket (List Objects)
必要なプレフィックスとデリミタを選択できるため、プレフィックスは事前定義されたエンティティではありません。
たとえば、バケットに次のオブジェクトがある場合:
a1/b-2
a1/c-3
次に、バケットのコンテンツをリストするたびに区切り文字として「/」または「-」を使用することを選択できます。そのため、プレフィックスを
a1/
または
a1/b-
a1/c-
ただし、GET Object
APIはキー全体を使用するため、特定のプレフィックスまたは区切り文字の概念はオブジェクトの取得には存在しません。それで、5,500 req / sec on a1/
、あるいは5,500 req / sec on a1/b-
および5,500 on を期待できa1/c-
ますか?
だから誰かが「各s3プレフィックス」のパフォーマンスの特定のレベル(たとえば、データを取得するために毎秒+5,500リクエスト)を提案するとき、アナウンスの意味を説明できますか?