azure - 从 DocumentDb 读取整个对象是否更快、更高效?

标签 azure azure-cosmosdb

我试图了解从 Azure DocumentDb 读取整个文档是否比读取其中可能包含多个对象的属性更有效?

让我们使用这个篮球队对象作为示例:

{
   id: 123,
   name: "Los Angeles Lakers",
   coach: "Byron Scott",
   players: [
      { id: 24, name: "Kobe Bryant" },
      { id: 3, name: "Anthony Brown" },
      { id: 4, name: "Ryan Kelly" },
   ]
}

如果我只想获取球员列表,读取可以从中提取球员的整个球队文档是否更有效/更快,或者发送 SQL 语句并尝试仅读取球员是否更好从文档中?

最佳答案

仅返回玩家会提高网络效率,因为您返回的数据较少。而且,您还应该能够查看为您的查询烧录的请求单元。

例如,我将您的文档放入我的一个集合中,并在门户中运行两个查询(如果您执行相同操作,并查看门户底部,您将看到生成的请求单位成本)。我使用唯一 ID 和所有内容的引号稍微修改了您的文档,因此我可以通过门户加载它:

{
   "id": "basketball123",
   "name": "Los Angeles Lakers",
   "coach": "Byron Scott",
   "players": [
      { "id": 24, "name": "Kobe Bryant" },
      { "id": 3, "name": "Anthony Brown" },
      { "id": 4, "name": "Ryan Kelly" }
   ]
}

我首先选择了玩家数据:

SELECT c.players FROM c where c.id="basketball123"

RU 成本为 2.2:

RU of player data

然后我要求提供整个文档:

SELECT * FROM c where c.id="basketball123"

RU 成本为 2.24:

RU of all data

注意:您的文档尺寸非常小,因此这里实际上没有太大区别。但至少您可以看到返回子集的成本低于返回整个文档的成本。

关于azure - 从 DocumentDb 读取整个对象是否更快、更高效?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34834267/

相关文章:

azure - 无法使用 AAD 对 Azure Bot 进行身份验证(bot sdk 4)

c# - Azure HTTP 函数无法发布

azure - xp_cmdshell azure 数据工厂

azure - Azure DocumentDB 的技术基础是什么?

python - 使用托管身份将 Function App 连接到 CosmosDB

c# - 检查文档是否存在并根据 CosmosDB 中的结果插入的最佳方法是什么?

azure - 获取数组中包含具有特定电子邮件的项目的所有记录

azure-cosmosdb - 对于大量记录,我能否获取 Cosmos DB 表中所有记录的计数?

azure - 如何从 Azure 容器注册表中删除镜像

sql-server - SQL Server Data Tools 在轻度 DAX 计算中崩溃