dream feature coming from mongodb 2.0

本文涉及的产品
云数据库 MongoDB,独享型 2核8GB
推荐场景:
构建全方位客户视图
简介:
mongoDB 2.0已经发布,带来了许多令人振奋的特性,越来越像企业级的数据库了.
下面简单的介绍一下,
1.  compact command
compact 命令主要的功能是重组collection,重建索引,类似整理碎片。2.0以前需要通过repair database来达到同样的目的,因此会中断全库的操作。compact 只中断单个collection的操作。同时compact操作不会被复制,因此在replica set环境,SLAVE节点也需要做同样的操作才能达到整理碎片的目的。

3. default stack size
默认stack size值降低到1MB或者小于系统默认设置,当数据库被连接数量很大(如>1000个连接)是可以减少mongod线程的内存开销。

4. index performance enhancements
mongoDB2.0的索引比以前来说,空间占用约减少25%,性能提升25%。在建立索引的时候需要加上{v:1}的标记位。如果不想使用新的索引格式,标记为{v:0}。因此如果加了{v:1}从2.0降级到1.8需要重建索引。

5. sharding authorizaiton
以前sharding是不支持auth的,会产生BUG。现在支持了。

6. replica set enhancements
6.1 priorities
以前replica set支持的优先级只有0和1,即0不提升为primary,1可以提升为primary。现在的优先级范围是0到1000的浮点型数值。
例如:
A的优先级是4 (primary)
B的优先级是2
C的优先级是3
当A挂掉了,或者不可用。选举发生的时候,如果B和C的up-to-date一致 (并且与primary的数据差异在10秒内)。那么C会被选举为primary。
如果C和A的差异超过了10秒,那么B将被选举为PRIMARY。如果B和C都进入了up-to-date状态,但是B比较接近A,那么还是C被选举为PRIMARY。而B将产生一个ROLLBACK文件,需要手工ROLLBACK超过C的部分数据。
这里算是高可用的一个折中方案吧。对于数据要求严谨的可能不太适用。

6.2 datacenter awareness
这是一个令人期待的特性,在做系统架构设计时,可以考虑到数据库节点的地域分布,机架分布。给replica set里的每个member都打上1个或者多个TAG。
利用这些TAG,和getLastError,可以控制这条DML操作需要在多少个打了某个你需要的TAG的MEMBER里面成功之后才返回。
例如,

Make sure there are at least three copies of the data and it is present on at least two continents.

All of the rules up until now have only had one condition, but you can include as many and-conditions as you want. Suppose we have the following:

Server Tags
S1 {"continent" : "nAmerica", "copies" : "S1"}
S2 {"continent" : "nAmerica", "copies" : "S2"}
S3 {"continent" : "Europe", "copies" : "S3"}
S4 {"continent" : "Africa", "copies" : "S4"}
S5 {"continent" : "Asia", "copies" : "S5"}

Then create a mode like:

level : {copies : 3, continent : 2} 

Note that modes can contain as many clauses as you need.

{    _id : replSetName,    members : [        {            “_id” : 0,            “host” : S1,            “tags” : {}        },        ...    ],    settings : {        getLastErrorModes : {            level : {copies : 3,continent : 2}        }    } }
使用下面的命令插入数据时,确保数据至少有3个拷贝,并且在2个地域被写入。
db.foo.insert(doc, {w : "level"})

6.3 w:"majority"
majority可以认为是少数服从多少的意思,如5个节点的replica set。majority就是3。
db.foo.insert(doc, {w : "majory"})
在5个节点的replica set环境。表示至少有3个节点被写入才返回正常。

7. journal 增强
7.1 journal压缩后写入磁盘,缩短了写入时间,降低磁盘占用。
7.2
2.0开始,journalCommitInterval支持配置,默认是100MS。配置范围2到300毫秒。
其实这个journal有点类似PostgreSQL在配置了synchronous_commit = off 时的wal_writer_delay 参数。
间隔多少时间做一次FSYNC,把journal的缓存写入到磁盘。
7.3
 {j: true}
DML操作时可以使用这个参数,使用之后journal会被立即写入到磁盘,不必等待journalCommitInterval的发生。使用这个参数那么这笔DML操作即达到了ACID的D的要求。

其他的可以参看release notes.

目录
相关文章
|
12月前
|
并行计算 Java 数据处理
SpringBoot高级并发实践:自定义线程池与@Async异步调用深度解析
SpringBoot高级并发实践:自定义线程池与@Async异步调用深度解析
763 0
|
设计模式 弹性计算 人工智能
阿里技术专家详解DDD系列 第四讲 - 领域层设计规范
在一个DDD架构设计中,领域层的设计合理性会直接影响整个架构的代码结构以及应用层、基础设施层的设计。但是领域层设计又是有挑战的任务,特别是在一个业务逻辑相对复杂应用中,每一个业务规则是应该放在Entity、ValueObject 还是 DomainService是值得用心思考的,既要避免未来的扩展性差,又要确保不会过度设计导致复杂性。
|
安全 关系型数据库 MySQL
Linux云服务器CentOS7版本下安装mysql5.7
Linux云服务器CentOS7版本下安装mysql5.7
|
10月前
|
数据采集 机器学习/深度学习 人工智能
《智启新材:人工智能重塑分子结构设计蓝图》
在科技飞速发展的今天,新材料研发竞争激烈,人工智能(AI)以其强大的数据分析和算法能力,为分子结构设计带来革命性突破。传统方法耗时长、成功率低,而AI能快速处理海量数据,挖掘规律,构建精准模型,大幅缩短研发周期,提高成功率。无论是在药物研发还是工业材料领域,AI均展现出巨大潜力,如优化航空航天材料性能、设计新型碳纤维复合材料等。尽管面临数据质量和可解释性挑战,AI在新材料领域的前景依然广阔,正引领材料创新新时代,推动能源革命与物联网发展。
170 9
|
12月前
|
JSON 前端开发 数据格式
@RequestMapping运用举例(有源码) 前后端如何传递参数?后端如何接收前端传过来的参数,传递单个参数,多个参数,对象,数组/集合(有源码)
文章详细讲解了在SpringMVC中如何使用`@RequestMapping`进行路由映射,并介绍了前后端参数传递的多种方式,包括传递单个参数、多个参数、对象、数组、集合以及JSON数据,并且涵盖了参数重命名和从URL中获取参数的方法。
939 0
@RequestMapping运用举例(有源码) 前后端如何传递参数?后端如何接收前端传过来的参数,传递单个参数,多个参数,对象,数组/集合(有源码)
|
Web App开发 监控 JavaScript
【Node系列】REPL详解
Node.js REPL(Read-Eval-Print Loop)是一个交互式环境,允许用户在命令行中直接输入JavaScript代码并立即看到结果。REPL是Node.js的一个重要组成部分,它提供了一个方便的方式来测试代码片段、快速尝试新功能或进行调试。
284 1
|
JavaScript 前端开发 安全
java动态脚本执行效率对比评测
本文作者针对实际场景及需求特性,经过安全性,易用性等综合评估,再结合工作场景选择javascript、lua、原生java进行性能测评。
872 0
java动态脚本执行效率对比评测
|
边缘计算 运维 Anolis
干货满满,8 大技术分享!龙蜥社区走进中兴通讯 MeetUp 圆满结束
10位技术大咖与现场参会者探讨了边缘及嵌入式场景下泛操作系统技术的发展与生态建设。
|
数据安全/隐私保护
注销备案须知及操作步骤
若您的网站已经在阿里云成功备案,现要停止该网站的服务,需注销主体或网站在工信部的备案信息。
3455 0
|
存储 JavaScript 前端开发
区块链代币支付钱包(trx/trc20代币/usdt)对接开发
区块链代币支付钱包(trx/trc20代币/usdt)对接开发