株式会社スタイリィでは一緒に働く仲間を募集しています
S3のパーティション分割の仕様
最近AWSのいろんなサービスを使ってます。AWSの中でも一番基本的なサービスのひとつ、S3についてのお話です。
S3に保存するファイル名(S3上でいうところのキー名)を決める際に、AWS開発者ガイドの「パフォーマンスに関する留意事項」を確認しました。
するとこんな記述が。
キー名を連続するパターンにすると、パフォーマンス上の問題が発生します。
つまりタイムスタンプのようなファイル名(たとえば20180326151320.txt)はよろしくないらしい。
回避方法として紹介されていた例は2つ。
- 16 進のハッシュプレフィックスをキー名に追加する(例:a2be-20180326151320.txt)
- キー名の文字列を左右反転する(例:02315162308102.txt)
ここではS3の仕様が解説されており、S3では先頭数文字によってオブジェクトを保存するパーティションを決めているため、先頭数文字が異なれば、リクエストが同じパーティションに集中するのを防げるそうです。
ただし。
このトピックの Amazon S3 ベストプラクティスガイドラインは、1 秒あたり 100 個以上のリクエストを定常的に処理している場合にのみ該当します。
通常のワークロードで 1 秒あたり 100 個以上のリクエストが発生するのが極めてまれであり、1 秒あたりのリクエストが 800 個未満である場合、このガイドラインに従う必要はありません。
だそうですので、要件に応じて、ですね。
AWSに限らず、クラウドサービス利用する際にはドキュメントを読み込むと、新たな発見があるよ、というお話でした。
貪るようにドキュメントを読み込んでいる方、お待ちしています。