Share via


適用於 NoSQL 的 Azure Cosmos DB 中的 Python SDK 最佳做法

適用於:NoSQL

本指南包含使用最新版適用於 Azure Cosmos DB for NoSQL 的 Python SDK 所建置解決方案的最佳做法。 此處包含的最佳做法可協助改善延遲、改善可用性,以及提升解決方案的整體效能。

帳戶組態

  • 請務必盡可能在與 Azure Cosmos DB 帳戶相同的 Azure 區域中執行應用程式,以減少延遲。 在您的帳戶中啟用 2 個以上的區域複寫,以獲得最佳 可用性。 針對生產工作負載,啟用服務受控容錯移轉。 在沒有此設定的情況下,帳戶會在寫入區域中斷的所有持續時間內發生寫入可用性遺失的情況,同時因為缺少區域連線能力,所以手動容錯移轉無法成功。 如需如何使用 Python SDK 新增多個區域的詳細資訊,請參閱 全域散發教學課程

SDK 使用方式

  • 請一律使用 最新版 的 Azure Cosmos DB SDK,以獲得最佳效能。
  • 針對應用程式的存留期使用單一實例 CosmosClient ,以提升效能。
  • preferred_locations cosmos用戶端設定組態。 在故障轉移期間,寫入作業會傳送至目前的寫入區域,而且所有讀取都會傳送到您慣用位置清單中的第一個區域。 如需區域容錯移轉機制的詳細資訊,請參閱可用性疑難排解
  • 暫時性錯誤是一種具有根本原因但即將自行解決的錯誤。 連線到您資料庫的應用程式,都預期會發生這些暫時性錯誤。 若要處理這些錯誤,請在其程式碼中實作重試邏輯,而不是對使用者呈現為應用程式錯誤。 SDK 有內建的邏輯,可處理這類可重試要求 (例如讀取或查詢作業) 的暫時性失敗。 SDK 無法重試暫時性失敗的寫入,因為寫入不具等冪性。 SDK 可讓使用者設定節流的重試邏輯。 如需重試哪些錯誤的詳細資料,請造訪這裡
  • 使用 SDK 記錄來 擷取診斷資訊 ,並針對延遲問題進行疑難解答。

資料設計

  • 指定作業的要求費用會直接與文件大小相互關聯。 建議您減少文件的大小,因為對大型文件的作業成本較對小文件的作業成本更高。
  • 部分字元受到限制,而且無法用於部分識別碼:'/'、'\'、'?'、'#'。 一般建議不要在資料庫名稱、集合名稱、項目識別碼或分割區索引鍵這類識別碼中使用任何特殊字元,以避免發生任何非預期的行為。
  • Azure Cosmos DB 索引編製原則也可讓您使用索引路徑指定要包含或排除索引編製的文件路徑。 確保將未使用的路徑排除於索引編製外,以加快寫入速度。 如需詳細資訊,請參閱使用 SDK 範例建立索引

主機特性

  • 由於用戶端電腦上的資源不足,您可能會遇到連線能力/可用性問題。 監視執行 Azure Cosmos DB 用戶端之節點的 CPU 使用率,並在使用量很高時擴大/縮小。
  • 如果使用虛擬機器來執行應用程式,請在 VM 上啟用加速網路,以協助排解因高流量而產生的瓶頸,並減少延遲或 CPU 抖動。 您也可能想要考慮使用較高的終端虛擬機器,其中最大 CPU 使用率低於70%。
  • 預設會以 100 個項目或 4 MB 的區塊來傳回查詢結果 (以先達到的限制為準)。 如果查詢傳回超過 100 個項目,則請增加頁面大小以減少所需的來回行程數目。 隨著頁面大小的增加,記憶體使用量也會增加。

下一步

若要深入瞭解 Python SDK 的效能秘訣,請參閱 Azure Cosmos DB Python SDK 的效能秘訣。

若要深入了解如何針對規模和高效能設計您的應用程式,請參閱 Azure Cosmos DB 的資料分割與調整規模

正在嘗試為遷移至 Azure Cosmos DB 進行容量規劃嗎? 您可以使用現有資料庫叢集的相關資訊進行容量規劃。