你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

Azure Cosmos DB for NoSQL 中的 Python SDK 最佳做法

本指南包括使用最新版本的适用于 Azure Cosmos DB for NoSQL 的 Python SDK 构建的解决方案的最佳做法。 此处附带的最佳做法有助于提高延迟、提高可用性,并提高解决方案的整体性能。

帐户配置

帐户配置参数

参数 默认或约束 何时使用
区域共置 与应用区域相同 降低延迟
多区域复制 默认已禁用 为可用性启用 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 实例 每个应用一个 在应用的生命周期内复用
首选位置 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 在虚拟机上启用以支持高流量
查询页面大小 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 进行容量规划? 可以使用有关现有数据库群集的信息进行容量规划。