Azure DocumentDb存储限制 - 它们究竟是什么意思?

ric*_*ard 4 azure-cosmosdb

Azure DocumentDb似乎有一些奇怪的存储限制:

--------------------------------------------------------------------
| Entity                           | Default quota (Standard Offer)|
-------------------------------------------------------------------|
| Document storage per collection  | 250 GB*                       |
-------------------------------------------------------------------|
| Throughput per collection,       | 250,000 RU/s*                 |
| measured in Request Units per    |                               |
| second per collection            |                               |
-------------------------------------------------------------------|
| Request document size            | 512 KB*                       |
-------------------------------------------------------------------|
| Response document size           | 1MB                           |
-------------------------------------------------------------------|
Run Code Online (Sandbox Code Playgroud)

请求文档大小 - 这是否意味着在没有请求支持的情况下,在documentdb中发送存储的json有效负载的大小不能大于512KB?

此外,如果要求支持更大的请求文档大小,那么限制是什么?我可以要求1MB吗?2MB?

响应文档大小 - 这是否意味着json响应的大小不能超过1MB?除了最简单的实体之外,这几乎没有用.

And*_*Liu 19

更新:截至2016年12月,DocumentDB已将默认文档大小配额增加到2mb,页面大小配额增加到4mb

DocumentDB团队在这里.看起来我们的"限制"页面上的措辞可以改进......在此期间,请允许我尝试澄清:

文档大小配额(默认值:每个文档2MB)

每个文档的默认文档大小配额为2MB.换句话说,您可以在每个记录中存储<= 2MB的JSON - 而无需发送票证.参考:https://docs.microsoft.com/en-us/azure/cosmos-db/documentdb-resources#documents

我们正积极致力于一些长期改进,以广泛增加我们的默认配额.在此期间,您可以提交支持请求,以便在今天的DocumentDB帐户上预览更高的文档大小配额.

另外值得注意的是 - 大多数文件(一般来说)> 2MB都涉及大型无界数组 - 其中最好将每个数组元素抽象出来并作为单独的文档进行建模.

每页结果的响应大小配额(默认值:每页4MB)

需要明确的是 - DocumentDB允许任意大小的查询结果(例如1 KB,1 GB,1 TB等).

对于大型查询结果 - DocumentDB将对结果进行分页,每个页面将限制为响应大小配额(默认情况下,每页4MB).

为什么分页查询结果是一个非常酷的功能:

你有没有在另一个数据存储(除了DocumentDB)中运行查询,它似乎需要永远...如果一个查询需要一个小时才能完成 - 你怎么知道它是否需要几分钟与小时相比vs是进展正在进行取得了什么?

DocumentDB通过将查询结果拆分为可以迭代的一组页面来解决此问题.结果按照许多标准分页:

  • 每页最大响应大小:4 mb
  • 每页最长时间限制:5秒
  • 如果您使用大量缓冲区耗尽预配置吞吐量(取决于您配置的吞吐量)

这意味着您可以立即流式传输并利用查询结果,并控制恢复执行查询的速率.

以下代码段说明了如何使用C#.NET SDK一次检索1个页面的查询结果:

var query = client.CreateDocumentQuery<Family>(collectionUri, "SELECT * FROM Families", options).AsDocumentQuery();
while (query.HasMoreResults)
{
    foreach (Family family in await query.ExecuteNextAsync())
    {
        families.Add(family);
    }
}
Run Code Online (Sandbox Code Playgroud)

以下代码段说明了如何通常让客户端SDK迭代分页结果并代表您实现整个查询结果:

var families= client.CreateDocumentQuery<Family>(collectionUri, "SELECT * FROM Families", options).toList();
Run Code Online (Sandbox Code Playgroud)

  • @AndrewLiu我有一个疯狂的时间找到当前的文件大小限制...这是发布在任何我可以留意并回头的地方吗? (8认同)
  • @AndrewLiu随着发布/重命名为CosmosDB,上面有任何改变吗? (5认同)
  • 我们可以将req/resp大小提高,具体取决于特定方案的详细信息.是的,我们正在努力支持更大的文档大小(默认情况下):) (2认同)