从DocumentDb读取整个对象更快更有效吗?

时间:2016-01-17 01:56:33

标签: 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语句并尝试只读取玩家从文件?

1 个答案:

答案 0 :(得分:4)

只返回玩家在网络上的效率会更高,因为您返回的数据较少。而且,您还应该能够查看为您的查询刻录的请求单位。

例如,我将您的文档放入我的一个集合中并在门户网站中运行两个查询(如果您这样做,并查看门户网站的底部,您将看到生成的请求单元成本)。我略微修改了您的文档,其中包含唯一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

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