

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 將 Amazon S3 匯入到 DynamoDB 的最佳實務
<a name="S3DataImport.BestPractices"></a>

以下為將資料從 Amazon S3 匯入到 DynamoDB 的最佳實務。

## 保持在 50,000 個 S3 物件的限制以下
<a name="S3DataImport.BestPractices.S3Limit"></a>

每個匯入工作最多支援 50,000 個 S3 物件。如果您的資料集包含超過 50,000 個物件，請考慮將它們合併為較大的物件。

## 避免過大的 S3 物件
<a name="S3DataImport.BestPractices.AvoidLargeObjects"></a>

S3 物件會平行匯入。擁有眾多中型 S3 物件允許平行執行，而不會產生過大負荷。對於 1 KB 以下的項目，請考慮在每個 S3 物件中放置 400 萬個項目。如果您的平均項目大小較大，請在每個 S3 物件中按比例放置較少的項目。

## 隨機化已排序的資料
<a name="S3DataImport.BestPractices.RandomizeSortedData"></a>

如果 S3 物件以排序順序保存資料，它會建立*滾動的經常性分割區*。這種情況是由其中一個分割區接收所有活動，接著是下一個分割區，依此類推。按排序順序的資料的定義是 S3 物件中的循序項目，將在匯入期間寫入相同目標分割區。資料以排序順序排列的一個常見情況是 CSV 檔案，其中項目會依分割區索引鍵排序，以便讓重複的項目共用相同的分割區索引鍵。

若要避免滾動的經常性分割區，我們建議您在這些情況下隨機化順序。這可以透過散佈寫入操作來改善效能。如需詳細資訊，請參閱[在將資料上傳至 DynamoDB 時有效分配寫入活動](bp-partition-key-data-upload.md)。

## 壓縮資料，將 S3 物件總大小保持在區域限制以下
<a name="S3DataImport.BestPractices.CompressData"></a>

在[從 S3 匯入程序](S3DataImport.Requesting.md)中，要匯入之 S3 物件資料的總大小有限制。us-east-1、us-west-2 和 eu-west-1 區域中，限制為 15 TB，在所有其他區域中為 1 TB。此限制是以原始 S3 物件大小為基礎。

壓縮可讓更多原始資料符合限制。如果單獨壓縮不足以讓匯入符合限制範圍，您也可以聯絡 [AWS Premium Support](https://aws.amazon.com/premiumsupport/) 請求提高配額。

## 注意項目大小如何影響效能
<a name="S3DataImport.BestPractices.ItemSize"></a>

如果您的平均項目大小非常小 (低於 200 位元組)，匯入程序可能會比較大的項目大小更久。

## 請勿在作用中匯入期間修改 S3 物件
<a name="S3DataImport.BestPractices.NoModification"></a>

確保來源 S3 物件在匯入操作進行時保持不變。如果在匯入期間修改 S3 物件，操作將會失敗，並顯示錯誤碼`ObjectModifiedInS3DuringImport`和訊息「無法匯入 S3 物件，因為它被覆寫。」

如果您遇到此錯誤，請使用 S3 物件的穩定版本重新啟動匯入操作。若要避免此問題，請等待目前的匯入完成，然後再變更來源檔案。

## 考慮在沒有全域次要索引的情形下匯入
<a name="S3DataImport.BestPractices.GSI"></a>

匯入任務的持續時間可能取決於是否存在一或多個全域次要索引 (GSI)。如果您計劃使用低基數的分割區索引鍵來建立索引，那麼如果將索引建立延遲到匯入任務完成之後 (而不是包含在匯入工作中)，匯入速度可能會更快。

**注意**  
建立 GSI 不會產生寫入費用，無論是在匯入期間或之後建立。