MongoDB的写入安全级别

太阳2年前技术文章695

一、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}})

相关文章

CDP实操--配置HBase的Ranger策略验证(三)

CDP实操--配置HBase的Ranger策略验证(三)

1.1HBase的Ranger策略验证确保HBase的配置页面里已经勾选了“Ranger Service”在terminal中,kerberos登录到hbase,用如下命令登录hbase shellc...

Doris 介绍及使用场景

Doris 介绍及使用场景

Doris 介绍                    Apache Doris 是一个基于 MPP 架构的高性能、实时的分析型数据库,以极速易用的特点被人们所熟知,仅需亚秒级响应时间即可返回海量数据...

数仓主流架构简介之二

数仓主流架构简介之二

一、流批一体数据批流一体是一种云计算架构模式,它结合了批处理和流处理的特点,以实现更高效、灵活和可扩展的数据处理能力。在这种模式下,数据可以同时进行批处理和流处理,以满足不同场景下的需求流批一体:是指...

HAProxy

HAProxy

1、HAProxy简介  HAProxy 是一款基于 TCP(第四层)和 HTTP(第七层)应用的代理软件,它也可作为负载均衡器,而且完全免费。 借助 HAProxy,可以快速并且可靠地提供基于 TC...

MongoDB的MMAPv1存储引擎

 在MongoDB 3.0之前,默认存储引擎为MMAPv1。从MongoDB 4.0开始,MMAPv1存储引擎开始被遗弃。MMAPv1是基于内存映射文件的原始存储引擎。一、journal1、将数据写入...

某系统被入侵挖矿排查案例

某系统被入侵挖矿排查案例

1、当时的出现的情况是:执行 top、w、netstat命令的时候,会出现卡住的情况,无法正常使用2、我们上传新的top命令之后,只是看到CPU使用率比较高,但是看不到占用CPU的异常进程3、我们通过...

发表评论    

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