次の方法で共有


Azure Cosmos DB for NoSQL での Python SDK のベスト プラクティス

このガイドには、最新バージョンの Python SDK for Azure Cosmos DB for NoSQL を使用して構築されたソリューションのベスト プラクティスが含まれています。 ここに記載されているベスト プラクティスは、待機時間の短縮、可用性の向上、ソリューションの全体的なパフォーマンスの向上に役立ちます。

アカウントの構成

アカウント構成パラメーター

パラメーター 既定または制約 いつ使用するか
リージョン共置 アプリリージョンと同じ 待機時間を短縮する
複数リージョンのレプリケーション 既定では無効になっています 可用性のために 2 つ以上のリージョンを有効にする
サービスマネージド フェールオーバー オプション 運用環境のワークロードに対して有効にする
from azure.cosmos import CosmosClient
client = CosmosClient(url, credential)
print(client.client_connection._global_endpoint_manager.write_endpoint)
# Expected: write endpoint resolves to configured write region

Python SDK を使用して複数のリージョンを追加する方法の詳細については、 グローバル配布のチュートリアルを参照してください。

SDK の使用

SDK の使用パラメーター

パラメーター 既定または制約 いつ使用するか
SDK バージョン 利用可能な最新のもの 常に最適なパフォーマンスを実現
CosmosClient インスタンス アプリごとに 1 つ アプリの有効期間中に再利用する
優先場所 None 読み取りとフェールオーバーを最適化する
client = CosmosClient(
    url,
    credential,
    preferred_locations=["East US", "West US"]
)
print(client.client_connection._preferred_locations)
# Expected: ['East US', 'West US']

一時エラーとは、その基になる原因がすぐに自動的に解決されるエラーです。 データベースに接続するアプリケーションは、これらの一時エラーを想定して構築する必要があります。 これに対処するには、アプリケーション エラーとしてユーザーに表示するのではなく、コードに再試行ロジックを実装します。 SDK には、読み取りやクエリの操作など、再試行可能な要求でこれらの一時的なエラーを処理するロジックが組み込まれています。 SDK では、書き込みはべき等ではないので、一時的なエラーでは書き込みが再試行されません。 ユーザーは、SDK を使用して、スロットルの再試行ロジックを構成できます。 再試行するエラーの詳細については、 回復性のあるアプリケーション ガイダンスを参照してください。

SDK ログを使用して 診断情報をキャプチャ し、待機時間の問題をトラブルシューティングします。

データ設計

データ 設計パラメーター

パラメーター 既定または制約 いつ使用するか
ドキュメント サイズ N/A RU コストを削減するために小規模に保つ
識別子文字 特別な文字なし 予期しない動作を回避する
インデックス作成パス すべてのパスがインデックス化されました 書き込みを高速化するために未使用のパスを除外する
container_properties = {
    "id": "items",
    "indexingPolicy": {
        "excludedPaths": [{"path": "/*"}]
    }
}
print(container_properties["indexingPolicy"])
# Expected: excludedPaths configured

詳細については、 SDK サンプルを使用したインデックスの作成を参照してください。

ホストの特性

ホスト特性パラメーター

パラメーター 既定または制約 いつ使用するか
CPU 使用率 <70% 推奨 スケールアップまたはスケールアウト (高い場合)
高速ネットワーク Disabled VM 上で高トラフィックを処理する設定を有効にする
クエリ ページ サイズ 100 アイテム/ 4 MB ラウンド トリップを減らすために増やす
items = container.query_items(
    query="SELECT * FROM c",
    max_item_count=500
)
print("Page size set to 500")
# Expected: fewer round trips

次のステップ

Python SDK のパフォーマンスに関するヒントの詳細については、 Azure Cosmos DB Python SDK のパフォーマンスに関するヒントを参照してください。

スケーリングと高パフォーマンスのためのアプリケーションの設計について詳しくは、「Azure Cosmos DB でのパーティション分割とスケーリング」をご覧ください。

Azure Cosmos DB への移行のための容量計画を実行しようとしていますか? 容量計画のために、既存のデータベース クラスターに関する情報を使用できます。