大量載入資料的最佳做法

使用 mongoimportmongorestore 等工具,將資料大量載入與 MongoDB 相容的 Firestore。

Firestore 是高度分散式系統,可自動調整資源配置,滿足您的業務需求。Firestore 會根據系統接收到的負載,動態分割及合併資料。

系統會自動根據負載進行分割,不需要預先設定。與其他文件資料庫相比,Firestore 負載式分割系統有一些重要且獨特的特徵,在建立資料模型時請務必留意。

Firestore 的分散式特性可能需要變更部分設計選擇,特別是針對已針對資料庫最佳化的工作負載,因為主要副本是寫入處理量的瓶頸。

最佳做法

如果工作負載在單一執行緒用戶端中處理大量資料,可能會造成瓶頸。用戶端或許可以使用單一執行緒大量載入資料,因為用戶端和伺服器的輸送量相符。Firestore 資料庫可處理的平行作業數量多得多,但您必須設定用戶端,才能平行傳送要求。

mongoimport

使用 mongoimport 工具時,系統預設會依序發出要求。如要縮短載入 Firestore 的時間,請使用 --numInsertionWorkers 標記設定工作站數量。您可能需要根據用戶端大小調整正確設定。

mongorestore

使用 mongorestore 工具時,請從連線字串中移除 retryWrites=false 參數,以提升暫時性故障的復原能力。

如要縮短載入 Firestore 的時間,您也可以使用 --numInsertionWorkersPerCollection 標記增加每個集合的插入工作站數量,並使用 --numParallelCollections 標記增加平行集合數量。您可能需要根據用戶端大小調整正確設定。

非同步程式設計

使用 MongoDB 相容作業開發自己的軟體時,可以透過下列方式提升平行處理能力:

  • 非同步架構:使用非同步架構可並行處理及回應要求。呼叫資料庫時,不必開發任何複雜的集區或佇列。每個要求流程都可以使用獨立連線,並平行發出資料庫呼叫。
  • 使用平行化運算服務:使用 Cloud Run 等服務時,系統可以視需要調整運算工作站數量,處理資料。

暫時性失敗

使用 Firestore 等大型分散式系統時,您可能會遇到暫時性故障,例如網路中斷或文件爭用。

大量載入大量資訊時,請務必為失敗的寫入作業維持重試策略,但不要讓較大的大量載入作業失敗。