千家信息网

3分钟看完MongoDB3.6新特性

发表于:2025-11-13 作者:千家信息网编辑
千家信息网最后更新 2025年11月13日,3分钟看完MongoDB3.6新特性Default Bind to Localhost3.6版本起,默认使用localhost(127.0.0.1),多个ip使用逗号分隔:localhost,198.
千家信息网最后更新 2025年11月13日3分钟看完MongoDB3.6新特性





3分钟看完MongoDB3.6新特性



Default Bind to Localhost

3.6版本起,默认使用localhost(127.0.0.1),多个ip使用逗号分隔:localhost,198.51.100.1
除去部分2.6 RPM安装包是本地外,其余版本默认是All interfaces.


Authentication Restrictions

3.6版本起,新增authenticationRestrictions参数用于将数据库用户连接限制为指定的IP地址,请将authenticationRestrictions参数添加到以下内容:
Commands Methods
createUser db.createUser()
updateUser db.updateUser()
createRole db.createRole()
updateRole db.updateRole()


其他安全性增强功能

在使用TLS / SSL加密时,添加了opensslCipherConfig参数来控制OpenSSL密码。
如果启用了身份验证,则只能针对您创建的游标发出getMore。
添加了convertToCapped操作来恢复角色。

Change Streams

MongoDB 3.6支持使用副本集或分片使用Change Streams。必须是复制协议版本1,且WT存储引擎。

Change Streams允许应用程序实时了解到数据的更改,而不会增加tail oplog的复杂性和风险。 应用程序可以使用Change Streams来订阅集合上的所有数据更改,并立即响应这些更改。

您可以使用db.collection.watch()方法从任何3.6系列驱动程序打开更改流。 有关使用的完整说明,请参阅您的首选驱动程序的文档。

使用Change Streams必须开启3.6版本特性参数featureCompatibilityVersion
see https://docs.mongodb.com/master/reference/command/setFeatureCompatibilityVersion/#view-fcv

当数据到达集群中majority成员时,Change Streams才会立即通知客户端响应这些更改。
在开启权限的集群中,应用只能够使用Change Streams访问有权限的库和集合。
cursor = db.inventory.watch()
document = next(cursor)

Lookup Full Document for Update Operations

full_document来看完整而非增量的版本
cursor = db.inventory.watch(full_document='updateLookup')
document = next(cursor)
Resume a Change Stream
resume_token = document.get("_id")
cursor = db.inventory.watch(resume_after=resume_token)
document = next(cursor)

Causal Consistency

需要客户端使用MongoDB driver 3.6版本,以及需要数据库开启3.6特性参数featureCompatibilityVersion


Retryable Writes

重试只会重试1次,。对于可重试写入,MongoDB驱动程序会在遇到网络错误或遇到副本集故障转移时自动重试这些操作,在此期间副本集没有primary。
限制:
1.只有副本集和shard可用
2.数据库要求WT或in-memory存储引擎
3.需要客户端使用MongoDB driver 3.6版本,以及需要,开启3.6特性参数featureCompatibilityVersion。
4.writeconcern必须配置,i.e{w:0}不可用。
5.由于重试尝试只进行一次,可重试功能可以帮助解决暂时的网络错误,但不能解决持久的网络错误。
6.驱动程序将等待serverSelectionTimeoutMS秒,以在重试之前确定新的主节点。 可重试功能不会处理故障转移期超过serverSelectionTimeoutMS的情况。

注意:如果客户端应用程序在发出写入操作后暂时无法响应localLogicalSessionTimeoutMinutes,则当客户端应用程序开始响应(不重新启动)时,写入操作可能会重试并重新应用。


serverstatus

serverStatus新增 logicalSessionRecordCache项.

JSON Schema

MongoDB 3.6添加了$ jsonSchema操作符来支持使用JSON Schema进行文档验证。 有关详细信息,请参阅$ jsonSchema。

Replica Sets

弃用副本集协议版本0(pv0)。
添加了replSetResizeOplog命令来动态调整副本集成员的oplog的大小。适用于运行WiredTiger存储引擎的实例。
添加了catchUpTakeoverDelayMillis配置选项,指定节点在发起选举之前等待的时间,默认30秒。
对于使用协议版本1(pv1)的副本集,如果仲裁人发现与候选人有相同或更高优先级的节点在,他们将在选举中投票反对票。
添加oplogInitialFindMaxSeconds参数来调整副本集的成员在数据同步期间其find命令等待多久。默认60s
增加了waitForSecondaryBeforeNoopWriteMS参数,以指定如果afterClusterTime大于oplog的最近应用时间,则secondary服务器必须等待多长时间。默认10毫秒


Sharded Clusters

为mongos添加了ShardingTaskExecutorPoolMaxConnecting参数,以控制mongos将连接添加到mongod实例的速率。默认是2,仅对mongos有效
添加了orphanCleanupDelaySecs,它确定从源分片中删除迁移块之前的最小延迟。
现在可以对config数据库中的config.system.sessions集合进行分片。

Indexes

索引可以覆盖嵌套文档中字段的查询。
如果索引跟踪到哪个字段使其成为多键,则多键索引可以覆盖对非数组键的查询。
创建索引时,不能将*指定为索引的名称。

listdatabase

db.adminCommand( { listDatabases: 1, nameOnly: true} ) 添加了nameOnly执行命令时不会加锁,而不添加的话会请求库级锁。
db.adminCommand( { listDatabases: 1, filter: { "name": /^rep/ } } ) filter会过滤想看的数据库,支持正则表达式
修改了validate命令和db.collection.validate()方法的行为,只有WiredTiger存储引擎强制执行检查点,将所有内存中的数据刷新到磁盘,然后验证磁盘上的数据。
• The .system.profile entry for update and delete contains the entire update/delete document applied to the named collection.

dropDatabase

dropDatabase命令会等待drop完所有集合的命令传播到大部分副本集成员后执行。
对于在副本集和分片集群上运行的命令,响应文档包括operationTime和$ clusterTime。


Read Concern

新增available,对于非分片集群,"local"和"available"行为是相同的。 对于分片群集,"available"提供了对分区的更大容忍度,但如果分片正在进行块迁移,则可能会返回孤立文档。


总结




MongoDB3.6的诸多新特性中,限于时间和篇幅原因未能在本文全部阐述,可以看出多种新特性在存储引擎上的选择都要求使用WiredTiger存储引擎,该存储引擎也是MongoDB3.0版本起开始支持,MongoDB3.2版本起默认的存储引擎。多种新特性中,最让我感到开心的是动态调整oplog大小,这个对于传统oplog扩容来说,方便了非常之多,停机调整oplog大小的时代即将终结。由于编写时间也很仓促,文中难免会出现一些错误或者不准确的地方,不妥之处恳请读者批评指正。
喜欢的读者可以点个赞来个关注,您的赞美和关注是对笔者继续发文的最大鼓励与支持!

版本 数据 副本 参数 引擎 程序 存储 特性 命令 应用 客户 客户端 数据库 文档 时间 索引 支持 应用程序 错误 集群 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 数据库的实训报告作文 企业者 数据库连接失败 软件开发今后十年发展前景 北京互联网网络技术质量保证 大数据下的网络安全案例 夸克浏览器设置代理服务器 工业网络安全排行 创建数据库的命令 网络安全现场检查表 构建云服务器心的体会 安仁电脑软件开发培训学校 逍遥魔兽服务器外网架设教程 徐汇区创新软件开发服务优势 软件开发推荐笔记本2018 基础数据库错误 服务器在香港意味着啥 山东网络技术专升本 共青团网络安全教育平台 中国的服务器有安全问题吗 网络安全栅 服务器上哪里看was启动日志 给软件开发公司的感谢信 想学软件开发去哪个学校 振轩网络技术有限公司 中国网络安全大赛英文 王牌战争怎么开服务器里面的商店 海君软件开发有限公司 手机tft怎么显示服务器错误 计算机专业不喜欢做软件开发 建立网络安全月度报告制度
0