大容量オブジェクトのアップロード効率を向上させるため、Object Storage Service (OSS) は、再開可能なアップロードとマルチパートアップロードの 2 つのメソッドを提供しています。このトピックでは、これらのアップロードメソッドについて説明し、参考となる関連ドキュメントへのリンクを記載します。
注意事項
PutObject のような単純なメソッドを使用して大容量ファイルをアップロードすると、以下の問題が発生する可能性があります。
オブジェクトサイズの制限:
PutObjectメソッドを使用して 5 GB を超えるファイルをアップロードすることはできません。この制限を超えるファイルをアップロードしようとすると、操作は失敗します。オブジェクトのアップロードに必要な時間:大容量オブジェクトのアップロードには、特にネットワーク接続が不安定な場合、長時間を要します。長時間のデータ転送はネットワークの変動の影響を受けやすく、転送の中断やタイムアウトの問題を引き起こす可能性があります。
メモリ消費量:大容量オブジェクトのアップロードは、特にメモリ容量が少ない、または環境が限られている場合にメモリ消費量を増加させる可能性があり、システムの安定性とパフォーマンスに影響を与えます。
したがって、大容量オブジェクトをアップロードする際は、効率と信頼性を向上させるために、再開可能なアップロードまたはマルチパートアップロードを使用することを推奨します。
再開可能なアップロード
再開可能なアップロードは、特にネットワーク接続が不安定な場合やオブジェクトサイズが 5 GB を超える場合に、大容量オブジェクトを効率的にアップロードするためのメソッドです。再開可能なアップロードでは、オブジェクトが自動的に複数のパートに分割され、パートが並列でアップロードされます。再開可能なアップロード中、アップロードの進捗はチェックポイントファイルに記録されます。オブジェクトのアップロードが中断された場合、チェックポイントファイルに記録された位置からオブジェクトが再アップロードされます。オブジェクト全体を再アップロードする必要がないため、アップロードの効率と信頼性が大幅に向上します。
マルチパートアップロード
マルチパートアップロードは、大容量オブジェクトをアップロードするための一般的なメソッドです。大容量オブジェクトを手動で複数のパートに分割し、マルチパートアップロード操作を呼び出してパートをアップロードする必要があります。再開可能なアップロードと比較して、マルチパートアップロードはより高い柔軟性を提供し、アップロードプロセス中にパートのサイズを動的に調整したり、マルチパートアップロードタスクをキャンセルしたりすることができます。マルチパートアップロードは、アップロードプロセスのきめ細かな管理が求められるシナリオに適しています。
メソッドの比較
属性 | 再開可能なアップロード | マルチパートアップロード |
シナリオ | ユーザーが、特定の詳細にこだわらず、シンプルかつ迅速に大容量オブジェクトをアップロードしたい場合。 | ユーザーが、アップロードプロセスのきめ細かな管理を必要とし、かつ技術的な能力を有している場合。 |
同時アップロード | サポートされています。 | サポートされています。 |
失敗箇所からのオブジェクトの再アップロード | サポートされています。チェックポイントファイルに記録された位置からオブジェクトを再アップロードできます。 | サポートされていません。チェックポイントファイルに記録された位置から直接オブジェクトを再アップロードすることはできません。 |
パートサイズ | パートのサイズを事前に設定する必要があります。 | パートのサイズを動的に調整できます。 |
信頼性 | 高。再開可能なアップロードは、ネットワークの変動によるアップロードの失敗を減らすことができます。 | 高。ただし、中断点は手動で対処する必要があります。 |
管理の難易度 | 低。UploadFile 操作を呼び出すだけで済みます。 | 高。InitiateMultipartUpload、UploadPart、および CompleteMultipartUpload 操作を呼び出す必要があります。 |
柔軟性 | アップロードプロセスをきめ細かく管理することはできません。 | 高。アップロードプロセスを手動で管理できるため、マルチパートアップロードタスクのリアルタイムモニタリングが容易になります。 |
開発の容易さ | このプロセスは非常に効率的で、単一のアップロード関数の呼び出しで大容量ファイルをアップロードできます。 | このプロセスは複雑です。大容量ファイルを手動で分割し、複数の API を呼び出してマルチパートアップロードを完了するための追加の制御ロジックを記述し、さまざまな異常な状況に対処する必要があります。 |