用途
Azure Cosmos DB SDK for Rust 是 Azure Cosmos DB NoSQL API 的客户端库,适用于全球分布式、多模型数据库。当 Rust 应用需要 Cosmos DB NoSQL 的文档增删改查、分区键点读、容器访问,或显式启用的预览版补丁(PATCH)时,可使用该技能中的示例。
安装与环境变量
安装命令:
cargo add azure_data_cosmos@=0.37.1 azure_identity@=1.0.0 azure_core@=1.1.0
需要设置的环境变量:
export COSMOS_ENDPOINT="https://<account>.documents.azure.com:443/"
export COSMOS_DATABASE="mydb"
export COSMOS_CONTAINER="mycontainer"
示例说明这些操作需要已审阅的兼容 crate 组合,并要求替换每一个资源占位符,不得使用生产数据做演示写入。
认证方式
示例使用 Entra ID 认证,通过 DeveloperToolsCredential 创建凭据,并以 AccountReference 与 CosmosClient 构建客户端,路由策略使用 RoutingStrategy::ProximityTo。
可选地,可通过特性开关启用基于密钥的认证:
cargo add azure_data_cosmos@=0.37.1 --features key_auth
最佳实践建议优先使用 Entra ID 认证(DeveloperToolsCredential),而非密钥认证。
客户端层级
- CosmosClient:账户级操作,直接实例化。
- DatabaseClient:数据库操作,通过 client.database_client() 获取。
- ContainerClient:容器/项操作,通过 database.container_client() 获取。
核心工作流
示例涵盖以下操作:
- 获取数据库与容器客户端;
- 创建文档(create_item),文档类型需派生 Serialize 与 Deserialize;
- 读取文档(read_item),并用 into_model()? 反序列化为自定义类型;
- 替换文档(replace_item);
- 补丁文档(patch_item),需显式启用预览特性 preview_patch,使用 PatchInstructions 与 PatchOperation::set;
- 删除文档(delete_item)。
适用场景
适用于需要 Cosmos DB NoSQL 文档 CRUD、分区键点读、容器访问或显式选择的预览版 PATCH 的 Rust 应用。
限制与注意事项
示例是异步应用代码中的片段,需要兼容且固定版本的 Azure crate,以及必需的 Tokio/Serde/Futures 依赖;使用前需核实所选版本的 API。示例基于官方源码与参考文档审阅,但未在本地编译,也未对云账户实际运行。
需要授权的租户、资源与最小权限身份。写入、覆盖、删除、备份获取与账户变更需要相应权限范围;清理只能移除明确标识的可丢弃资源。应限制请求、重试与下载字节数,不得记录载荷、凭据或机密值。
输出不能替代针对特定环境的验证、测试或专家审阅。若缺少必要输入、权限、安全边界或成功标准,应停止并请求澄清。
PATCH 预览版不保证可用于生产,需审查其选定策略、冲突/重试行为与请求单位(RU)成本。
参考链接
- API 参考:https://docs.rs/azure_data_cosmos
- 源代码:https://github.com/Azure/azure-sdk-for-rust/tree/main/sdk/cosmos/azure_data_cosmos
- crates.io:https://crates.io/crates/azure_data_cosmos