CosmosDB 中的 NULL 延续令牌
NULL Continuation Token in CosmosDB
我知道如果继续令牌为空(整个令牌 json 为空),这意味着 下一个请求中将不再有数据 。
在我的情况下,我检查下一页中肯定没有更多数据,并且令牌应该为空。但是它 returns 这个 "half" 空标记...
令牌看起来像这样:
"{\"token\":null,\"range\":{\"min\":\"xxxxxxxxxx\",\"max\":\"xxxxxxxxxx\"}}"
只有token为null,min
和max
都不为null,说明什么?换句话说,我应该用continuation == null
还是continuation.token == null
,看下一页是否有更多的数据?
一些背景语境:
- Cosmos DB 是一个分布式数据库,其中数据和请求跨多个后端服务器进行分区(以扩展存储和吞吐量,超出单个服务器)。
- 我提出这个问题是因为您可能会执行路由到单个分区的查询(通过在查询的 WHERE / filter 子句中包含分区键)- 以及执行跨多个分区的查询。
- 在每个分区的范围内 - 查询结果以分页方式 returned。
- 要了解有关分区的更多信息 - 请参阅:https://docs.microsoft.com/en-us/azure/cosmos-db/partition-data
您看到的令牌是来自 SDK 的复合延续令牌,其中包含:
- 来自 Cosmos DB 后端的信息,用于恢复查询执行并检索特定分区上的下一页(令牌字段)
- 关于后端延续令牌来自哪个分区的信息(范围字段)。
您看到的是,对于 SDK 正在查询的特定范围,没有更多结果。
至于为什么 SDK 不直接为延续令牌提供 json 空值:
SDK 已到达给定分区的末尾,但 mstill 需要访问其他分区以确保没有更多文档匹配您的过滤器/需要 returned 到客户端。
当 SDK 完成对所有分区的访问后,它将 return 空延续。
我知道如果继续令牌为空(整个令牌 json 为空),这意味着 下一个请求中将不再有数据 。
在我的情况下,我检查下一页中肯定没有更多数据,并且令牌应该为空。但是它 returns 这个 "half" 空标记...
令牌看起来像这样:
"{\"token\":null,\"range\":{\"min\":\"xxxxxxxxxx\",\"max\":\"xxxxxxxxxx\"}}"
只有token为null,min
和max
都不为null,说明什么?换句话说,我应该用continuation == null
还是continuation.token == null
,看下一页是否有更多的数据?
一些背景语境:
- Cosmos DB 是一个分布式数据库,其中数据和请求跨多个后端服务器进行分区(以扩展存储和吞吐量,超出单个服务器)。
- 我提出这个问题是因为您可能会执行路由到单个分区的查询(通过在查询的 WHERE / filter 子句中包含分区键)- 以及执行跨多个分区的查询。
- 在每个分区的范围内 - 查询结果以分页方式 returned。
- 要了解有关分区的更多信息 - 请参阅:https://docs.microsoft.com/en-us/azure/cosmos-db/partition-data
您看到的令牌是来自 SDK 的复合延续令牌,其中包含:
- 来自 Cosmos DB 后端的信息,用于恢复查询执行并检索特定分区上的下一页(令牌字段)
- 关于后端延续令牌来自哪个分区的信息(范围字段)。
您看到的是,对于 SDK 正在查询的特定范围,没有更多结果。
至于为什么 SDK 不直接为延续令牌提供 json 空值: SDK 已到达给定分区的末尾,但 mstill 需要访问其他分区以确保没有更多文档匹配您的过滤器/需要 returned 到客户端。
当 SDK 完成对所有分区的访问后,它将 return 空延续。