azure-cosmosdb - 如何设计一个 cosmos DB 来对非分区键进行高效查询
问题描述
我是 Cosmos DB 的新手,在设计我的数据库时遇到了问题。
我有一个类似于以下结构的数据
{
"userId": "64_CHAR_ID",
"gpId": "34_CHAR_ID"
... Other data
}
目前我的数据库在 userId 上有分区,因为到目前为止所有查询都是由 userId 进行的。现在我想在 userId 未知时根据 gpId 查询我的数据库。所以它最终成为跨分区查询,它需要大量的时钟时间(超过 5 分钟)和 RU(超过 3k RU)。
我正在使用的查询是
SELECT * FROM c WHERE c.gpId='SOME_GPID'
根据Microsoft Doc,当数据集很大时,我们应该避免跨分区查询,在我的情况下,数据集非常大(~80 GB)。
那么在 cosmos db 中通过 gpId 查询数据的更好设计/策略是什么。我的要求是通过 gpId 几乎实时查询。
注意: RU 的当前限制设置为 500000 RU/s,并且还设置了 AutoScale。
解决方案
推荐阅读
- amazon-web-services - 为多个实例设置 CloudWatch 警报
- ios - 用 iPadOs 在 iPad 上区分 iPad 和 mac
- python - 从父目录导入模块
- python - 如何将相同的列数组分配给 Pandas 中的多个数据框?
- java - 无法显示数组列表的所有元素
- cmake - 如何使用不同的构建树 find_package()?
- c - 我的问题是关于 get_next_line 函数,我应该读取文件并使用多个缓冲区大小
- javascript - Javascript函数更新html字段然后删除它
- javascript - 在 Keycloak 中针对客户端对用户进行身份验证
- java - 忽略 @EqualsAndHashCode 中的 HashCode - Lombok