使用 mongoimport 和 mongorestore 等工具,將資料大量載入 Cloud Firestore。
Cloud Firestore 是高度分散的系統,可自動調度資源,滿足業務需求。Cloud Firestore 會根據系統收到的負載,動態分割及合併資料。
系統會自動依據負載分割,您不需要預先設定。與其他文件資料庫相比,Cloud Firestore 負載型分割系統有一些重要且獨特的特性,在建立資料模型時,請務必牢記這些特性。
Cloud Firestore 的分散式特性可能需要變更部分設計選擇,尤其是針對已針對資料庫最佳化的工作負載,其中主要副本是寫入處理量的瓶頸。
最佳做法
在單一執行緒用戶端中處理大量資料的工作負載可能會造成瓶頸。用戶端或許能使用單一執行緒大量載入資料,因為用戶端和伺服器的處理量大致相同。Cloud Firestore 資料庫可處理更多平行處理作業,但您必須設定用戶端平行傳送要求。
mongoimport
使用 mongoimport 工具時,系統預設會依序提出要求。如要縮短載入 Cloud Firestore 的時間,請使用 --numInsertionWorkers 旗標設定 worker 數量。正確的設定可能需要根據用戶端的大小進行調整。
mongorestore
使用 mongorestore 工具時,請從連線字串中移除 retryWrites=false 參數,提高對暫時性錯誤的復原能力。
如要縮短載入 Cloud Firestore 的時間,您也可以使用 --numInsertionWorkersPerCollection 旗標增加每個集合的插入 worker 數量,並使用 --numParallelCollections 旗標增加平行集合數量。正確的設定可能需要根據用戶端的大小進行調整。
非同步程式設計
使用與 MongoDB 相容的作業開發軟體時,您可以透過下列方式提高平行處理能力:
- 非同步架構:使用非同步架構,即可平行處理及回應要求。呼叫資料庫時,不需要開發任何複雜的集區或佇列。每個要求流程都能使用獨立連線,並平行發出資料庫呼叫。
- 使用平行化運算服務:使用 Cloud Run 等服務,系統可以擴充處理資料所需的運算 worker 數量。
暫時性失敗
使用 Cloud Firestore 等大型分散式系統時,您可能會遇到暫時性故障,例如網路中斷或文件爭用。
大量載入大量資訊時,請務必針對失敗的寫入作業維持重試策略,以免大型大量載入作業失敗。