当前位置: 首页 > 知识库问答 >
问题:

Azure Cosmos DB的MongoDB API的实际文档大小限制?

宋伟泽
2023-03-14

我做了一些测试,发现CosmosDB的最大文档大小限制似乎与文档不一致:https://docs . Microsoft . com/en-us/azure/cosmos-db/concepts-limits # per-item-limits

  1. 创建 Cosmos DB 核心 (SQL) 数据库
  2. 尝试将2093334字节的项目插入到“项目”表中
  • 它之所以成功,是因为它:
    < li >由于项目是< code >,它失败并显示错误代码(413)

出现RequestEntityTooLarge错误:Microsoft。azure . cosmos . cosmos异常:响应

结论:结果符合留档

  1. 创建宇宙数据库 (MongoDB) 数据库
  2. 尝试将2093334字节的项目插入到“项目”集合中
    < li >因为是< code >所以成功
  • 它仍然成功,即使它是
  • 即使是~4.31Mb和
  • 仍然成功
    < li >它失败并显示错误代码(413):

错误:MongoDB.Driver.MongoWriteException:写入操作导致错误。

结论:结果与文档不匹配

字节数按以下方式计算:

var itemStr = JsonConvert.SerializeObject(item);
var bytes = Encoding.UTF8.GetBytes(itemStr);
Console.WriteLine($"total num of bytes: {bytes.Length}");

关于一个大项目成功写入MongoDB,我也通过mongoshell验证了存储的文档大于4Mb:

Object.bsonsize(db.Items.findOne({_id:ObjectId("61dec458316798c759091aef")}))
  1. 留档中是否有其他地方对这些尺寸有不同的定义?
  2. 我没有正确解释这些结果吗?

非常感谢任何帮助,谢谢!


共有1个答案

刘永望
2023-03-14

Cosmos DB的MongoDB API具有压缩数据的二进制存储格式。压缩量取决于文档中数据的形状。层次结构较深的文档往往比较平坦的文档压缩得更多。因此,您可以存储大于文档中2MB限制的未压缩数据。

虽然可以使用Cosmos DB的MongoDB API存储超过2MB的未压缩数据,但我不建议这样做,因为在插入之前,您不可能知道压缩数据的数量。

我还应该指出,一般来说,在成本和延迟方面,较小文档数量越多,性能就越好(这也适用于原生MongoDB)。因此,在为应用程序建模数据时,请记住这一点。

 类似资料:
  • 问题内容: 有一种通用的方法,可以使用位掩码将多个值存储在一个变量中。例如,如果用户对某项具有读,写和执行特权,则可以通过说出该特权并将其转换为一个数字,然后将它们加在一起得到7。 我在几种Web应用程序中使用了这种技术,通常将变量存储到一个字段中,并根据不同值的数量为它提供MEDIUMINT或其他类型。 我感兴趣的是,这样存储的值数量是否有实际限制?例如,如果数字超过64,则不能再使用(64位)

  • 我正在尝试从构建镜像。构建后,命令报告的镜像虚拟大小为1.917 GB。我登录检查大小(),它是573 MB。我很确定这个巨大的大小通常是不可能的。这是怎么回事?如何获得正确的图像大小?更重要的是,当我推送这个存储库时,大小是1.9 GB而不是573 MB。 输出

  • 问题内容: 我得到一个JFrame,我想显示一个带有边框的JLabel,其填充可能为50px。当我将JFrame的大小设置为750、750并将JLabel的大小设置为650、650并将位置设置为50、50时,它显示为奇怪……这是我的代码: 因此,我认为顶部的标题栏也包含在大小中。在图形中,您可以使用。现在,Swing / JFrame有类似的东西吗? 问题答案: 首先获取由帧修剪的像素。 另一种更

  • 问题内容: 我需要在Java中编写一个算法(对于android应用程序)来读取包含更多文件夹的文件夹,以及每个包含图像和音频文件的文件夹,因此结构如下: 我的问题是我需要将档案的大小限制为16mb,并且在运行时,根据需要创建尽可能多的档案,以包含主文件夹中的所有文件。 我从网上尝试了几个示例,并阅读了Java文档,但是我无法理解并按照需要的方式将它们放在一起。有人以前做过这个吗,或者有一个链接或一

  • 问题内容: 我阅读了有关Lucene限制2Gb文档的说明。在Elasticsearch中可以建立索引的文档大小是否还有其他限制? 问题答案: Lucene内部使用一个字节缓冲区,该缓冲区使用32位整数进行寻址。根据定义,这限制了文档的大小。因此,理论上最大2GB。 在ElasticSearch中: ES GitHub代码中有一个,并将其设置为或。因此,基本上, 2GB是通过HTTP进行批量索引的最

  • 本文向大家介绍javascript实现限制上传文件大小,包括了javascript实现限制上传文件大小的使用技巧和注意事项,需要的朋友参考一下 前言:   项目中经常用到需要上传文件、照片等功能,同时需要限制所上传文件的大小。很多插件都会采用后台请求验证,前端Js校验比较少。本篇介绍一个前端JS便捷判断上传文件大小的方法。 这个是比较好的 下面的代码不建议使用   代码很简单,关键就是怎么用JS拿