Cosmos数据库可以在几秒钟内存储和检索数千个文档



我用正确的partitionkey在cosmos数据库中存储了数百万个文档。我需要检索500000个文档来进行一些计算并在UI中显示输出,这应该在10秒内完成。这可能吗?我试过了,但花了将近一分钟的时间。那么,对于这种要求,这是正确的方法吗?

"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 RU显示结果1-100检索到的文档数更多信息200检索到的文档大小更多信息221672字节输出文档计数更多信息200输出文档大小更多信息221972字节索引命中文档数更多信息200索引查找时间详细信息17.0499毫秒文档加载时间更多信息1.59毫秒查询引擎执行时间更多信息0.3401毫秒系统功能执行时间更多信息0.060000000000000005毫秒用户定义的功能执行时间更多信息0毫秒文档写入时间更多信息0.16毫秒往返行程1

查询2--从c中选择*,其中c.PartitionKey在({keys}(和c.DateEpoch>{startDate.ToEpoch((}和c.DateEpoch<{endDate.ToEpoch((}

查询统计信息公制价值请求费用226.32卢布显示结果1-100检索到的文档数更多信息200检索到的文档大小更多信息176580字节输出文档计数更多信息200输出文档大小更多信息176880字节索引命中文档数更多信息200索引查找时间详细信息88.31毫秒文档加载时间更多信息423.99000000000004毫秒查询引擎执行时间更多信息0.4701毫秒系统功能执行时间更多信息0.060000000000000005毫秒用户定义的功能执行时间更多信息0毫秒文档写入时间更多信息0.19毫秒往返行程1

查询#1看起来不错。查询#2很可能会受益于DateEpoch上的复合索引。我不确定UDF是什么,但如果你要将日期转换为epoch,你想阅读一篇新的博客文章Azure Cosmos DB 中的新日期和时间系统功能

总的来说,在1-2个查询中检索50万个文档来进行一些计算似乎是一个奇怪的用例。通常,大多数人都会预先计算值,并使用changefeed使用物化视图模式来持久化它们。根据您运行这两个查询的频率,这通常是对计算资源的更有效使用。

最新更新