Azure cosmosdb Cosmos db可在几秒钟内存储和检索数千个文档
我用正确的分区键在cosmos数据库中存储了数百万个文档。我需要检索500000个文档来进行一些计算,并在UI中显示输出,这应该在10秒内完成。 这可能吗?我试过了,但用了将近一分钟。那么对于这种需求,这是正确的方法吗Azure cosmosdb Cosmos db可在几秒钟内存储和检索数千个文档,azure-cosmosdb,Azure Cosmosdb,我用正确的分区键在cosmos数据库中存储了数百万个文档。我需要检索500000个文档来进行一些计算,并在UI中显示输出,这应该在10秒内完成。 这可能吗?我试过了,但用了将近一分钟。那么对于这种需求,这是正确的方法吗 "id": "Latest_100_Sku1_1496188800", "PartitionKey": "Latest_100_Sku1 "SnapshotType": 2,
"id": "Latest_100_Sku1_1496188800",
"PartitionKey": "Latest_100_Sku1
"SnapshotType": 2,
"AccountCode": "100",
"SkuCode": "Sku1",
"Date": "2017-05-31T00:00:00",
"DateEpoch": 1496188800,
"Body": "rVNBa4MwFP4v72xHElxbvYkbo4dBwXaX0UOw6ZRFIyaBFfG/7zlT0EkPrYUcku+9fO/7kvca"
一个文档的大小:825字节
Am使用自动缩放4000吞吐量
查询统计-am使用2个查询
查询1-从c中选择*,其中c.id位于{ids}
这里我在查询选项中使用PartitionKey
查询统计
米制的
价值
请求费用
102.11俄罗斯
显示结果
1 - 100
检索到的文档计数详细信息
200
检索到的文档大小详细信息
221672字节
输出文档计数更多信息
200
输出文档大小详细信息
221972字节
索引命中文档计数更多信息
200
索引查找时间更多信息
17.0499毫秒
文档加载时间更多信息
1.59毫秒
查询引擎执行时间详细信息
0.3401毫秒
系统功能执行时间更多信息
0.060000000000000005毫秒
用户定义函数执行时间更多信息
0毫秒
文档写入时间更多信息
0.16毫秒
往返
一,
问题2-
从c中选择*,其中{keys}中的c.PartitionKey和c.DateEpoch>={startDate.ToEpoch}和c.DateEpoch查询1看起来很好。查询2最有可能受益于DateEpoch上的复合索引。我不确定UDF是什么,但如果你要将日期转换为纪元,你想读一篇新的博客文章
总的来说,在1-2个查询中检索500K文档以进行一些计算似乎是一个奇怪的用例。通常,大多数人都会使用一个具体化的视图模式来预先计算值并持久化它们。根据您运行这两个查询的频率,这通常是对计算资源的更有效利用。没有足够的信息来回答这个问题。请在您的容器中包含一个示例文档、您尝试运行的查询、容器的分区键、已设置的RU/s数量以及Data Explorer显示查询统计信息的输出。我已使用您要求的所有内容编辑了详细信息。谢谢Mark,我尝试了DateEpoch上的复合索引,但没有太大帮助。我无法存储预先计算的结果,因为我的场景是,用户可以选择4年内的任何日期范围,我将加载这些选定日期的文档并进行计算。我增加了吞吐量,但没有改善。当我将服务移动到P3V2时,这是一个更好的应用程序计划,具有更高的计算能力,我得到了更好的响应。我并行调用这两个查询。这个场景更适合Synapse Link而不是Cosmos DB。Cosmos是一个可操作的数据库,与大型OLAP类型查询相比,它更适合于大容量OLTP。我会看看Synapse链接,看看它是否更适合你。