Azure Cosmos DB
使用 Azure Cosmos DB 作为状态存储
Dapr 在保存和检索状态时不会转换状态值。Dapr 要求所有状态存储实现遵守特定的键格式方案(参见[状态管理规范](https://docs.dapr.io/zh-hans/reference/api/state_api/)。您可以直接与底层存储交互来操作状态数据,例如:
- 查询状态。
- 创建聚合视图。
- 制作备份。
注意
Azure Cosmos DB 是一个支持多种 API 的多模态数据库。默认的 Dapr Cosmos DB 状态存储实现使用 Azure Cosmos DB SQL API。连接到 Azure Cosmos DB
要连接到您的 Cosmos DB 实例,您可以:
- 使用 Azure 管理门户上的数据资源管理器。
- 使用各种 SDK 和工具。
注意
当您为 Dapr 配置 Azure Cosmos DB 时,请指定要使用的确切数据库和集合。以下 Cosmos DB SQL API 示例假设您已经连接到正确的数据库和一个名为 “states” 的集合。按 App ID 列出键
要获取与应用程序 “myapp” 关联的所有状态键,请使用以下查询:
SELECT * FROM states WHERE CONTAINS(states.id, 'myapp||')
上述查询返回 id 包含 “myapp-” 的所有文档,这是状态键的前缀。
获取特定状态数据
要获取应用程序 “myapp” 中键为 “balance” 的状态数据,请使用以下查询:
SELECT * FROM states WHERE states.id = 'myapp||balance'
读取返回文档中的 value 字段。要获取状态版本/ETag,请使用以下命令:
SELECT states._etag FROM states WHERE states.id = 'myapp||balance'
读取 Actor 状态
要获取应用程序 ID 为 “mypets” 中 Actor 类型为 “cat” 且实例 ID 为 “leroy” 的 Actor 关联的所有状态键,请使用以下命令:
SELECT * FROM states WHERE CONTAINS(states.id, 'mypets||cat||leroy||')
而要获取特定的 Actor 状态(如 “food”),请使用以下命令:
SELECT * FROM states WHERE states.id = 'mypets||cat||leroy||food'