广告
返回顶部
首页 > 资讯 > 数据库 >MongoDB中参数限制与阀值的示例分析
  • 671
分享到

MongoDB中参数限制与阀值的示例分析

2024-04-02 19:04:59 671人浏览 安东尼
摘要

这篇文章主要介绍mongoDB中参数限制与阀值的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!一、BSON文档BSON文档尺寸:一个document文档最大尺寸为16M;大于

这篇文章主要介绍mongoDB中参数限制与阀值的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

一、BSON文档

  • BSON文档尺寸:一个document文档最大尺寸为16M;大于16M的文档需要存储在GridFS中。

  • 文档内嵌深度:BSON文档的结构(tree)深度最大为100。

二、Namespaces

  • collection命名空间:.,最大长度为120字节。这也限定了database和collection的名字不能太长。

  • 命名空间的个数:对于MMAPV1引擎,个数最大为大约为24000个,每个collection以及index都是一个namespace;对于wiredTiger引擎则没有这个限制。

  • namespace文件的大小:对于MMAPV1引擎而言,默认大小为16M,可以通过在配置文件中修改。wiredTiger不受此限制。

三、indexes

  • index key:每条索引的key不得超过1024个字节,如果index key的长度超过此值,将会导致write操作失败。

  • 每个collection中索引的个数不得超过64个。

  • 索引名称:我们可以为index设定名称,最终全名为..$,最长不得超过128个字节。默认情况下为filed名称与index类型的组合,我们可以在创建索引时显式的指定index名字,参见createIndex()方法。

  • 组合索引最多能包含31个field。

四、Data

  • Capped Collection:如果你在创建“Capped”类型的collection时指定了文档的最大个数,那么此个数不能超过2的32次方,如果没有指定最大个数,则没有限制。

  • Database Size:MMAPV1引擎而言,每个database不得持有超过16000个数据文件,即单个database的总数据量最大为32TB,可以通过设置“smallFiles”来限定到8TB。

  • Data Size:对于MMAVPV1引擎而言,单个monGod不能管理超过最大虚拟内存地址空间的数据集,比如linux(64位)下每个mongod实例最多可以维护64T数据。wiredTiger引擎没有此限制。

  • 每个Database中collection个数:对于MMAPV1引擎而然,每个database所能持有的collections个数取决于namespace文件大小(用来保存namespace)以及每个collection中indexes的个数,最终总尺寸不超过namespace文件的大小(16M)。wiredTiger引擎不受到此限制。

五、Replica Sets

  • 每个replica set中最多支持50个members。

  • replica set中最多可以有7个voting members。(投票者)

  • 如果没有显式的指定oplog的尺寸,其最大不会超过50G。

六、Sharded Clusters

  • group聚合函数,在sharding模式下不可用。请使用mapReduce或者aggregate方法。

  • Coverd Queries:即查询条件中的Fields必须是index的一部分,且返回结果只包含index中的fields;对于sharding集群,如果query中不包含shard key,索引则无法进行覆盖。虽然_id不是“shard key”,但是如果查询条件中只包含_id,且返回的结果中也只需要_id字段值,则可以使用覆盖查询,不过这个查询似乎并没有什么意义(除非是检测此_id的document是否存在)。

  • 对于已经存有数据的collections开启sharding(原来非sharding),则其最大数据不得超过256G。当collection被sharding之后,那么它可以存储任意多的数据。

  • 对于sharded collection,update、remove对单条数据操作(操作选项为multi:false或者justOne),必须指定shard key或者_id字段;否则将会抛出error。

  • 唯一索引:shards之间不支持唯一索引,除非这个“shard key”是唯一索引的最左前缀。比如collection的shard key为{“zipcode”:1,”name”: 1},如果你想对collection创建唯一索引,那么唯一索引必须将zipcode和name作为索引的最左前缀,比如:collection.createIndex({“zipcode”:1,”name”:1,”company”:1},{unique:true})。

  • 在chunk迁移时允许的最大文档个数:如果一个chunk中documents的个数超过250000(默认chunk大小为64M)时,或者document个数大于 1.3 *(chunk最大尺寸(有配置参数决定)/ document平均尺寸),此chunk将无法被“move”(无论是balancer还是人工干预),必须等待split之后才能被move。

七、shard key

  • shard key的长度不得超过512个字节。

  • “shard key索引”可以为基于shard key的正序索引,或者以shard key开头的组合索引。shard key索引不能是multikey索引(基于数组的索引)、text索引或者geo索引。

  • Shard key是不可变的,无论何时都不能修改document中的shard key值。如果需要变更shard key,则需要手动清洗数据,即全量dump原始数据,然后修改并保存在新的collection中。

  • 单调递增(递减)的shard key会限制insert的吞吐量;如果_id是shard key,需要知道_id是ObjectId()生成,它也是自增值。对于单调递增的shard key,collection上的所有insert操作都会在一个shard节点上进行,那么此shard将会承载cluster的全部insert操作,因为单个shard节点的资源有限,因此整个cluster的insert量会因此受限。如果cluster主要是read、update操作,将不会有这方面的限制。为了避免这个问题,可以考虑使用“hashed shard key”或者选择一个非单调递增key作为shard key。(rang shard key 和hashed shard key各有优缺点,需要根据query的情况而定)。

八、Operations

  • 如果mongodb不能使用索引排序来获取documents,那么参与排序的documents尺寸需要小于32M。

  • Aggregation Pileline操作。Pipeline stages限制在100M内存,如果stage超过此限制将会发生错误,为了能处理较大的数据集,请开启“allowDiskUse”选项,即允许pipeline stages将额外的数据写入临时文件。

九、命名规则

  • database的命名区分大小写。

  • database名称中不要包含:/ .‘'$*<>:|?

  • database名称长度不能超过64个字符。

  • collection名称可以以“_”或者字母字符开头,但是不能包含”$”符号,不能为空字符或者null,不能以“system.”开头,因为这是系统保留字。

  • document字段名不能包含“.”或者null,且不能以“$”开头,因为$是一个“引用符号”。

最后记录下JSON嵌套中含有列表的查询方法,样例数据:

{
 "_id" : ObjectId("5c6cc376a589c200018f7312"),
 "id" : "9472",
 "data" : {
 "name" : "测试",
 "publish_date" : "2009-05-15",
 "authors" : [ 
  {
  "author_id" : 3053,
  "author_name" : "测试数据"
  }
 ],
 }
}

我要查询authors中的author_id,query可以这样写:

db.getCollection().find({'data.authors.0.author_id': 3053})

用0来代表第一个索引,点代表嵌套结构。但是spark mongo中是不能这样导入的,需要使用别的方法。

以上是“MongoDB中参数限制与阀值的示例分析”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注编程网数据库频道!

您可能感兴趣的文档:

--结束END--

本文标题: MongoDB中参数限制与阀值的示例分析

本文链接: https://www.lsjlt.com/news/58564.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • MongoDB中参数限制与阀值的示例分析
    这篇文章主要介绍MongoDB中参数限制与阀值的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!一、BSON文档BSON文档尺寸:一个document文档最大尺寸为16M;大于...
    99+
    2022-10-18
  • PHP中默认参数值的示例分析
    这篇文章将为大家详细讲解有关PHP中默认参数值的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。PHP 默认参数值下面的例子展示了如何使用默认参数。如果我们调用没有...
    99+
    2022-10-19
  • JavaScript中参数按值传递的示例分析
    小编给大家分享一下JavaScript中参数按值传递的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!定义ECMAScri...
    99+
    2022-10-19
  • Mongodb参数说明与常见错误处理的示例分析
    这篇文章将为大家详细讲解有关Mongodb参数说明与常见错误处理的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。示例:一、在 CentOS7 上安装 MongoD...
    99+
    2022-10-18
  • SpringBoot与SpringMVC中参数传递的示例分析
    小编给大家分享一下SpringBoot与SpringMVC中参数传递的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!一:普通参数与基本注解HandlerM...
    99+
    2023-06-20
  • MySQL中query_cache_type参数与使用的示例分析
    这篇文章主要为大家展示了“MySQL中query_cache_type参数与使用的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“MySQL中query_cache_type参数与使用的示...
    99+
    2023-06-20
  • JS中函数参数传递与同名参数的示例分析
    这篇文章主要为大家展示了“JS中函数参数传递与同名参数的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“JS中函数参数传递与同名参数的示例分析”这篇文章吧...
    99+
    2022-10-19
  • MySQL中slave_exec_mode参数的示例分析
    这篇文章主要介绍MySQL中slave_exec_mode参数的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!无意当中看到参数slave_exec_mode,从手册里的说明看...
    99+
    2022-10-18
  • mysql中innodb_flush_log_at_trx_commit参数的示例分析
    这篇文章主要介绍mysql中innodb_flush_log_at_trx_commit参数的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!一、参数解释0:log buffe...
    99+
    2022-10-18
  • MYSQL中my.cnf参数的示例分析
    这篇文章主要介绍了MYSQL中my.cnf参数的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。mysql常用配置文件参数介绍和使用方...
    99+
    2022-10-18
  • Oracle中out参数的示例分析
    这篇文章主要为大家展示了“Oracle中out参数的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Oracle中out参数的示例分析”这篇文章吧。Ora...
    99+
    2022-10-18
  • JQuery中AJAX参数的示例分析
    这篇文章主要介绍JQuery中AJAX参数的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!context类型:Object这个对象用于设置 Ajax 相关回调函数的上下文。也...
    99+
    2022-10-19
  • PHP中函数参数的示例分析
    小编给大家分享一下PHP中函数参数的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!PHP 函数参数可以通过参数向函数传递...
    99+
    2022-10-19
  • ​MySQL中用户与权限的示例分析
    小编给大家分享一下MySQL中用户与权限的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!MySQL用户与权限 ...
    99+
    2022-10-18
  • Python中__slots__限制属性的示例分析
    这篇文章将为大家详细讲解有关Python中__slots__限制属性的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。python可以做什么Python是一种编程语言,内置了许多有效的工具,Pyth...
    99+
    2023-06-14
  • vue中组件参数的示例分析
    这篇文章给大家分享的是有关vue中组件参数的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。1.vue中组件参数我们可以为组件的 prop 指...
    99+
    2022-10-19
  • iframe中各项参数的示例分析
    这篇文章主要为大家展示了“iframe中各项参数的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“iframe中各项参数的示例分析”这篇文章吧。ifram...
    99+
    2022-10-19
  • mongodb与sql关系型数据比较的示例分析
    这篇文章给大家分享的是有关mongodb与sql关系型数据比较的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。摸索了几天,大体也初步算入了mongodb的门,仔细一想,m...
    99+
    2022-10-18
  • python中逻辑回归限制的示例分析
    这篇文章主要为大家展示了“python中逻辑回归限制的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“python中逻辑回归限制的示例分析”这篇文章吧。1.逻辑回归的限制逻辑回归分类的时候...
    99+
    2023-06-25
  • C++中占位参数和默认参数的示例分析
    这篇文章将为大家详细讲解有关C++中占位参数和默认参数的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。1,默认参数在c++中,函数的形参列表中的形参是可以有默认值的。语法: 返回值类型 函数名 (...
    99+
    2023-06-29
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作