このガイドには、最新バージョンの 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 への移行のための容量計画を実行しようとしていますか? 容量計画のために、既存のデータベース クラスターに関する情報を使用できます。
- 既存のデータベース クラスター内の仮想コアとサーバーの数のみがわかっている場合は、仮想コアまたは vCPU を使用した要求ユニットの見積もりに関するページを参照してください
- 現在のデータベース ワークロードに対する通常の要求レートがわかっている場合は、Azure Cosmos DB Capacity Planner を使用した要求ユニットの見積もりに関するページを参照してください