s3 に一括アップロードするにはどうすればよいですか?
-
21-08-2019 - |
質問
最近、「データのロード」を使用してデータベースに行を詰め込むようにコードの一部をリファクタリングしました。これはうまく機能します。ただし、レコードごとに 2 つのファイルを s3 にアップロードする必要があります。これにより、得ていた素晴らしい速度アップグレードが完全に台無しになります。 。これまでは 1 秒あたり 600 以上のドキュメントを処理できましたが、s3 のせいで、現在は 1/秒で少しずつ処理されています。
これに対する回避策は何ですか?API を見ると、ほとんどが RESTful であることがわかります。そのため、何をすればよいかわかりません。おそらく、これをすべてデータベースに貼り付けるべきかもしれません。テキスト ファイルは通常 1.5k を超えません。(そこに詰め込むもう 1 つのファイルは、テキストの XML 表現です)
これらのファイルは頻繁に使用されるため、Web サーバーへの HTTP リクエストで既にキャッシュしています。
ところで:現在の実装では Java を使用しています。スレッドはまだ試していませんが、それはオプションかもしれません
おすすめは?
解決
[putObjects
][1] の関数 ジェットS3t 複数のファイルを一度にアップロードします。
あるいは、バックグラウンド スレッドを使用してキューから S3 にアップロードし、データベースにデータをロードするコードからファイルをキューに追加することもできます。
[1]: http://jets3t.s3.amazonaws.com/api/org/jets3t/service/multithread/S3ServiceMulti.html#putObjects(org.jets3t.service.model.S3Bucket, 、org.jets3t.service.model.S3Object[])
他のヒント
私はただの PHP のでディレクトリ全体をアップロードするにはすてきな解決策を見つけます:
$client->uploadDirectory(
SOURCE_FOLDER,
YOUR_BUCKET_NAME,
DESTINATION,
array(
'concurrency' => 5,
'debug' => TRUE,
'force' => FALSE,
'params' => array(
'ServerSideEncryption' => 'AES256',
),
)
);