在 cosmos db 中查询大型集合

家庭破坏者

目前,我们的文档数据库中有一个非常大的集合。我们希望能够根据集合中文档中的某些字段来过滤集合。

当我通过门户执行此查询时,它需要很长时间,因为数据太多。当我通过函数应用执行此查询时,由于超时,它会在五分钟后中断。

执行此搜索的最佳方法是什么?是否可以通过 Application Insights 或某种方式执行此搜索?我知道查询本身可能需要很长时间,但不应阻塞。通过门户进行查询会阻止所有其他操作。

提前致谢。问候

龚杰

首先,您需要知道的是 Document DB 对Response page size. 此链接总结了其中一些限制:Azure DocumentDb 存储限制 - 它们究竟是什么意思?

其次,如果要查询Document DB中的大数据,则必须考虑查询性能问题,请参考这篇文章:使用Azure Cosmos DB调优查询性能

通过查看Document DB REST API,您可以观察到几个对查询操作有重大影响的重要参数:x-ms-max-item-count, x-ms-continuation.

Azure 门户不会自动帮助您优化 SQL,因此您需要在 sdk 或 rest api 中处理此问题。

您可以设置Max Item Count 的并使用continuation tokens. Document Db sdk 支持无缝读取分页数据。你可以参考下面的python代码片段:

q = client.QueryDocuments(collection_link, query, {'maxItemCount':10})
results_1 = q._fetch_function({'maxItemCount':10})
#this is a string representing a JSON object
token = results_1[1]['x-ms-continuation']
results_2 = q._fetch_function({'maxItemCount':10,'continuation':token})

希望对你有帮助。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章