【问题标题】:Efficient way of returning item list from azure cosmos db从 azure cosmos db 返回项目列表的有效方法
【发布时间】:2019-03-06 07:42:24
【问题描述】:

我想在azure cosmos db中存储以下形式的数据:

{
  "id": "guid",
  "name": "a name"
  "tenantId": "guid",
  "filter1": true,
  "filter2": false,
  "hierarchicalData" :{}
}

每个文档最大为几兆字节。

我需要能够为 {tenantId,filter1,filter2} 的给定搜索返回一个 {id, name} 列表(100

从文档中,我看到我可以使用投影进行 SQL 查询,但不确定是否有更好的方法。

在有效利用 RU 的同时,有没有理想的方法来完成上述工作?

【问题讨论】:

  • 几MB?有 2MB 的文档限制。如果您的文档层次结构可以无限增长,您最终会用完空间并且您的模型将被破坏。也就是说:没有看到您正在寻找的输出示例,就不可能提供解决方案。请相应地编辑您的问题。
  • 嗨,现在有更新吗?我的回答对你有帮助吗?
  • 您尝试过测试吗?您使用了什么查询/索引?您认为可接受的 RU 使用量是多少?您的实际(不可接受的)RU 使用量是多少?请注意,“理想”和“高效”的解决方案总是从“取决于”开始。
  • 感谢@JayGong,您的回答确实有帮助。大多数分层数据不需要索引,因此排除它是个好主意。
  • @DavidMakogon 很好,我不知道 2MB 的限制。我们将需要对最大可能大小进行一些建模,因为该限制可能会排除我们的使用

标签: azure-cosmosdb azure-cosmosdb-sqlapi


【解决方案1】:

在有效利用 俄罗斯?

也许很难说有一种最佳方法可以有效利用 RU 并提高查询性能。

当然,根据您的情况,您可以使用 SQL 查询来获取带有特定过滤器的数据。我只是提供了几种提高查询性能的方法,如下所示:

1.添加分区键。

如果你的数据是分区的,那么当你用sql提供分区键时,它只能扫描特定的分区,这样它就会保存RU。请参考document

2.使用最近的sdk。

Azure Cosmos DB SDK 不断改进以提供最佳性能。请参阅 Azure Cosmos DB SDK 页面以确定最新的 SDK 并查看改进。

3.从索引中排除未使用的路径以加快写入速度。

Cosmos DB 的索引策略还允许您通过利用索引路径(IndexingPolicy.IncludedPaths 和 IndexingPolicy.ExcludedPaths)指定要在索引中包含或排除哪些文档路径。对于预先知道查询模式的场景,使用索引路径可以提高写入性能并减少索引存储。

4.如果数据太大,使用延续令牌。

使用延续令牌对数据进行分页以提高查询性能。文档: https://www.kevinkuszyk.com/2016/08/19/paging-through-query-results-in-azure-documentdb/

更多详情,请参考here

【讨论】:

  • 正如所写,确实没有办法回答这个问题。太模糊了。我们甚至不知道层次结构数据是什么样的。
猜你喜欢
  • 2021-01-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多