Azure DocumentDb 存储限制 - 它们到底是什么意思?
Azure DocumentDb Storage Limits - what exactly do they mean?
Azure DocumentDb 似乎有 some strange storage limits:
--------------------------------------------------------------------
| 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 |
-------------------------------------------------------------------|
请求文档大小 - 这是否意味着在没有请求支持的情况下发送到 documentdb 中存储的 json 有效负载的大小不能大于 512KB?
此外,如果请求支持的请求文档大小较大,那么有什么限制?我可以要求 1MB 吗? 2MB?
响应文档大小 - 这是否意味着 json 响应的大小不能超过 1MB?除了最简单的实体,这似乎对任何东西都没有用。
更新:截至 2016 年 12 月,DocumentDB 已将默认文档大小配额增加到 2mb,页面大小配额增加到 4mb
这里是 DocumentDB 团队。看来我们 "limits" 页面上的措辞可以改进...同时,请允许我尝试澄清一下:
文档大小配额(默认:每个文档 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 除外)中进行过查询,并且似乎需要很长时间...如果查询需要一个小时才能完成 - 您如何判断它是否会花几分钟还是花几个小时还是有进展?
DocumentDB 通过将查询结果拆分为一组您可以循环访问的页面来解决此问题。结果根据许多标准分页:
- 每页最大响应大小:4 mb
- 每页最大时间限制:5 秒
- 如果您用相当大的缓冲区耗尽了配置的吞吐量(取决于您配置的吞吐量)
这意味着您可以立即流式传输和利用查询结果,还可以控制恢复执行查询的速率。
以下代码段说明了如何使用 C# .NET SDK 一次检索一页查询结果:
var query = client.CreateDocumentQuery<Family>(collectionUri, "SELECT * FROM Families", options).AsDocumentQuery();
while (query.HasMoreResults)
{
foreach (Family family in await query.ExecuteNextAsync())
{
families.Add(family);
}
}
以下代码段说明了如何让客户端 SDK 以常规方式迭代分页结果并代表您具体化整个查询结果:
var families= client.CreateDocumentQuery<Family>(collectionUri, "SELECT * FROM Families", options).toList();
Azure DocumentDb 似乎有 some strange storage limits:
--------------------------------------------------------------------
| 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 |
-------------------------------------------------------------------|
请求文档大小 - 这是否意味着在没有请求支持的情况下发送到 documentdb 中存储的 json 有效负载的大小不能大于 512KB?
此外,如果请求支持的请求文档大小较大,那么有什么限制?我可以要求 1MB 吗? 2MB?
响应文档大小 - 这是否意味着 json 响应的大小不能超过 1MB?除了最简单的实体,这似乎对任何东西都没有用。
更新:截至 2016 年 12 月,DocumentDB 已将默认文档大小配额增加到 2mb,页面大小配额增加到 4mb
这里是 DocumentDB 团队。看来我们 "limits" 页面上的措辞可以改进...同时,请允许我尝试澄清一下:
文档大小配额(默认:每个文档 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 除外)中进行过查询,并且似乎需要很长时间...如果查询需要一个小时才能完成 - 您如何判断它是否会花几分钟还是花几个小时还是有进展?
DocumentDB 通过将查询结果拆分为一组您可以循环访问的页面来解决此问题。结果根据许多标准分页:
- 每页最大响应大小:4 mb
- 每页最大时间限制:5 秒
- 如果您用相当大的缓冲区耗尽了配置的吞吐量(取决于您配置的吞吐量)
这意味着您可以立即流式传输和利用查询结果,还可以控制恢复执行查询的速率。
以下代码段说明了如何使用 C# .NET SDK 一次检索一页查询结果:
var query = client.CreateDocumentQuery<Family>(collectionUri, "SELECT * FROM Families", options).AsDocumentQuery();
while (query.HasMoreResults)
{
foreach (Family family in await query.ExecuteNextAsync())
{
families.Add(family);
}
}
以下代码段说明了如何让客户端 SDK 以常规方式迭代分页结果并代表您具体化整个查询结果:
var families= client.CreateDocumentQuery<Family>(collectionUri, "SELECT * FROM Families", options).toList();