azure - 查询 cosmos db 中的大型集合

标签 azure azure-cosmosdb

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

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

执行此搜索的最佳方式是什么? 是否可以通过 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/

相关文章:

sql - 带数组的 DocumentDB 查询

azure - Windows Azure 中的网站可用性

azure - Azure HDInsights 中的 headnodehost

c# - 如何构建 Webform 解决方案并将其部署在 Azure DevOps 中?

javascript - 查询 CosmosDb - 其中数组包含数组中的项目

azure - 为什么在生产中使用 CreateDatabaseIfNotExistsAsync 和其他类似的方法?

java - 在向 azure-cosmosdb 发起查询时,有什么方法可以在 Java JPA (DocumentDbRepository) 中编写自定义或 native 查询吗?

Azure Cosmos 数据库触发器

java - 从 blob 存储下载虚拟目录

ReactJS 图像未显示在 azure 应用程序服务中,但在本地显示