多数の小さなファイルをフェッチするためのS3からEC2へのパフォーマンス

StackOverflow https://stackoverflow.com/questions/804333

質問

サイズが1kB(数億個)のデータチャンクの大きなコレクションがあり、これらのデータチャンクを保存およびクエリする方法が必要です。データチャンクは追加されますが、削除または更新されることはありません。当社のサービスは、S3、EC2プラットフォームに展開されています。

Amazon SimpleDBが存在することは知っていますが、プラットフォームに依存しないソリューションが必要です(たとえば、AWSから移行する必要がある場合)。

つまり、私の質問は、データチャンクを保存および取得するためのこれら2つのオプションの長所と短所は何ですか?パフォーマンスはどのように比較されますか?

  • S3にデータチャンクをファイルとして保存し、必要に応じて取得します
  • MySQL Serverクラスターにデータチャンクを保存する

パフォーマンスに大きな違いはありますか?

役に立ちましたか?

解決

これらのデータチャンクへのアクセスをアプリケーションのユーザーに直接提供する必要がありますか?そうでない場合、S3およびHTTP GETリクエストは過剰です。また、S3はセキュリティで保護されたサービスであるため、GETリクエストごとのオーバーヘッド(1 KBのデータのみ)はかなり大きくなります。

MySQLサーバークラスターはより良いアイデアですが、EC2で実行するにはElastic Block Storageを使用する必要があります。最後に、SimpleDBを除外しないでください。それはおそらくあなたの問題に対する最善の解決策です。システムを慎重に設計すると、将来的に他のデータベースシステム(分散またはリレーショナル)に簡単に移行できるようになります。

他のヒント

S3を一種の「データベース」として使用してみました。小さなXMLファイルを使用して構造化データオブジェクトを保持し、S3の「キー」に依存します。これらのオブジェクトを検索します。

パフォーマンスはEC2からでさえも受け入れられませんでした-S3へのレイテンシーが長すぎます。

EBSデバイスでMySQLを実行すると、非常に多くのレコードがある場合でも、桁違いに高速になります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top