Mongodb参数限制和阀值

    Mongodb中有一些限制,需要开发者预先了解

 

一、BSON文档

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

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

 

二、Namespaces

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

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

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

 

三、indexes

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

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

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

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

 

四、Data

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

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

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

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

 

五、Replica Sets

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

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

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

 

六、Sharded Clusters

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

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

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

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

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

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

 

七、shard key

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

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

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

    4、单调递增(递减)的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

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

    2、Aggregation Pileline操作

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

 

九、命名规则

    1、database的命名区分大小写。

    2、database名称中不要包含:/ \.''$*<>:|?

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

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

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

QT+QTimer+QThread实现线程内的定时任务并且和主线程进行交互 在制作qt软件时,我们经常会用到qtimer定时器以及将其在非主线程中进行使用,甚至有的时候还需要和主线程进行交互。我总结了两种用法,仅供参考。以上即为QTimer和QThread联合使用的学习记录。 阅读详情

相关推荐

激光条纹中心提取——Steger

激光条纹中心提取-Steger 好久没有记录了,记录一下今天学习的内容,据说Steger在激光条纹中心提取上神一般的存在。文章和代码都分享给大家了哈,其中有四个文件,3个C++,一个python,python一个抠图文件,3个c++包含背景图+原图, 单张图提取, 多张图提取。 分享代码 #include <opencv2\core.hpp> #include <opencv2\highgui.hpp> #include <opencv2\imgproc.hpp> #i

CharmsLUO的博客 5380

mongodb 中的"坑"系列 --- 单个文档16M大小限制

仔细想想, 我们早已经进入了海量数据的时代, 数据量早已经不是M来形容

木木_Ray的专栏 5万+

大语言模型无代码构建知识图谱概述

由示例可以看出,大语言模型的泛化能力能够非常精准的抽取文本中的实体、关系等知识信息。其能够大大提升知识提取的效率与准确性。HuggingFists低代码平台的出现进一步促进了知识图谱构建的效率。它大幅降低了知识图谱构建人员的技术要求,使得从事该工作的人员有了更大的选择范围。不断下降的构建成本,意味着可以有更多的客户享受到知识图谱带来的业务价值。

colorknight的专栏 1817

html+CSS遇到的问题(1)(持续更新)

line-height等于box时为何垂直居中 这是对单行文本才适用的,line-height的大小是文字本身的大小加上上下两行的大小,比如高100px的盒子,设置line-height30px,字体30px,那么除了文字外的上下距离(上下行间距)就是(100-30)/2=35px,line-height是块级元素,没文字什么事。 ...

weixin_45289501的博客 246

机器人系统能用MQTT5.0代替ROS2吗?

更为灵活和友好的方案是通过把ROS(Robot Operating System)与MQTT(Message Queuing Telemetry Transport)协议相结合的解决方案,利用MQTT的轻量级、跨平台和广泛适用性特点,扩展ROS系统的通信能力,或将非ROS系统接入ROS网络。

QzmAIoT 2163

ORBSLAM3运行记录(单目+IMU)

ORBSLAM3运行记录1.单目+IMU数据集运行记录自己做的其它测试2.单目+IMU自己采集数据运行记录测试结果 1.单目+IMU数据集运行记录 ORBSLAM3没有预留ROS下单目+IMU的结点,这个需要自己去写代码添加,可以参考这篇博客,《ORBSLAM3 用ROS接口运行双目IMU和单目IMU模式》。我的ROS结点为Mono-IMU,字典文件ORBvoc.txt在ORBSLAM3 / Vocabulary文件夹中,配置文件EuRoC.yaml在ORB_SLAM3 / Examples / Monoc

yys2324826380的博客 1万+

MongoDB笔记二之基本数据操作

MongoShell可以将 shell 连接到任何MongoDB 实例(只要你的计算机与MongoDB 实例所在的计算机 能够连通)。在启动shell 时指定机器名和端口,就可以连接到一台不同的机器(或 者端口): $ mongo some-host:30000/myDB MongoDB shell version: 2.4.0 connecting to: some-host:3000

one-programmer 670

【Bug已解决】codex: rate limit 429 / Too many requests / RPM exceeded — CodeX CLI 速率限制解决方案

CodeX CLI 触发 429 速率限制(RPM/TPM/并发)的解决方案,含请求间隔、自动重试、便宜模型、Tier 升级与多 Key 轮换。

博客 4891

MongoDB 的使用限制和瓶颈

原文地址https://docs.mongodb.org/manual/reference/limits/BSON文档BSON 文档大小BSON 最大是16M限制BSON文档大小的原因是:1.文档内存占用2.网络传输时带宽的占用3.要存储大文档请使用GridFSBSON 内嵌文档的深度MongoDB 支持...

weixin_34268753的博客 1549

[网络安全自学篇] 七十三.WannaCry勒索病毒复现及分析(四)蠕虫传播机制全网源码详细解读

这是作者网络安全自学教程系列,主要是关于安全工具和实践操作的在线笔记,特分享出来与博友们学习,希望您喜欢,一起进步。前文分享了逆向分析OllyDbg动态调试工具的基本用法,包括界面介绍、常用快捷键和TraceMe案例分析。这篇文章将继续详细讲解WannaCry蠕虫的传播机制,带领大家详细阅读源代码,分享WannaCry勒索病毒是如何传播感染的。作者分析该病毒一个月,一方面觉得自己技术菜,另一方面深知系统安全需要坚持,继续加油。希望文章对您有所帮助~

杨秀璋的专栏 1万+

YOLOv8改进 | Conv篇 | DWRSeg扩张式残差助力小目标检测 (附修改后的C2f+Bottleneck)

本文内容给大家带来的DWRSeg中的DWR模块来改进YOLOv8中的C2f和Bottleneck模块,主要针对的是小目标检测,主要创新点可以总结如下:多尺度特征提取机制的深入研究和创新的DWR模块和SIR模块的提出这种方法使得网络能够更灵活地适应不同尺度的特征,从而更准确地识别和分割图像中的物体。通过本文你能够了解到DWRSeg的基本原理和框架,并且能够在你自己的网络结构中进行添加(DWRSeg需要增加一定的计算量一个DWR模块大概增加0.4GFLOPs)。

Snu77的博客 9571

MongoDB 使用规范与限制及最佳实践

MongoDB 灵活文档的优势 灵活库/集合命名及字段增减 同一字段可存储不同类型数据 Json 文档可多层次嵌套文档 对于开发而言最自然的表达 MongoDB 灵活文档的烦恼 数据库集合字段名千奇百怪 同一字段数据类型各不一样 业务异常可能写入“脏”数据

m0_37062111的博客 1280

大数据安全 | 期末复习(上)| 补档

大数据定义:无法在一定时间范围内用常规软件工具进行捕捉、管理和处理的数据集合,是需要新处理模式才能具有更强的决策力、洞察发现力和流程优化能力的海量、高增长率和多样化的信息资产。

知识库搭建ing 2589

MongoDB参数限制和阀值

今天搜索spark mongo的资料,意外发现了MongoDB的一些知识,这些都是之前没有接触过的,所以专门记录下。一、BSON文档 1、BSON文档尺寸:一个document文档...

崔斯特的博客 201

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

json最大长度限制_MongoDB参数限制和阀值

今天搜索spark mongo的资料,意外发现了MongoDB的一些知识,这些都是之前没有接触过的,所以专门记录下。一、BSON文档 1、BSON文档尺寸:一个document文档最大尺寸为16M;大于16M的文档需要存储在GridFS中。 2、文档内嵌深度:BSON文档的结构(tree)深度最大为100。二、Namespaces 1、collection命名空间:.,...

weixin_39996101的博客 2791

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

Mongodb 参数限制/阀值/

本文转自:http://shift-alt-ctrl.iteye.com/blog/2243083 一、BSON文档     1、BSON文档尺寸:一个document文档最大尺寸为16M;大于16M的文档需要存储在GridFS中。     2、文档内嵌深度:BSON文档的结构(tree)深度最大为100。   二、Namespaces     1、coll

cx136295988的博客 4299

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

Mongodb——配置详解

原文鏈接文章:https://blog.csdn.net/iteye_19607/article/details/82640616 配置详解——性能配置 存储配置 storage: dbPath: /data/mongodb/db indexBuildRetry: true journal: enabled: true directoryPerDB: false engine: mmapv1 syncPeriodSecs: 60 mm

weixin_44275259的博客 1455

MongoDB3.X参数文件

1、processManagement: fork: <true | false> 描述:是否以fork模式(后台进程模式)运行mongod/mongos进程,默认为false。 pidFilePath:<路径> 描述:配合"fork:true"参数,将mongod/mongos进程ID写入指定的文件,如果不指定,将不会创建PID文件。 2、net: bin...

weixin_30731305的博客 318

MongoDB的几个特性

一、主从 1、主从配置 mongodb提供主从配置,主从配置需要两个数据库节点,可以在不同的两台机器,也可以在同一台机器(可使用--dbpath参数指定数据库目录)。主 数据库会记录在其上的所有操作oplog,从数据库定期轮询主数据库获取这些操作,然后对自己的数据副本执行这些操作,从而保证主从数据的一致性。 2、互为主从 数据库自动协调某个时间点上的主从关系。一开始,数据库会判断哪个为主

kelindame的专栏 3672

mongodb的一些文件介绍

# mongod.conf # for documentation of all options, see: # http://docs.mongodb.org/manual/reference/configuration-options/ # where to write logging data. systemLog: #系统日志 destination: file ...

weixin_34124651的博客 454

mongodb配置文件详解

mongod.conf 手册 <meta charset="utf-8"> https://docs.mongodb.com/manual/reference/configuration-optionshttps://docs.mongodb.com/manual/reference/parameters/ 进程管理 processManagement: fork: true # for

m0_67900727的博客 1326

MongoDB主配置文件

MongoDB主配置文件(模块 & 参数详解)

JohnnyG2000的博客 869

Mongodb 新版配置文件详解

mongod.conf $ vi /etc/mongod.conf 手册   https://docs.mongodb.com/manual/reference/configuration-options   https://docs.mongodb.com/manual/reference/parameters/ 进程管理 processManagement:   fork...

MatrixGod的博客 9008

dex对mongodb索引优化及监控

一、mongodb自带的就有监控,根据这些监控信息,可以做为优化的依据。     mongodb把要输出的慢语句,存在于db.system.profile。与mysql的slowlog配置相似,需要进行参数设置,mongo才会输出慢语句到profile。有两个参数来控制profile的输出 db.setProfilingLevel(level,slowms); 默认为0 不输出 1按第二个...

truemylife 296
上一篇: Mongodb配置说明
下一篇: Mongodb操作与基本特性
iteye_19607
博客等级 码龄8年 34粉丝 198原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值