MongoDB的写入安全级别

太阳1年前技术文章661

一、MongoDB写入安全级别

为提高数据写入的安全性,在客户端可以设置相应的安全级别来进行控制,MongoDB提供四种写入级别,分别是:

1、非确认式写入(Unacknowledged)

非确认式写入不会返回任何结果,对于写操作,在没有得到服务器写入确认的情况下就立即返回结果。好处是写入效率高,不会阻塞客户端,缺点是无法确定数据是否真正的写入成功

2、确认式写入(Acknowledged)

写操作必须得到服务器的写入确认,如果写入失败会返回“DuplicateKey Error”。此时如果有数据没有写入journal日志,更没有落盘,若服务器突然断电,此时会丢失100ms的数据。

3、日志写入(Journaled)

写操作不仅要得到服务器的写入确定,还要求数据写入journal才会返回数据写入成功,保证数据库数据安全

4、副本集确定式写入(Replica Acknowledged)

不仅要得到主节点的写入确定,还需要得到备份节点的写入确定才会返回客户端数据写入成功。

二、如何控制写级别

MongoDB的写入界别是通过客户端的getLastError来实现的。

1、getLastError参数解释

字段

类型

含义

j

Boolean

如果为 true,就不需要等待写操作写入 journal 才返回。

w

integer or string

如果为 1,表明只需等待 Primary 写入确认即可返回。 如果为 2,表明必须等待 Primary 和 Secondary 都写入确认才可返回。

fsync

Boolean

如果为 true,表明数据必须落地磁盘才可返回。 其实只要写操作写入 journal ,数据就不会丢啦。

wtimeout

integer

等待的毫秒数,指定毫秒数内未返回,抛出错误。

如需实现以上的隔离级别,只需要在执行完操作后,立马执行getLastError命令即可。

2、各写入级别以及对应getLastError参数

写入级别

getLastError参数

Unacknowledged

不调用getLastError

Acknowledged

{w: 1}

Journaled

{w: 1, j: true}

Replica Acknowledged

{w: 2}

//测试数据
var doc1 = {
    name:"xiaoli",
    age:20,
    address:
    {
        province:"GuangDong",
        city:"ShenZhen"
    }
}
- 非确认式写入
var result = db.aa.insert(doc1,{writeConcern:{w:0}})
printjson(result)
- 确认式写入
var result = db.aa.insert(doc1,{writeConcern:{w:1}})
printjson(result)
- 日志写入 + wtimeout
var result = db.aa.insert(doc1,{writeConcern:{w:1,j:true,wtimeout:5}})

相关文章

MySQL运维实战之ProxySQL(9.6)SQL黑名单

利用mysql_query_rules表中的error_msg字段,可以实现SQL黑名单的功能。如果规则设置了error_msg,当SQL语句匹配这条规则时,proxysql会直接将error_msg...

Linux系统调优参数应用实践

Linux系统调优参数应用实践

1 基于内存方面的性能参数调优1.1 cache与buffer解读1.1.1 cache出现的原因与功能计算机硬件中CPU、内存、磁盘是最主要的三大部分,其中,CPU发展到今天,执行速度最快,而内存相...

CDH实操--集群卸载

CDH实操--集群卸载

1、停止正在运行的服务a、控制台停止集群服务b、控制台停止Cloudera Management Servicec、命令行停止cm服务systemctl stop cloudera-scm-agent...

数据湖技术之iceberg(十)Structured Streaming实时写入Iceberg

数据湖技术之iceberg(十)Structured Streaming实时写入Iceberg

目前Spark中Structured Streaming只支持实时向Iceberg中写入数据,不支持实时从Iceberg中读取数据,下面案例我们将使用Structured Streaming从Kafk...

ElasticSearch shard&replica机制梳理和创建index图解

ElasticSearch shard&replica机制梳理和创建index图解

1、shard&replica的机制梳理1个index包含多个shard。一个shard包含index的部分数据每个shard都是最小的工作单元,承载部分数据,lucene实例,完整的建立索引...

SQL Server优化入门系列(三)—— 性能计数器(performance counter)

SQL Server优化入门系列(三)—— 性能计数器(performance counter)

说明Performance Counter是windows系统中通用的性能分析工具。Windows OS和SQL Server暴露了很多Performance Counter,可用户分析整个系统的运行...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。