目前,我们的文档数据库中有一个非常大的集合。 我们希望能够根据集合中文档中的某些字段来过滤集合。
当我通过门户执行此查询时,需要很长时间,因为数据太多。 当我通过函数应用程序执行此查询时,由于超时,它会在五分钟后中断。
执行此搜索的最佳方式是什么? 是否可以通过 Application Insights 或某种方式执行此搜索? 我知道查询本身可能需要很长时间,但它不应该被阻塞。通过门户进行查询会阻止所有其他操作。
提前致谢。 问候
最佳答案
首先,您需要了解的是文档数据库对响应页面大小
施加了限制。此链接总结了其中一些限制:Azure DocumentDb Storage Limits - what exactly do they mean?
其次,如果要查询Document DB中的大数据,就得考虑查询性能问题,请引用这篇文章:Tuning query performance with Azure Cosmos DB .
通过查看Document DB REST API ,您可以观察到几个对查询操作有重大影响的重要参数:x-ms-max-item-count、x-ms-continuation。
Azure 门户不会自动帮助你优化 SQL,因此你需要在 sdk 或 REST API 中处理此问题。
您可以设置值 Max Item Count并使用延续标记
对数据进行分页。 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})
希望对您有帮助。
关于azure - 查询 cosmos db 中的大型集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48887875/